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.


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")

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.