Этот крошечный скрипт удаляет все мелкие объекты во всех слоях. Это работает нормально, но размер файлов .shp не уменьшается. Пожалуйста, скажи мне почему...
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()
Вам следует проверить версию QGIS, в которой вы видите это.
Я знаю, что это поведение было подправлено в версии 2.14, поэтому после вызова deleteFeatures шейп-файл будет перепакован для удаления любых оставшихся строк-сирот.
Вы должны повторно протестировать версию 2.14 и посмотреть, есть ли улучшения.
источник