Önerilen bir sorgu ile kendi soruma cevap veriyorum.
select *, ABS(x_permit-x_station)+ABS(y_permit-y_station) as manhattan FROM (SELECT
longname AS NAME,
lines AS metadata,
T .slug,
ST_Distance (
T .geom,
ST_Transform (P .geometry, 3435)
) AS distance,
ST_X(ST_Transform(p.geometry, 3435)) as x_permit,
ST_Y(ST_Transform(p.geometry, 3435)) as y_permit,
ST_X(t.geom) as x_station,
ST_Y(t.geom) as y_station
FROM
permits P,
stations_cta T
WHERE
P .permit_ = '100533644'
ORDER BY
distance
LIMIT 2) as foo
Bu, bazı sütunlar kesildiğinde aşağıdakilere neden olur:
Kedzie-Ravenswood Brown Line 3738.52830193659 3796.29623843171
Addison-O'Hare Blue Line 4105.37381385087 5790.20002649655
İlk numaralı sütun ST_Distance PostGIS işlevi tarafından hesaplanan mesafedir (feet cinsinden, çünkü EPSG 3435 kullanıyorum) ve ikinci numaralı sütun Manhattan uzaklık formülünün sonucudur.
İkinci sonucu, Addison Blue Line CTA istasyonu ile 3226 W Belle Plaine Ave'deki binada (sorguda '100533644' olarak belirtildi) arasındaki Google Haritalar'dan yürüme mesafesini elde ederek nokta kontrol ettim. Google Haritalar 1,7 mil yürüyüş rotası çıkardı. Aradaki fark benim amacım için kabul edilebilir.