- QGIS Python Programming Cookbook
- Joel Lawhead
- 293字
- 2021-07-23 19:48:54
Filtering a layer by attributes
In addition to the spatial queries outlined in the previous recipe, we can also subset a layer by its attributes. This type of query resembles a more traditional relational database query and in fact uses SQL statements. In this recipe, we will filter a point shapefile-based layer by an attribute.
Getting ready
We'll use the same New York City Museums layer used in the previous recipes in this chapter. You can download the layer from https://geospatialpython.googlecode.com/svn/NYC_MUSEUMS_GEO.zip.
Unzip that file and place the shapefile's contents in a directory named nyc
within your qgis_data
directory, within your root or home directory.
How to do it...
In this recipe, we'll filter the layer by an attribute, select the filtered features, and zoom to them, as follows:
- First, we load the point layer:
lyrPts = QgsVectorLayer("/qgis_data/nyc/NYC_MUSEUMS_GEO.shp", "Museums", "ogr")
- Next, we add the layer to the map in order to visualize the points:
QgsMapLayerRegistry.instance().addMapLayers([lyrPts])
- Now, we filter the point layer to points with attributes that match a specific zip code:
selection = lyrPts.getFeatures(QgsFeatureRequest().setFilterExpression(u'"ZIP" = 10002'))
- Then, we use a list comprehension to create a list of feature IDs that are fed to the feature selection method:
lyrPts.setSelectedFeatures([s.id() for s in selection])
- Finally, we zoom to the selection:
iface.mapCanvas().zoomToSelected()
Verify that the point layer has three selected features, shown in yellow.
How it works...
This recipe takes advantage of QGIS filter expressions, highlighted in step 3. These filter expressions are a subset of SQL. The QgsFeatureRequest
handles the query expression as an optional argument to return an iterator with just the features you want. These queries also allow some basic geometry manipulation. This recipe also introduces the mapCanvas().zoomToSelected()
method, which is a convenient way to set the map's extent to the features of interest.
- 新一代通用視頻編碼H.266/VVC:原理、標準與實現
- Developing Mobile Web ArcGIS Applications
- oreilly精品圖書:軟件開發者路線圖叢書(共8冊)
- Linux命令行與shell腳本編程大全(第4版)
- Java網絡編程核心技術詳解(視頻微課版)
- Node Cookbook(Second Edition)
- 輕松上手2D游戲開發:Unity入門
- 運維前線:一線運維專家的運維方法、技巧與實踐
- Kubernetes進階實戰
- R語言數據可視化:科技圖表繪制
- Oracle實用教程
- Distributed Computing in Java 9
- Android應用開發實戰(第2版)
- Android Sensor Programming By Example
- 計算語言學導論