Answers:
按着这些次序:
获取图层参考:
cLayer = iface.mapCanvas().currentLayer()
从表达式获取featureIterator:
expr = QgsExpression( "\"ogc_fid\"=482" )
it = cLayer.getFeatures( QgsFeatureRequest( expr ) )
根据从2中获得的结果来构建功能部件ID列表:
ids = [i.id() for i in it]
选择具有在3.中获得的ID的功能:
cLayer.setSelectedFeatures( ids )
注意:如果要使用字符串值设置表达式,则需要以这种方式在该值上添加引号:
expr = QgsExpression( " \"name\" = 'my string' " )
如果您的字符串值来自变量,则可以执行以下操作:
myVariable = 'my string'
expr = QgsExpression( " \"name\" = '{}' ".format(myVariable) )
"\"ogc_fid\"=482 AND \"name\"='hello world'"
。顺便说一句,您包含在注释中的链接实际上表明static属性BinaryOperatorText
在Python绑定中不可用,但是运算符确实适用于QgsExpression
,即使它们通过Python绑定使用也是如此。
expr = QgsExpression("\"police_ref\" = 'P0580996'")
。我已经尝试在搜索词中添加一个换行符(对于单引号),但这没有任何区别。有趣的是,如果我打开要查询的属性表,并在其中使用表达式生成器,那么如果我作为示例使用的Police_ref在第一行中,则它会做出选择,但不是这样
"\"ogc_fid\"=482 AND name=\"hello world\""
?在这里说这在python中不可用:qgis.org/api/…。也许您知道一种规避此限制的方法?