layer = iface.activeLayer()
# get unique values for 'severity' field
fni = layer.fieldNameIndex('severity')
unique_vals = layer.dataProvider().uniqueValues(fni)
# define categories to use in symbology
categories = []
for val in unique_vals:
# initialise the default symbol for this geometry type
symbol = QgsSymbolV2.defaultSymbol(layer.geometryType())
# configure a symbol layer
layer_style = {}
layer_style['color'] = '%d, %d, %d' % (randrange(0,256),randrange(0,256),randrange(0,256))
layer_style['outline'] = '#000000'
symbol_layer = QgsSimpleFillSymbolLayerV2.create(layer_style)
# replace default symbol layer with the configured one
if symbol_layer is not None:
symbol.changeSymbolLayer(0, symbol_layer)
else:
print "success"
# create renderer object
category = QgsRendererCategoryV2(val, symbol, str(val))
# entry for the list of category items
categories.append(category)
# create renderer object
renderer = QgsCategorizedSymbolRendererV2('severity', categories)
# assign the created renderer to the layer
if renderer is not None:
layer.setRendererV2(renderer)
layer.triggerRepaint()
I have used this post, and copied the code above in to the python console. It appears to work fine, as I end up with the correct number of categories, i.e. 1 for every unique value in my chosen attribute, however after categories.append(category)
it prints out False
for every iteration of the loop. End result is fine though, so would anyone be able to explain why it's printing out False
?
I thought it might have been if symbol_layer is not None:
etc. but I added an else: print "success"
and it's not doing that so doesn't look like that's the issue. Like I said, it does work but I'm curious
perhaps worth mentioning the layer I'm using is from a postgres database