Ini seharusnya merupakan prekursor yang jelas (yang tidak saya tanyakan) untuk pertanyaan saya yang lain: Bagaimana cara membuat diagram laba-laba (garis hub) di PostGIS?
Jika saya tidak tahu hubungan antara titik di lapisan A (toko) dan titik di lapisan B (pelanggan), saya biasanya ingin mengatakan "Pelanggan 1 dilayani oleh toko terdekat." Sementara saya menyadari fakta ini mungkin tidak benar, itu bisa menjadi pengganti yang layak.
Menggunakan PostGIS, apa cara paling efisien untuk menetapkan ID titik terdekat di lapisan A (toko) ke setiap titik di lapisan B (pelanggan). Output yang saya cari adalah sesuatu seperti di bawah ini.
Customer | Store
1 | A
2 | A
3 | B
4 | C
sumber
Sepertinya jika Anda memiliki lebih banyak pelanggan daripada toko, maka mungkin akan lebih efisien untuk membuat lapisan poligon voronoi untuk toko, lalu melakukan penggabungan spasial pelanggan terhadap poligon toko.
sumber
Diskusi tentang beberapa solusi tetangga terdekat dasar dapat ditemukan di sini: http://www.bostongis.com/?content_name=postgis_nearest_neighbor#120
/ Nicklas
sumber
Dari http://www.bostongis.com/?content_name=postgis_nearest_neighbor :
Ini akan menemukan jarak minimum hingga 300 unit. Jadi, Anda harus terlebih dahulu memeriksa data Anda dan mencari tahu seberapa besar jarak minimum Anda akan dapatkan.
sumber
Anda harus menemukan pasangan terpendek di kotak pencarian, dan jika kotak itu tidak ada di dalamnya, perluas. Itu tidak cantik tapi berhasil. Ada contoh kode PL / PgSQL di sini http://trac.osgeo.org/postgis/wiki/UsersWikiNearest
sumber
Terima kasih atas masukan semua orang. Saya akhirnya pergi dengan kombinasi saran eprand dan underdark. Kode terakhir yang saya gunakan adalah:
Saya kemudian membuat diagram voronoi pada lapisan toko untuk mengkonfirmasi hasil yang bekerja dengan benar, yang tentu saja mereka lakukan. Terima kasih atas kerja kerasnya semua!
sumber