답변:
레이어 참조를 가져옵니다.
layer = iface.activeLayer()
표현별로 기능을 선택하십시오.
layer.selectByExpression( "\"ogc_fid\"=482" )
이 단계를 따르세요:
레이어 참조를 가져옵니다.
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'"
. BTW, 의견에 포함 된 링크는 실제로 정적 속성 BinaryOperatorText
을 Python 바인딩에서 사용할 수 없지만 QgsExpression
Python 바인딩을 통해 사용하더라도 연산자는 작동합니다 .
expr = QgsExpression("\"police_ref\" = 'P0580996'")
. 검색어에 작은 따옴표를 구분 문자로 추가하려고 시도했지만 차이가 없습니다. 흥미롭게도, 내가 쿼리하는 속성 테이블을 열고 거기에 표현식 빌더를 사용하는 경우, 예제로 사용하는 police_ref가 첫 번째 행에 있지만 그렇지 않은 경우 선택합니다.
이것은 QGIS Python Console에서 나를 위해 일했습니다.
layer = qgis.utils.iface.activeLayer()
layer .selectByExpression(" \"ogc_fid\" = '{}' ".format(482))
"\"ogc_fid\"=482 AND name=\"hello world\""
합니까? : 여기이 파이썬에서 사용할 수없는 것을 말한다 qgis.org/api/... . 이 제한을 우회하는 방법을 알고 있습니까?