Skrip kecil ini menghapus semua fitur kecil di semua lapisan. Ini berfungsi dengan baik tetapi ukuran file .shp tidak berkurang. Tolong beritahu saya mengapa ...
canvas = iface.mapCanvas()
expr = QgsExpression("$length<100")
for l in canvas.layers():
l.startEditing()
it = l.getFeatures(QgsFeatureRequest(expr))
for ft in it:
l.deleteFeature(ft.id())
l.commitChanges()
Anda harus memeriksa versi QGIS yang Anda lihat.
Saya tahu bahwa perilaku ini telah di-tweak dalam versi 2.14, sehingga setelah memanggil deleteFeatures, sebuah shapefile akan dibungkus ulang untuk menghapus baris yatim piatu yang tersisa.
Anda harus menguji ulang dengan versi 2.14 dan melihat apakah ada peningkatan.
sumber