Как отфильтровать слой QGIS от python?

9

Используя консоль Python QGIS 2.4, я пытаюсь отобразить только подмножество объектов слоя. Мне удалось получить функции как из слоя:

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

и из dataProvider:

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

(Я не уверен, что понимаю разницу).

Чего я хочу достичь сейчас, так это отображать только эти функции. Точно так же, как можно было бы использовать построитель запросов из графического интерфейса. Я не знаю, нужно ли управлять этим на уровне рендеринга (который будет рендерить некоторые функции, а не другие), или на уровне поставщика данных (который предоставит слою только представление о данных, содержащих только желаемое подмножество), или где-то посередине.

Жан-Филипп
источник
Ответ от @Nathan правильный. Мы также можем получить то, что установлено с помощью setSubsetString () или Query Builder, используя layer.subsetString (). Если он пуст, то возвращается пустая строка.
Зак

Ответы:

13

Метод, который вы ищете, называется setSubsetString

layer.setSubsetString("field=4")
Натан У
источник
Спасибо. Имя функции не setSubString, как вы пишете в ответ, а setSubsetString. В любом случае ссылка указывает на хорошую функцию. Я отредактировал ваш ответ для дальнейшего использования. Еще раз спасибо.
Жан-Филипп