파이썬에서 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 () 또는 Query Builder에서 설정 한 내용을 가져올 수도 있습니다. 비어 있으면 빈 문자열 ''이 반환됩니다.
Zac

답변:


13

찾고있는 메소드를 setSubsetString 이라고합니다.

layer.setSubsetString("field=4")

정말 고마워. 함수의 이름은 답을 쓸 때 setSubString이 아니라 setSubsetString입니다. 링크는 어쨌든 좋은 기능을 가리 킵니다. 나중에 참조 할 수 있도록 답변을 수정했습니다. 다시 감사합니다.
Jean-Philippe
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.