Estou acostumado a ver o formato do local como latitude seguido de longitude, mas usando bibliotecas, acredito que entendo o MySQL para armazená-lo como POINT(LNG LAT)
a ordem inversa. Minha biblioteca está errada ou esse é o formato real? Não consigo encontrar esse detalhe na documentação do MySQL.
9
Respostas:
Sintaxe do construtor
Procurando a referência da função espacial, você verá
Isso não está totalmente correto. Todas as implementações de GIS devem fazer
(x,y)
pelas coordenadas projetadas(long,lat)
. Mas, em sistemas de cordados geodídicos, há alguma discordância sobre o que fazer. MySQL (e SQL Server),(lat,long)
mas PostGIS mantém em(long,lat)
todos os lugares.Isso é abordado no padrão de implementação OpenGIS® de especificação geográfica para informações geográficas - Acesso simples a recursos - Parte 2: opção SQL ,
Observe que as palavras acima são encontradas literalmente em Informações geográficas - representação de texto conhecida dos sistemas de referência de coordenadas
Mesmo na especificação 1.1,
Dito isso, parece que o PostGIS e o Oracle e muitas bibliotecas de terceiros mantêm
(x,y,[z])
para todos os tipos de pontos. Isso viola as especificações do WKT, mas é uma convenção bastante comum. Por exemplo, o GeoJSON também faz isso,E, (lat, long), a ordem é explicitamente definida pelo EPSG para o SRSID 4326 ,.
Você também pode consultar o blog de Paul Ramsey (capitão PostGIS) sobre esse assunto, intitulado "Let's Call the Whole Thing Off"
Nicidades
Como uma nota especial, o MySQL traz duas novas funções para o mix,
ST_Longitude()
ST_Latitude()
Estas funções ficar de lado a partir de
ST_X()
, eST_Y()
e requer um SRS geográficas ou eles lançar uma exceção e erro.Armazenamento
Dos documentos
O armazenamento é definido aqui .
fonte
Uma maneira fácil de verificar o pedido está saindo da latitude fora do intervalo:
Dá ERRO 3732 (22S03): Um parâmetro da função st_srid contém uma geometria com latitude 160.000000, que está fora do intervalo. Ele deve estar dentro de [-90.000000, 90.000000];
Lembre-se de que a ordem pode mudar dependendo das funções que você usa:
fonte