Welche Einheit wird in ST_Distance () verwendet?

24

Ich frage mich, was die Einheit von dem Schwimmer ist, von dem er zurückgebracht wird ST_Distance.

In der Dokumentation heißt es:

... kartesischer Mindestabstand (basierend auf der räumlichen Referenz) zwischen zwei Geometrien in projizierten Einheiten.

Was sind diese geplanten Einheiten?

Die Geometrie wird in einem Feld gespeichert: geometry(Point,4326).

stUrb
quelle

Antworten:

36

Ich denke, dies ist im Laufe der Zeit die häufigste Frage auf der PostGIS-Liste :-)

Wenn sich Ihre Daten in der SRID 4326 befinden und Sie geometrytype verwenden, hat das Ergebnis keine Bedeutung. Es ist in Grad.

Um das Ergebnis in Metern zu erhalten, geben Sie einfach ein geographyund ST_Distanceberechnen stattdessen die Entfernung entlang des Großkreises und kehren in Metern zurück.

geometry(Point,4326)::geography

Eine andere Möglichkeit besteht darin, Ihre Daten auf Basis einer geeigneten Einheit auf eine lokale Projektion zu projizieren. Dann wird die Antwort in dieser Einheit sein.

Nicklas Avén
quelle
2
Hier ist ein Beispiel, um den Abstand zwischen zwei Zeilen in einer Tabelle zu ermitteln. 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

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

--Geometrie-Beispiel - Einheiten in planaren Grad 4326 sind WGS 84-Längen-Breiten-Einheiten = Grad

Wenn ST_Distancezwei Geometrien angegeben werden, wird davon ausgegangen, dass diese Geometrien tatsächlich in kartesischen (oder planaren) Koordinaten vorliegen. Daher sind die Einheiten die gleichen wie in den Koordinaten - normalerweise Meter oder Fuß.

Ihr Problem scheint zu sein, dass Ihr räumliches Bezugssystem 4326 tatsächlich (eckige) geografische Koordinaten verwendet - Grad Long-Lat -, sodass die Ergebnisse in (etwas bedeutungslosen) Grad vorliegen.

Martin F
quelle
1
Die Ergebnisse sind völlig bedeutungslos, nicht einmal etwas.
Paul Ramsey
@ PaulRamsey. Wäre das nicht das Gleiche wie bei einer PlateCaree-Projektion?
Martin F
Auf einem PC würden Sie lineare Einheiten zurückerhalten und könnten zumindest sagen "OK, ich weiß, dass diese Einheiten ernsthaften Verzerrungen unterliegen". Wenn man "Grad" zurückbekommt, könnte man versucht sein zu denken "Aha, ich habe hier einen Winkelabstand, muss nur mit 2R multiplizieren und ich werde einen linearen Abstand haben". Die Einheiten machen eine schlechte Messung möglicherweise noch schrecklicher irreführend. Und der PC ist so schrecklich, dass ich nicht weiß, warum er einen Projektionsnamen erhält ... keine Distanz, keine Richtung, keine Fläche ...
Paul Ramsey
PC behält Abstände entlang des Äquators und senkrecht zum Äquator bei. Abgesehen von den erforderlichen Radien und Radiusumrechnungen (zugegebenermaßen ein sehr großer Nachteil) weisen die Ergebnisse der Verwendung von ST_Distance für 4326-Geometrien dieselbe allgemeine Mischung von Nachteilen und Vorteilen auf, die bei der Verwendung von ST_Distance mit Projektionsgeometrien berücksichtigt werden müssen. Vielleicht sollte die bessere Debatte lauten (nicht "etwas" gegenüber "völlig" bedeutungslos ", sondern" Sollte es ST_Distance und ST_Area überhaupt gestattet sein, bei 4326 Geometrien Ergebnisse zurückzugeben? "
Martin F