Como filtrar a camada QGIS do python?

9

Usando o console python QGIS 2.4, estou tentando exibir apenas um subconjunto de recursos de uma camada. Eu consegui obter os recursos da camada:

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

e do dataProvider:

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

(Não tenho certeza de entender a diferença).

O que eu quero alcançar agora é exibir apenas esses recursos. Exatamente da mesma maneira que se faria usando o construtor de consultas da GUI. Não sei se isso precisa ser gerenciado no nível de renderização (que renderizaria alguns recursos e não outros) ou no nível do provedor de dados (que apenas forneceria à camada uma visualização dos dados que contêm apenas subconjunto desejado) ou em algum lugar intermediário.

Jean-Philippe
fonte
A resposta de @Nathan está certa. Também podemos obter o que é definido por setSubsetString () ou Query Builder usando layer.subsetString (). Se estiver vazio, uma string vazia '' será retornada.
Zac Wang

Respostas:

13

O método que você está procurando é chamado setSubsetString

layer.setSubsetString("field=4")
Nathan W
fonte
Muito obrigado. O nome da função não é setSubString enquanto você escreve sua resposta, mas setSubsetString. O link aponta para a boa função de qualquer maneira. Editei sua resposta para referência futura. Obrigado novamente.
19414 Jean-Philippe