Używam funkcji ST_Distance obliczyć odległość między dwoma geometrii (a dworzec kolejowy i budynek), ponieważ wiem, że wszystkie budynki i wszystkie stacje kolejowe znajdują się w Chicago, który ma doskonałą / pełna ulicy siatkę, chciałbym użyć Manhattan (lub taksówka) odległość .
Ogólny wzór na to jest różnica w X plus różnica w Y, więc Abs (X1-X2) + Abs (Y1-Y2).
Jakie zapytanie PostgreSQL by działało?
postgis
postgresql
distance
stevevance
źródło
źródło
Odpowiedzi:
Odpowiadam na moje pytanie proponowanym zapytaniem.
Powoduje to, że niektóre kolumny zostały wycięte:
Pierwsza ponumerowana kolumna to odległość (w stopach, ponieważ używam EPSG 3435) obliczona przez funkcję ST_Distance PostGIS, a druga ponumerowana kolumna jest wynikiem formuły odległości na Manhattanie.
Sprawdziłem punktowo drugi wynik, uzyskując odległość od Map Google między stacją CTA Addison Blue Line a budynkiem przy 3226 W Belle Plaine Ave (w zapytaniu oznaczonym jako „100533644”). Mapy Google wygenerowały trasę pieszą o długości 1,1 mili, podczas gdy wynik Postgres wynoszący 5790 stóp = 1,09 mili. Różnica jest do zaakceptowania dla moich celów.
źródło
Myślę, że znalazłem również nieco bardziej eleganckie rozwiązanie, które wykorzystuje trygonometrię i wbudowaną
ST_Azimuth
funkcję i zamknęło ją w ładną funkcję:źródło