comment obtenir lat et long de sdo_geometry dans oracle
comment puis-je obtenir lat et long à partir d'un point dans oracle?
Comme ceci:
MDSYS.SDO_GEOMETRY(2001,4326,NULL,
MDSYS.SDO_ELEM_INFO_ARRAY(1,1,1),
MDSYS.SDO_ORDINATE_ARRAY(51.702814,32.624736))
OriginalL'auteur Banafshe Alipour | 2015-06-18
Vous devez vous connecter pour publier un commentaire.
La notation de vous montrer, c'est pas le meilleur pour la représentation unique en 2D ou en 3D des points. La commune et la plus efficace façon de coder ces points est: est-ce
Tous les outils SIG, j'ai vu utiliser cette notation. L'un de vous montrer, c'est aussi valide qu'il utilise plus d'espace de stockage. Mais les deux notations sont entièrement fonctionnellement équivalent.
À l'aide de la notation compacte, prise en la personne de coordonnées est trivial. Par exemple, en considérant que US_CITIES contient des points dans la notation compacte ci-dessus:
Obtenir le même résultat à partir de la plus complexe de la matrice de base de la notation que vous utilisez est plus complexe. Vous pouvez utiliser le SDO_UTIL.GETVERTICES approche. Par exemple, en supposant que US_CITIES_A contient les mêmes points, mais dans la baie de notation:
Une autre approche que je trouve plus simple est de définir simplement un couple de fonctions simples pour extraire les valeurs du tableau:
et
Puis en utilisant les fonctions permet une syntaxe plus simple:
Pour être clair: ce générique est une exigence lors de l'utilisation d'objets dans Oracle. Vous avez également besoin d'un alias d'invoquer une quelconque méthode de l'objet. C'est dans SQL, pas OL/SQL: vous pouvez inspecter les objets dans une variable directement.
OriginalL'auteur Albert Godfrind
Vous pouvez utiliser sdo_util.getvertices. Exemple de la la documentation
Ce qui est étrange parce que l'utilisation de sdo_point_type est très bien pris en charge dans locator.
C'est étrange, et je ne dis pas qu'il n'y a pas une autre raison. Mais j'ai un Point de la géométrie dans une.ora_geometry. Si j'utilise sdo_util.getvertices(un.ora_geometry) comme ci-dessus, il fonctionne. Si je dis "sélectionnez ora_geometry.sdo_point à partir d'un", j'obtiens "ORA_GEOMETRY.SDO_POINT: ungültiger Bezeichner"
Cette syntaxe devrait fonctionner: sélectionnez t.la géométrie.sdo_point de la table t
Vous êtes correct. Si j'utilise sélectionnez ora_geometry.sdo_point de foo_table, je reçois identifiant invalide. Si j'utilise sélectionnez t.ora_geometry.sdo_point de foo_table t, il fonctionne. Pouvez-vous expliquer pourquoi l'alias de table est nécessaire?
OriginalL'auteur Rene
sélectionner un.id, t.x, t de.y de geometry_table une,table(sdo_util.getvertices(un.geometry_column)) t où un.id = 1;
OriginalL'auteur Parmanand
Cela ne fonctionnera pas si vous n'utilisez pas les alias.
L'utilisation d'alias forme nom des tables, par exemple: select * from tabla t
OriginalL'auteur carlosaar22