Qual é a unidade usada em ST_Distance ()?


24

Gostaria de saber qual é a unidade da bóia que está sendo devolvida ST_Distance.

Na documentação, diz:

... distância mínima cartesiana (com base na referência espacial) entre duas geometrias em unidades projetadas.

O que são essas unidades projetadas?

A geometria é armazenada em um campo: geometry(Point,4326).

Respostas:


36

Eu acho que essa é a pergunta mais frequente na lista PostGIS ao longo do tempo :-)

Se seus dados estiverem no SRID 4326 e você usar o geometrytipo, o resultado não dará nenhum significado. Está em graus.

Para obter o resultado em metros, basta converter para geographydigitar e ST_Distancecalcular a distância ao longo do grande círculo e retornar em metros.

geometry(Point,4326)::geography

Outra opção é projetar seus dados em alguma projeção local com base em uma unidade adequada. Então a resposta estará nessa unidade.


2
Aqui está um exemplo para encontrar a distância entre duas linhas em uma tabela SELECT ST_Distance (a.geom :: geography, b.geom :: geography) FROM pure_gis a, pure_gis b WHERE a.id = '1' AND b.id = '2';
Brian McCall

4

De http://postgis.net/docs/ST_Distance.html

- Exemplo de geometria - unidades em graus planares 4326 é WGS 84 unidade de latão longo = graus

E se ST_Distance for dada duas geometrias, ela assume que essas geometrias estão realmente em coordenadas cartesianas (ou planas). Assim, as unidades são as mesmas que as das coordenadas - geralmente metros ou pés.

Seu problema parece ser que seu sistema de referência espacial, 4326, na verdade usa coordenadas geográficas (angulares) - graus long lat - para que os resultados sejam em graus (um tanto sem sentido).


11
Os resultados são totalmente sem sentido, nem um pouco.
Paul Ramsey

@PaulRamsey. Elas não seriam as mesmas que eu obteria "medindo" distâncias em uma projeção PlateCaree?
Martin F

Em um PC, você recebe unidades lineares de volta e pode pelo menos dizer "OK, eu sei que essas unidades estão sujeitas a sérias distorções". Obtendo "graus" de volta, as pessoas podem ficar tentadas a pensar "aha, eu tenho uma distância angular aqui, só preciso multiplicar por 2R e terei uma distância linear". As unidades fazem uma medição ruim potencialmente ainda mais terrivelmente enganosa. E PC é tão terrível que eu não sei por que ele recebe um nome de projeção ... does't preservar a distância, não preserva direção, não preserva área ...
Paul Ramsey

O PC preserva distâncias ao longo do equador e perpendicular ao equador. Além dos radianos e conversões de raio exigidos (reconhecidamente, uma inconveniência muito grande), os resultados do uso de ST_Distance em 4326 geometrias terão a mesma mistura geral de desvantagens e benefícios que devem ser considerados ao usar ST_Distance com geometrias de projeção. Talvez o melhor debate deva ser (não "um tanto" versus "inteiramente" sem sentido, mas) "ST_Distance e ST_Area devem ter permissão para retornar resultados com 4326 geometrias?"
11133 Martin F em
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.