Mam proste pytanie dotyczące obliczania odległości w PostGIS.
Chciałbym uzyskać odległość między dwiema geometriami. Używam tego sid: 4269 w metrach, co teraz robię, to: ST_Distance((a.geom,b.geom)) FROM ...
ale otrzymuję wynik w stopniach. Myślę, że powinienem pracować z geografią, ale jak mogę rzucić geom na geografię? Próbowałem z (a.geom :: geography), ale otrzymuję błąd.
Co mogę zrobić, aby uzyskać wynik w metrach?
Dziękuję Ci
postgis
coordinate-system
postgresql
distance
YassineGeoma
źródło
źródło
SELECT ST_Distance_Sphere(ST_GeomFromEWKT('SRID=4326;POINT(-72.1235 42.3521 4)'), ST_GeomFromEWKT('SRID=4326;POINT(-72.1260 42.45 15)'))
Jednostkami SRID 4269 ( NAD 83 ) nie są metry - jest to rzut geodezyjny , tzn. Współrzędne są stopniami (współrzędne geograficzne).
Odpowiedź pacofvf poda odległość w metrach, ale jeśli naprawdę masz określone współrzędne początkowe w metrach, to powinieneś użyć rzutowanego układu współrzędnych. Prawdopodobnie dla Ameryki Północnej potrzebujesz czegoś w rodzaju układu współrzędnych płaszczyzny stanu, który ma wiele różnych rzutów w zależności od regionu, który chcesz zmapować.
Podejrzewam jednak, że używasz tylko wartości lat / lon, więc prawdopodobnie ten drugi akapit nie jest istotny - po prostu użyj
ST_Distance_Sphere
funkcji jak wyżej.źródło