QGIS式エンジンは、QgsFeatureRequest.setFilterExpression( unicode )
メソッドを使用してこれを行うことができます(QGIS 2.2以降)
request = QgsFeatureRequest().setFilterExpression( u'"Counties" = \'Norwich\'' )
it = l.getFeatures( request )
QGIS 2.10以降では、このような方法でフィルタリングを行うと、他のタイプのフィルタリング(Python実装など)よりもパフォーマンスが向上する可能性さえあります。
基本的に、これは次の3つの条件が満たされている場合に適用されます。
postgisプロバイダーでレイヤーを使用しています(2.16)現時点では、postgisプロバイダーだけでなく、これを実装するものも多くあります(spatialite、ogr、oracle ...)。
- あなたの表現が過度に複雑ではありません(物事が好き
>
、=
、IN
、NOT NULL
...サポートされています)
- この機能を有効にしたのは、[設定]> [オプション]> [データソース]> [データソース処理]> [postgresサーバー側で式を実行]
- データベーステーブルの適切なインデックスを使用すると、パフォーマンス上の利点が最適になります。
QGIS 3.0では、簡単に行うことさえ可能です
features = l.getFeatures('"Counties" = \'Norwicth\'')