Je suis habitué à voir le format d'emplacement comme la latitude suivie de la longitude, mais en utilisant les bibliothèques, je crois que je comprends MySQL pour le stocker sous POINT(LNG LAT)
l'ordre inverse. Ma bibliothèque est-elle incorrecte ou s'agit-il du format réel? Je n'arrive pas à trouver ce détail dans la documentation MySQL.
9
Réponses:
Syntaxe du constructeur
En recherchant la référence de la fonction spatiale, vous verrez
Ce n'est pas tout à fait correct. Toutes les implémentations SIG doivent faire
(x,y)
pour les coordonnées projetées qui est(long,lat)
. Mais, sur les systèmes géodidiques coordonnés, il y a un certain désaccord sur ce qu'il faut faire. MySQL (et SQL Server) le font(lat,long)
mais PostGIS maintient(long,lat)
partout.Ceci est abordé dans la spécification OpenGIS® Implementation Standard for Geographic information - Simple feature access - Part 2: SQL option ,
Notez que les mots ci-dessus sont trouvés textuellement dans Information géographique - Représentation textuelle bien connue des systèmes de référence de coordonnées
Même aussi loin que la spécification 1.1,
Cela dit, il semble que PostGIS et Oracle et de nombreuses bibliothèques tierces maintiennent
(x,y,[z])
pour tous les types de points. C'est en violation des spécifications pour WKT, mais c'est une convention assez courante. Par exemple, GeoJSON le fait également,Et, (lat, long) commande est explicitement définie par EPSG pour SRSID 4326, .
Vous pouvez également envisager de consulter le blog de Paul Ramsey (Captain PostGIS) sur ce sujet, intitulé "Appelons la chose entière"
Nicities
Comme note spéciale, MySQL apporte deux nouvelles fonctions au mélange,
ST_Longitude()
ST_Latitude()
Ces fonctions tiennent à l' écart de
ST_X()
etST_Y()
et nécessitent un SRS géographique ou ils jettent une erreur et d' exception.Espace de rangement
À partir des documents
Le stockage est défini ici .
la source
Un moyen simple de vérifier l'ordre passe hors de la latitude de plage:
Donne ERREUR 3732 (22S03): Un paramètre de la fonction st_srid contient une géométrie avec une latitude 160.000000, qui est hors de portée. Il doit être compris entre [-90.000000, 90.000000];
Attention, l'ordre peut changer en fonction des fonctions que vous utilisez:
la source