Как отфильтровать слой 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. В любом случае ссылка указывает на хорошую функцию. Я отредактировал ваш ответ для дальнейшего использования. Еще раз спасибо.
Жан-Филипп
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.