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.