Estoy acostumbrado a ver el formato de ubicación como latitud seguido de longitud, pero usando bibliotecas, creo que entiendo MySQL para almacenarlo como POINT(LNG LAT)
, el orden inverso. ¿Mi biblioteca está equivocada o este es el formato real? Parece que no puedo encontrar este detalle en la documentación de MySQL.
9
Respuestas:
Sintaxis del constructor
Al buscar la referencia de la función espacial, verá
Esto no es del todo correcto. Todas las implementaciones de SIG deben hacerlo
(x,y)
para las coordenadas proyectadas, que es(long,lat)
. Pero, en los sistemas de cordinización geodídica, existe cierto desacuerdo sobre qué hacer. MySQL (y SQL Server) sí,(lat,long)
pero PostGIS se mantiene en(long,lat)
todas partes.Esto se refirió a la especificación de implementación OpenGIS® estándar para la información geográfica - Acceso Simple - Parte 2: opción de SQL ,
Tenga en cuenta que las palabras anteriores se encuentran textualmente en Información geográfica: representación de texto bien conocida de sistemas de referencia de coordenadas
Incluso desde la especificación 1.1,
Dicho esto, parece que PostGIS y Oracle y muchas bibliotecas de terceros mantienen
(x,y,[z])
todo tipo de puntos. Esto viola las especificaciones de WKT, pero es una convención bastante común. Por ejemplo, GeoJSON también hace esto,Y, (latitud, longitud) de pedido se define explícitamente por EPSG para SRSID 4326, .
También puede considerar visitar el blog de Paul Ramsey (Capitán PostGIS) sobre este tema titulado "Vamos a dejar todo"
Nicities
Como nota especial, MySQL trae dos nuevas funciones a la mezcla,
ST_Longitude()
ST_Latitude()
Estas funciones se destacan, aparte de
ST_X()
yST_Y()
y requieren un SRS geográficas o que lanzan una excepción y error.Almacenamiento
De los documentos
El almacenamiento se define aquí .
fuente
Una manera fácil de verificar el pedido es pasar la latitud fuera del rango:
Da ERROR 3732 (22S03): un parámetro de la función st_srid contiene una geometría con latitud 160.000000, que está fuera de rango. Debe estar dentro de [-90.000000, 90.000000];
Tenga en cuenta que el orden puede cambiar según las funciones que utilice:
fuente