Jaka jednostka jest używana w ST_Distance ()?

24

Zastanawiam się, z jakiej jednostki pochodzi pływak ST_Distance.

W dokumentacji napisano:

... minimalna odległość kartezjańska (na podstawie odniesienia przestrzennego) między dwiema geometriami w rzutowanych jednostkach.

Jakie są te przewidywane jednostki?

Geometria jest przechowywany w polu: geometry(Point,4326).

StUrb
źródło

Odpowiedzi:

36

Myślę, że z czasem jest to najczęściej zadawane pytanie na liście PostGIS :-)

Jeśli twoje dane są w SRID 4326 i użyjesz geometrytypu, wynik nie będzie miał żadnego znaczenia. Jest w stopniach.

Aby uzyskać wynik w metrach wystarczy rzucić na geographymaszynę i ST_Distanceobliczyć zamiast tego odległość wzdłuż wielkiego koła i powrócić w metrach.

geometry(Point,4326)::geography

Inną opcją jest rzutowanie danych na projekcję lokalną w oparciu o odpowiednią jednostkę. Wtedy odpowiedź będzie w tej jednostce.

Nicklas Avén
źródło
2
Oto przykład znalezienia odległości między dwoma rzędami w tabeli WYBIERZ ST_Distance (a.geom :: geography, b.geom :: geography) FROM pure_gis a, pure_gis b GDZIE a.id = '1' AND b.id = „2”;
Brian McCall
4

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

- Przykład geometrii - jednostki w stopniach płaskich 4326 to WGS 84 długa jednostka łacińska = stopnie

Jeśli ST_Distancepodano dwie geometrie, zakłada się, że te geometrie są rzeczywiście we współrzędnych kartezjańskich (lub płaskich). Zatem jednostki są takie same jak we współrzędnych - zwykle metry lub stopy.

Twoim problemem wydaje się być to, że twój system odniesienia przestrzennego, 4326, faktycznie używa (kątowych) współrzędnych geograficznych - stopni long-lat - więc wyniki są w (nieco bez znaczenia) stopniach.

Martin F.
źródło
1
Wyniki są całkowicie bez znaczenia, nawet w pewnym stopniu.
Paul Ramsey,
@PaulRamsey. Czy nie byłyby takie same, jak to, co dostałbym „mierzenie” odległości na projekcji PlateCaree?
Martin F
Na komputerze można odzyskać jednostki liniowe i powiedzieć przynajmniej „OK, wiem, że te jednostki ulegają poważnym zniekształceniom”. Po odzyskaniu „stopni” ludzie mogą ulec pokusie, aby pomyśleć „aha, mam tutaj odległość kątową, wystarczy pomnożyć przez 2R, a ja będę miał odległość liniową”. Jednostki dokonują złych pomiarów, potencjalnie jeszcze bardziej wprowadzających w błąd. A komputer jest tak okropny, że nie wiem, dlaczego otrzymał nazwę projekcji ... nie zachowuje odległości, nie zachowuje kierunku, nie chroni obszaru ...
Paul Ramsey
PC zachowuje odległości wzdłuż równika i prostopadle do równika. Oprócz wymaganych konwersji radianów i promieni (co jest bardzo poważną niedogodnością), wyniki zastosowania ST_Distance na geometriach 4326 będą miały tę samą ogólną mieszankę wad i korzyści, które należy wziąć pod uwagę przy stosowaniu ST_Distance z geometriami projekcji. Może lepsza debata powinna być (nie „nieco” kontra „całkowicie” bez znaczenia, ale) „Czy ST_Distance i ST_Area powinny mieć możliwość zwracania wyników przy 4326 geometriach?”
Martin F