Saya menggunakan fungsi ST_Distance untuk menghitung jarak antara dua geometri (stasiun kereta api dan gedung) Karena saya tahu bahwa semua bangunan dan semua stasiun kereta api berada di Chicago, yang memiliki jaringan jalan yang sangat baik / lengkap, saya ingin menggunakan Manhattan (atau taksi) jarak .
Rumus generik untuk ini adalah perbedaan dalam X ditambah perbedaan dalam Y, jadi Abs (X1-X2) + Abs (Y1-Y2).
Query PostgreSQL apa yang membuat ini bekerja?
postgis
postgresql
distance
stevevance
sumber
sumber
Jawaban:
Saya menjawab pertanyaan saya sendiri dengan permintaan yang diajukan.
Ini menghasilkan yang berikut dengan beberapa kolom terpotong:
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.
sumber
Saya pikir saya juga menemukan solusi yang sedikit lebih elegan yang menggunakan trigonometri dan
ST_Azimuth
fungsi bawaan dan merangkumnya menjadi fungsi yang bagus:sumber