Saya mencari cara untuk membuat diagram voronoi berdasarkan segmen garis, bukan titik. Lihat contoh di bawah ini (diambil dari presentasi ini ).
Idealnya saya ingin sesuatu yang saya bisa skrip dari Python, tetapi solusi menggunakan ArcGIS atau serupa juga akan diterima.
Satu-satunya perpustakaan untuk melakukan ini yang saya temukan sejauh ini adalah openvoronoi , yang terlihat menjanjikan. Apakah ada yang lain?
line
voronoi-thiessen
Snorfalorpagus
sumber
sumber
Jawaban:
Kami (tim universitas) merancang implementasi untuk ini menggunakan ArcGIS 10.0 addin dan ArcObjects. Aplikasi ini sepenuhnya gratis. Implementasi menggunakan metodologi raster yang mengambil titik input, garis atau poligon untuk membuat diagram Voronoi biasa atau berlipat ganda (atau kombinasi dari yang di atas, yaitu Anda dapat menggunakan salah satu dari setiap jenis bentuk, membuat satu diagram set dari hingga tiga kelas fitur yang berbeda). Ini masih dalam pengembangan tetapi harus cukup stabil, terutama jika Anda hanya ingin membuat garis. Addin membutuhkan lisensi Analis Tata Ruang untuk beroperasi. Kode itu sendiri adalah open source, jadi silakan melakukannya sesuka Anda.
https://github.com/UNTGeography/VoronoiDiagramsGIS
Ia menggunakan metode yang sama seperti "Alokasi Euclidean" yang dijelaskan dalam jawaban @ radouxju dan menggunakan Flow Direction / Basin raster untuk membuat poligon vektor dari raster yang dihasilkan.
sumber
Voronoi awalnya dirancang untuk poin. Berikut adalah dua metode yang dapat saya bayangkan untuk masalah Anda (mengutip alat-alat ArcGIS, tetapi mungkin memungkinkan dengan cantik):
1)
a) membuat titik di sepanjang garis (mis. memadatkan lalu menonjolkan simpul ke garis)
b) membuat poligon Thiessen
c) melarutkan poligon Thiessen berdasarkan garis yang berpotongan
2)
a) dengan analis spasial, hitung alokasi Euclidian ke garis
b) konversi setiap zona menjadi poligon
sumber
Untuk beberapa pelanggan, beberapa rekan kerja dan saya telah berusaha membuat 2 alat geoproses yang melakukan itu. Meskipun alat geoprocessing tidak tersedia untuk umum, python dan C # yang kami gunakan adalah:
Baik C # dan pembungkus python benar-benar bergantung pada C ++ Boost Voronoi API: http://www.boost.org/doc/libs/1_54_0/libs/polygon/doc/voronoi_main.htm
Perhatikan bahwa API menghabiskan banyak memori. Ini bukan masalah jika Anda menggunakan Geoprocessing untuk 64 bit, ArcGIS Pro, atau QGIS. Ini adalah batasan jika Anda menggunakan ArcGIS Desktop karena 32 bit. (Jaringan jalan terperinci dengan 40.000 baris atau lebih harus cukup untuk mencapai batas memori)
sumber
ET Geowizards (Plugin untuk Arc) memiliki alat untuk ini yang menerima Polylines (lihat tangkapan layar di bawah). Sayangnya Anda akan memerlukan produk berlisensi untuk menjalankan alat, tetapi saya pikir itu harus melakukan trik.
sumber
Ditambah satu cara lagi untuk menyelesaikan tugas Anda menggunakan PostgreSQL / PostGIS.
Jika garis pendek dan sederhana, jalankan skrip:
Lihat hasilnya.
Jika garisnya panjang, jalankan skrip:
Lihat hasilnya.
Jika perlu, pisahkan jumlah titik pada garis, dalam contoh saya ini adalah 10 poin.
Solusi asli.
Script ini disebut: ST_VoronoiDiagramsFromLines.
sumber