Lagi

Hapus pulau dan poligon yang dikelilingi sepenuhnya setelah poligonisasi dengan QGIS

Hapus pulau dan poligon yang dikelilingi sepenuhnya setelah poligonisasi dengan QGIS


Saya memiliki peta garis bangunan di kota. Saya dapat membuat poligonisasi bangunan di QGIS dengan benar dengan algoritma pemrosesan Polygonize. Semua lubang/pulau menjadi fitur seperti yang diharapkan. Sekarang saya perlu memilih dan menghapus semua fitur yang sepenuhnya dikelilingi oleh (satu atau lebih) fitur lainnya. Contoh yang ditunjukkan dengan warna merah pada gambar:
Ini bukan bagian dari bangunan, tetapi halaman dalam.


alternatifnya adalah menggunakan "vektor > alat geoproses > larut" (--Bubarkan semua-- dalam daftar bidang larut), lalu pilih poligon yang "di dalam" poligon terlarut menggunakan plugin "kueri spasial".


Anda dapat menggunakan misalnya skrip python ini untuk menyorot atau menghapus fitur yang sepenuhnya ada di dalam fitur lain.

layer = iface.activeLayer() #atau layer yang ingin Anda gunakan features_a = layer.getFeatures() features_b = [feat for feat in layer.getFeatures()] within_list = list() untuk feat_a di features_a: untuk feat_b di features_b: if feat_b.id() != feat_a.id(): if feat_b.geometry().within(feat_a.geometry()): within_list.append(feat_b.id())

Untuk menyorot fitur yang dapat Anda gunakan:

layer.setSelectedFeatures(dalam_daftar)

Dan untuk menghapus fitur yang disorot gunakan:

caps = layer.dataProvider().capabilities() jika caps & QgsVectorDataProvider.DeleteFeatures: res = layer.dataProvider().deleteFeatures(within_list)

Sebagai hasil tes yang saya dapatkan misalnya:

Tetapi sebelum Anda menjalankan skrip ini, simpan file qgis Anda karena jika Anda ingin memproses file besar, skrip ini mungkin membuat qgis Anda crash.


Anda juga dapat menduplikasi layer dan kemudian membuat kueri spasial dengan "sentuhan" di antara mereka. Bekerja dengan data yang disiapkan.


Tonton videonya: GIS Tricks: Create Polygon, Clip and Difference