Ten mały, mały skrypt usuwa wszystkie małe funkcje na wszystkich warstwach. Działa to dobrze, ale rozmiar plików .shp nie jest zmniejszany. Proszę, powiedz mi dlaczego...
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()
Powinieneś sprawdzić wersję QGIS, w której ją widzisz.
Wiem, że to zachowanie zostało poprawione w wersji 2.14, dzięki czemu po wywołaniu metody deleteFeatures plik kształtu zostanie przepakowany w celu usunięcia wszelkich pozostałych wierszy porzuconych.
Powinieneś ponownie przetestować wersję 2.14 i sprawdzić, czy jest jakaś poprawa.
źródło