Saya memiliki lapisan penyangga (poligon hijau) yang ingin saya bagi menjadi dua poligon setiap kali melewati penghalang (garis biru). Saya telah mencoba menggunakan metode "splitGeometry", tetapi saya tidak bisa membuatnya bekerja. Kode saya sejauh ini adalah ini:
while ldbuffprovider.nextFeature(feat):
while barprovider.nextFeature(feat2):
if feat.geometry().intersects(feat2.geometry()):
intersection = feat.geometry().intersection(feat2.geometry())
result, newGeometries, topoTestPoints=feat.geometry().splitGeometry(intersection.asPolyline(),True)
Yang mengembalikan 1 untuk hasil (kesalahan) dan daftar kosong untuk newGeometries. Setiap bantuan sangat dihargai.
Jawaban:
Anda dapat menggunakan
reshapeGeometry
fungsiQgsGeometry
objek untuk ini, yang memotong poligon sepanjang persimpangan dengan garis.Berikut ini akan memotong poligon penyangga dengan garis, dan menambahkan fitur poligon terpecah ke lapisan memori (sintaksis QGIS 2.0):
sumber
Perkiraan yang baik dengan GDAL> = 1.10.0 dikompilasi dengan SQLite dan SpatiaLite terdiri dari membungkus lapisan Anda (mis. Poligon.shp dan line.shp ) dalam file OGR VRT (mis. Layers.vrt ):
untuk memiliki buffer yang sangat kecil (mis. 1 mikron) di sekitar line.shp mendapatkan layer * buffer_line *. Kemudian, kita bisa menerapkan perbedaan dan perbedaan simetris pada geometri ini menggunakan SpatiaLite:
Jelas, semua hal ini dapat dieksekusi dengan sempurna dari skrip Python:
Semoga ini membantu!
sumber
Jawaban Jake memiliki masalah topologi dengan poligon yang terpecah. Saya membuat solusi, semoga ini bisa membantu: https://gist.github.com/RamonLopezEscudero/844c1401f5339143da1b2b5cf7ff27bd
sumber