Learn how to set up scale-dependent layer visibility in QGIS using programming from this section as part of this preview chapter, Creating Dynamic Maps from QGIS Python Programming CookBook. With 140 short, reusable recipes to automate geospatial processes in QGIS, the QGIS Python Programming CookBook teaches readers how to use Python and QGIS to create and transform data, produce appealing GIS visualizations, and build complex map layouts.
Setting Scale-Based Visibility for a Layer
Sometimes a GIS layer only makes sense when displayed at a certain scale.For example a complex road network. PyQGIS supports scale-based visibility to programmatically set the scale range in which a layer is displayed. In this recipe, we’ll investigate scale dependent layers.
You will need the sample census tract shapefile available as a zip file here:
Extract the zipped layer to a directory named census in your qgis_data directory.
How to do it…
We will load the vector layer, toggle scale-based visibility, set the visibility range, and then add the layer to the map.
- First we load the layer:
lyr = QgsVectorLayer(“/Users/joellawhead/qgis_data/census/GIS_CensusTract_poly.shp”, “Census”, “ogr”)
- Next we toggle scale-based visibility:
- Then we set the minimum and maximum map scales at which the layer is visible:
- Now we add the layer to the map:
- Finally, manually zoom in and out of the map to ensure that the layer disappears and reappears at the proper scales.
How it works…
The map scale is a ratio of map units to physical map size expressed as a floating-point number.You must remember to toggle scale-dependent visibility so QGIS knows to check the range each time the map scale changes.