QGIS:Becoming a GIS Power User
上QQ阅读APP看书,第一时间看更新

Working with feature selection tools

Selecting features is one of the core functions of any GIS, and it is useful to know them before we venture into editing geometries and attributes. Depending on the use case, selection tools come in many different flavors. QGIS offers three different kinds of tools to select features using the mouse, an expression, or another layer.

Selecting features with the mouse

The first group of tools in the Attributes toolbar allows us to select features on the map using the mouse. The following screenshot shows the Select Feature(s) tool. We can select a single feature by clicking on it, or select multiple features by drawing a rectangle. The other tools can be used to select features by drawing different shapes (polygons, freehand areas, or circles) around the features. All features that intersect with the drawn shape are selected.

Selecting features with expressions

The second type of select tool is called Select by Expression, and it is also available in the Attribute toolbar. It selects features based on expressions that can contain references and functions that use feature attributes and/or geometry. The list of available functions in the center of the dialog is pretty long, but we can use the search box at the top of the list to filter it by name and find the function we are looking for faster. On the right-hand side of the window, we find the function help, which explains the functionality and how to use the function in an expression. The function list also shows the layer attribute fields, and by clicking on all unique or 10 samples, we can easily access their content. We can choose between creating a new selection or adding to or deleting from an existing selection. Additionally, we can choose to only select features from within an existing selection. Let's take a look at some example expressions that you can build on and use in your own work:

  • Using the lakes.shp file in our sample data, we can, for example, select lakes with an area greater than 1,000 square miles by using a simple "AREA_MI" > 1000.0 attribute query, as shown in the following screenshot. Alternatively, we can use geometry functions such as $area > (1000.0 * 27878400). Note that the lakes.shp CRS uses feet, and therefore we have to multiply by 27,878,400 to convert square feet to square miles.
  • We can also work with string functions, for example, to find lakes with long names (such as length("NAMES") > 12) or lakes with names that contain s or S (such as lower("NAMES") LIKE '%s%'); this function first converts the names to lowercase and then looks for any appearance of s.

Selecting features using spatial queries

The third type of tool is called Spatial Query and allows us to select features in one layer based on their location relative to features in a second layer. These tools can be accessed by going to Vector | Research Tools | Select by location and Vector | Spatial Query | Spatial Query. Enable it in Plugin Manager if you cannot find it in the Vector menu. In general, we want to use the Spatial Query plugin as it supports a variety of spatial operations such as Crosses, Equals, Intersects, Is disjoint, Overlaps, Touches, and Contains, depending on the layer geometry type.

Let's test the Spatial Query plugin using railroads.shp and pipelines.shp from the sample data. For example, we might want to find all railroad features that cross a pipeline; therefore, we select the railroads layer, the Crosses operation, and the pipelines layer. After we've clicked on Apply, the plugin presents us with the query results. There is a list of IDs of the result features on the right-hand side of the window, as you can see in the next screenshot. Below this list, we can check the Zoom to item box, and QGIS will zoom into the feature that belongs to the selected ID. Additionally, the plugin offers buttons for direct saving of all the resulting features to a new layer: