我有一个向量层,它有一个名为“type”的属性字段。我正在尝试删除“type”值不是“primary”的所有功能。这是我的小脚本,感谢here和here的回答:
from qgis.core import *
with edit(layer):
request = QgsFeatureRequest().setFilterExpression("\"type\" != 'primary'")
request.setSubsetOfAttributes([])
request.setFlags(QgsFeatureRequest.NoGeometry)
selection = layer.getFeatures(request)
layer.deleteFeatures([f.id() for f in selection])
然而,当我运行它时,什么也没有发生。我已经确定使用了正确的图层
>>>layer.id()
由于没有错误,我假设我的筛选器表达式格式不正确。可能是这样,还是我的脚本逻辑有问题?我正在QGIS 3.4.12上运行Python 3.7.0
您的筛选器表达式似乎工作正常。但对deleteFeatures()的调用仅对通过调用startEditing()启用编辑的图层有效。在进行commitChanges()调用之前,使用此方法对功能所做的更改不会提交给基础数据提供程序。可以通过调用rollBack()放弃任何未提交的更改
请参阅文档 Oficial Documentation
相关问题 更多 >
编程相关推荐