If you have a vector shapefile layer that has an attribute which is a categorized group for other attributes and you want to get the count/number of items in each group, then here is a quick script to get you the result.
A typical scenario where you will find this useful is when you count counties in a state or similar scenario. Assuming we have a vector layer with a category attribute column named "group" as seen below, then we can count the occurrences of each group using the following script.
from collections import Counter
# Get active vector layer...
layer = iface.activeLayer()
# Lets count the number of features...
print(layer.featureCount())
# Lets check the field names...
for f in layer.fields():
print(f.name())
# Get attributes into a list...
attr_list = []
for feature in layer.getFeatures():
attr_list.append(feature['group'])
# Count item occurrences using 'collections.Counter'
attr_count = dict( Counter(attr_list) )
print(attr_count)
The primary logic here is in counting item occurrences within a list using collections.Counter module as seen below.
That is it!
No comments:
Post a Comment