如何从python过滤QGIS层?


9

使用QGIS 2.4 python控制台,我试图仅显示图层功能的子集。我已经设法从图层中获得了两个功能:

featuresIterator = layer.getFeatures(QgsFeatureRequest().setFilterExpression ( u'"field"=4'))

并从dataProvider中:

featuresIterator = layer.dataProvider().getFeatures(QgsFeatureRequest().setFilterExpression ( u'"field"=4'))

(我不确定是否会有所区别)。

我现在想要实现的是仅显示这些功能。使用与GUI中的查询生成器完全相同的方法。我不知道是否必须在渲染级别(将渲染某些功能而不是其他功能)或数据提供者的级别(仅向图层提供仅包含数据的视图的视图)进行管理所需的子集),或介于两者之间的某处。


@Nathan的答案是正确的。我们还可以使用layer.subsetString()获取setSubsetString()或查询生成器设置的内容。如果为空,则返回空字符串“”。
扎克

Answers:


13

您正在寻找的方法称为setSubsetString

layer.setSubsetString("field=4")

非常感谢。在您在答案中编写函数时,函数的名称不是setSubString,而是setSubsetString。该链接仍然指向良好的功能。我已经编辑了您的答案,以备将来参考。再次感谢。
让-菲利普
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.