Qual è l'unità utilizzata in ST_Distance ()?


24

Mi chiedo da che parte dell'unità il galleggiante viene restituito ST_Distance.

Nella documentazione si dice:

... distanza minima cartesiana (basata sul riferimento spaziale) tra due geometrie in unità proiettate.

Cosa sono queste unità proiettate?

La geometria è memorizzato in un campo: geometry(Point,4326).

Risposte:


36

Penso che questa sia la domanda più frequente sulla lista PostGIS nel tempo :-)

Se i tuoi dati sono in SRID 4326 e usi il geometrytipo, il risultato non darà alcun significato. È in gradi.

Per ottenere il risultato in metri basta lanciare per geographydigitare e ST_Distancecalcolerà invece la distanza lungo il grande cerchio e tornerà in metri.

geometry(Point,4326)::geography

Un'altra opzione è proiettare i tuoi dati su alcune proiezioni locali basate su un'unità adatta. Quindi la risposta sarà in quell'unità.


2
Ecco un esempio per trovare la distanza tra due file in una tabella 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

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

- Esempio di geometria: le unità in gradi planari 4326 sono unità lat lunghe WGS 84 = gradi

Se ST_Distancevengono date due geometrie, si presume che tali geometrie siano realmente in coordinate cartesiane (o planari). Pertanto, le unità sono uguali a quelle nelle coordinate - di solito metri o piedi.

Il tuo problema sembra essere che il tuo sistema di riferimento spaziale, 4326, utilizzi effettivamente coordinate geografiche (angolari) - gradi lungo-lat - quindi i risultati sono in gradi (piuttosto insignificanti).


1
I risultati sono del tutto privi di significato, nemmeno un po '.
Paul Ramsey,

@PaulRamsey. Non sarebbero gli stessi di ciò che otterrei "misurando" le distanze su una proiezione PlateCaree?
Martin F,

Su un PC, riavresti indietro le unità lineari e potresti almeno dire "OK, so che queste unità sono soggette a gravi distorsioni". Ottenendo "gradi" indietro, le persone potrebbero essere tentate di pensare "aha, qui ho una distanza angolare, devo solo moltiplicare per 2R e avrò una distanza lineare". Le unità effettuano una misurazione errata potenzialmente ancora più terribilmente fuorviante. E il PC è così terribile che non so perché abbia un nome di proiezione ... non conserva la distanza, non conserva la direzione, non conserva l'area ...
Paul Ramsey,

PC mantiene le distanze lungo l'equatore e perpendicolare all'equatore. A parte i radianti richiesti e le conversioni di raggio (è vero, un grave inconveniente), i risultati dell'uso di ST_Distance su 4326 geometrie avranno la stessa miscela generale di svantaggi e benefici che devono essere considerati quando si usa ST_Distance con geometrie di proiezione. Forse il dibattito migliore dovrebbe essere (non "in qualche modo" contro "del tutto" insignificante ma) "Dovrebbe anche essere permesso a ST_Distance e ST_Area di restituire risultati dati 4326 geometrie?"
Martin F,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.