Este pequeño script elimina todas las características pequeñas en todas las capas. Esto funciona bien, pero el tamaño de los archivos .shp no se reduce. Por favor dime porque...
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()
Debe verificar la versión de QGIS en la que está viendo esto.
Sé que este comportamiento se modificó en la versión 2.14, por lo que después de llamar a deleteFeatures se volverá a empaquetar un shapefile para eliminar las filas huérfanas sobrantes.
Debería volver a probar con la versión 2.14 y ver si hay alguna mejora.
fuente