(sunting 2019) ST_VoronoiPolygons tersedia sejak PostGIS v2.3 !
Dengan PostGIS 2.1+ kita dapat menggunakan ST_DelaunayTriangles () untuk menghasilkan triangulasi Delaunay , yaitu grafik ganda dari diagram Voronoi -nya , dan, secara teori, mereka memiliki konversi yang tepat dan dapat dibalik.
Apakah ada skrip SQL- aman yang aman dengan algoritma yang dioptimalkan ada untuk konversi PostGIS2 Delaunay-to-Voronoi ini ?
postgis
sql
voronoi-thiessen
Peter Krauss
sumber
sumber
ST_DelaunayTriangles
di Linux Debian Stable .Jawaban:
Kueri berikut tampaknya melakukan serangkaian voronoi poligon yang wajar mulai dari Delaunay Segitiga.
Saya bukan pengguna Postgres besar, jadi mungkin bisa ditingkatkan sedikit.
Ini menghasilkan set poligon berikut untuk titik sampel yang termasuk dalam kueri
Penjelasan Pertanyaan
Langkah 1
Buat Segitiga Delaunay dari geometri input
Langkah 2
Membusuk node segitiga dan membuat tepi dapat dibuat. Saya pikir seharusnya ada cara yang lebih baik untuk mendapatkan tepian, tetapi saya tidak menemukannya.
Langkah 3
Bangun lingkaran yang dibatasi untuk setiap segitiga dan temukan centroid
The
Edges
CTE output setiap tepi dan id (path) dari segitiga itu milik.Langkah 4
'Outer Join' the 'Edges' table untuk dirinya sendiri di mana ada tepi yang sama untuk segitiga yang berbeda (tepi interior).
Di mana ada tepi umum, buat garis di antara centroid masing-masing
Di mana ujung tidak bergabung (eksterior) gambar garis dari pusat massa melalui pusat tepi. Hanya lakukan ini jika pusat massa dari lingkaran berada di dalam himpunan segitiga.
Langkah 5
Dapatkan cembung cembung untuk garis yang ditarik sebagai garis. Menyatukan dan menggabungkan semua lini. Node set garis sehingga kita memiliki set topologi yang dapat dipoligonisasi.
sumber
ST_ConvexHull
danST_Centroid
sebagai gantinya "garis-garis tegak lurus" seperti dalam algoritma langsung yang disarankan oleh ref1 / Kenneth Sloa saya ... Mengapa bukan solusi langsung?ST_DelaunayTriangles
di Linux Debian Stable .