Pertanyaan saya cukup terkait dengan Split tumpang tindih yang tidak terjawab antara poligon menjadi set terpisah kecuali saya tidak menggunakan shapely
, saya menggunakan PostGIS 2.4 pada PostgreSQL 10.
Saya punya tabel berisi multi-satuan untuk unit administrasi. Geometri hanya mencakup area lahan. Tujuan saya adalah untuk memperpanjang jarak mereka ke air.
Untuk memperluas poligon saat ini ke dalam air, saya melakukan buffer diikuti dengan mengurangi semua geometri lain dalam tabel. Ini klip buffer mana geometri memiliki tetangga dan mempertahankan buffer di mana layer saat ini tidak memiliki apa-apa. Jadi, sesuatu seperti:
SELECT c1.name
, ST_Difference( ST_Buffer( ST_Union(c1.geom), 250 )
, (SELECT ST_Union(c2.geom)
FROM foo.county AS c2
WHERE c2.name <> c1.name)
)
FROM foo.county AS c1
GROUP BY c1.name;
Namun, ini tentu saja memberi saya buffer yang tumpang tindih di mana dua poligon bertemu satu sama lain di tepi air, serta melintasi selat yang sempit:
(Perhatikan bahwa sliver ungu kecil di sebelah kiri harus sepenuhnya ditetapkan ke poligon merah, karena tidak ada titik dalam geometri yang lebih dekat ke biru daripada merah karena semenanjung mirip-appendix.)
Di sinilah aku terjebak. Saya ingin memotong tumpang tindih (bagian ungu) menjadi dua poligon terpisah di sepanjang garis yang sama dengan poligon yang tidak dikonstruksikan, dan kemudian mengurangi irisan itu dari daerah buffer.
Saya tidak berpikir saya memiliki kasus tiga atau lebih buffer yang tumpang tindih. Saya akan menyeberangi jembatan itu jika dan ketika saya sampai di sana.
Baunya bagi saya seperti sesuatu yang mirip-tetapi-tidak-cukup-identik dengan menggunakan ST_VoronoiPolygons
tetapi di sekitar poligon, bukan titik.
Apakah ini ada - idealnya - sebagai fungsi PostGIS, sebagai fungsi geoprosesing QGIS atau mungkin di beberapa pustaka python?
ExteriorRing
dan Intersects
tetapi belum punya waktu untuk mengerjakannya selama liburan.