Bagaimana cara melakukan join spatial layer titik dan poligon di PostGIS?

13

Saya memiliki dataset titik yang mewakili rumah tangga yang ingin saya kaitkan dengan lapisan parcel (yaitu, tetapkan parcel_id-nya). Dengan ArcMap, saya secara spasial dapat menggabungkan poligon ke titik dan menentukan bahwa gabungan memiliki radius pencarian tertentu dan menggunakan poligon terdekat.

Saya ingin melakukan ini dengan postgres dan bertanya-tanya apa cara yang paling bijaksana untuk melakukan ini. Saya tidak dapat menggunakan ST_contains karena poin jatuh di jalan dan bukan pada paket yang sebenarnya. Sebagai ganti dari ST_contains, apakah ada fungsi lain yang memungkinkan untuk pemeriksaan kedekatan?

update households h set parcel_id = p.parcel_id 
from parcels p where ST_contains(p.the_geom, h.xy);
ako
sumber

Jawaban:

8

Untuk apa yang ingin Anda capai, saya pikir ST_DWithin akan berhasil. Dari dokumentasi situs PostGIS:

ST_DWithin - Mengembalikan nilai true jika geometri berada dalam jarak yang ditentukan satu sama lain. Untuk satuan geometri ada dalam referensi spasial dan Untuk satuan geografi adalah dalam meter dan pengukuran secara default menggunakan use_spheroid = true (ukur di sekitar spheroid), untuk pemeriksaan yang lebih cepat, use_spheroid = false untuk mengukur sepanjang bola.

RK
sumber
Ini mungkin bisa bekerja, tetapi triknya adalah menetapkan ambang pencarian yang tepat. Atur terlalu tinggi dan saya dapat lebih dari satu pertandingan, atur terlalu rendah dan saya tidak mendapatkannya. Atau atur tinggi dan buang catatan kecocokan ekstra.
ako