Saya telah melihat-lihat fungsi "API" PostGIS, dan saya perhatikan bahwa kebanyakan dari mereka mengambil dua elemen untuk membandingkan. Misalnya, fungsi ST_Distance mengambil dua elemen geometri / geografi untuk menemukan jarak.
Tidak ada fungsi untuk melakukan sesuatu seperti: "Diberi geometri G, beri saya geometri GClosest terdekat di Tabel T di mana G.id <> GClosest.id"
Saya menyadari bahwa saya bisa menulis fungsi PL / PgSQL untuk beralih di atas tabel dan memanggil ST_Distance pada setiap elemen, tapi saya berharap ada solusi yang lebih baik, lebih efisien,.
postgis
postgresql
Jmoney38
sumber
sumber
Jawaban:
Pertanyaan Anda juga dapat dijawab oleh satu (meskipun kompleks) permintaan seperti berikut ini yang mengembalikan seluruh catatan dan jarak ke geometri referensi. Harap dicatat bahwa jika lebih dari satu catatan cocok dengan jarak min, semuanya dikembalikan.
Saya telah menguji permintaan ini pada tabel alamat dan berhasil. Dalam kueri di atas saya mencari titik terdekat dengan id = 3.
sumber
George MacKerron telah menulis fungsi Tetangga Terdekat sederhana yang menurut saya cukup berguna. Fungsi ini mengembalikan ID tetangga terdekat ke fitur yang diberikan:
Contoh penggunaan:
... memilih simpul terdekat di tabel nw_node untuk setiap entri di my_point_table.
Ada juga fungsi yang lebih umum di situs GIS Boston .
sumber