Saya menjawab pertanyaan saya sendiri dengan permintaan yang diajukan.
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
Ini menghasilkan yang berikut dengan beberapa kolom terpotong:
Kedzie-Ravenswood Brown Line 3738.52830193659 3796.29623843171
Addison-O'Hare Blue Line 4105.37381385087 5790.20002649655
Kolom bernomor pertama adalah jarak (dalam kaki, karena saya menggunakan EPSG 3435) yang dihitung oleh fungsi ST_Distance PostGIS, dan kolom bernomor kedua adalah hasil dari rumus jarak Manhattan.
Saya memeriksa hasil kedua, mendapatkan jarak berjalan kaki dari Google Maps antara stasiun CTA Addison Blue Line dan gedung di 3226 W Belle Plaine Ave (dicatat sebagai '100533644' dalam kueri). Google Maps menghasilkan rute 1,1 mil berjalan kaki sementara Postgres menghasilkan 5.790 kaki = 1.09 mil. Perbedaannya dapat diterima untuk tujuan saya.