¿Cómo filtrar la capa QGIS de Python?

9

Usando la consola de Python QGIS 2.4, estoy tratando de mostrar solo un subconjunto de características de una capa. He logrado obtener las características tanto de la capa:

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

y del dataProvider:

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

(No estoy seguro de entender la diferencia).

Lo que quiero lograr ahora es mostrar solo estas características. Exactamente de la misma manera que lo haría uno usando el generador de consultas desde la GUI No sé si esto debe gestionarse a nivel de representación (que representaría algunas características y no otras), o al nivel del proveedor de datos (que solo proporcionaría a la capa una vista de los datos que solo contienen el subconjunto deseado), o en algún punto intermedio.

Jean-Philippe
fuente
La respuesta de @Nathan es correcta. También podemos obtener lo que establece setSubsetString () o Query Builder usando layer.subsetString (). Si está vacío, se devuelve una cadena vacía ''.
Zac Wang

Respuestas:

13

El método que está buscando se llama setSubsetString

layer.setSubsetString("field=4")
Nathan W
fuente
Muchas gracias. El nombre de la función no es setSubString mientras lo escribe en su respuesta, sino setSubsetString. El enlace apunta a la buena función de todos modos. He editado su respuesta para referencia futura. Gracias de nuevo.
Jean-Philippe