A categorized vector layer symbol allows you to create distinct categories with colors and labels for unique features. This approach is typically used for datasets with a limited number of unique types of features. In this recipe, we'll categorize a vector layer into three different categories.
For this recipe, we'll use a land use shapefile, which you can download from https://geospatialpython.googlecode.com/svn/landuse_shp.zip.
Extract it to a directory named hancock
in your qgis_data
directory.
We will load the vector layer, create three categories of land use, and render them as categorized symbols. To do this, we need to perform the following steps:
QColor
object for our category colors:from PyQt4.QtGui import QColor
lyr = QgsVectorLayer("Users/joellawhead/qgis_data/hancock/landuse.shp", "Land Use", "ogr")
landuse = { "0":("yellow", "Developed"), "1":("darkcyan", "Water"), "2":("green", "Land")}
categories = [] for terrain, (color, label) in landuse.items(): sym = QgsSymbolV2.defaultSymbol(lyr.geometryType()) sym.setColor(QColor(color)) category = QgsRendererCategoryV2(terrain, sym, label) categories.append(category)
field = "DN"
renderer = QgsCategorizedSymbolRendererV2(field, categories)
lyr.setRendererV2(renderer)
QgsMapLayerRegistry.instance().addMapLayer(lyr)
There are only slight differences in the configurations of the various types of renderers in QGIS. Setting them up by first defining the properties of the renderer using native Python objects makes your code easier to read and ultimately manage. The following map image illustrates the categorized symbol in this recipe: