QGIS/python/plugins/processing/algs/qgis/scripts/Frequency_analysis.py

36 lines
909 B
Python
Raw Normal View History

2014-10-03 10:41:44 +02:00
##Table=group
##input=vector
##fields=string
##output=output table
from qgis.core import *
from PyQt4.QtCore import *
2014-10-03 10:41:44 +02:00
from processing.core.TableWriter import TableWriter
from collections import defaultdict
2014-10-03 10:41:44 +02:00
layer = processing.getObject(input)
inputFields = layer.pendingFields()
fieldIdxs = []
2014-10-03 10:41:44 +02:00
fields = fields.split(',')
2014-10-19 15:52:38 +02:00
for f in fields:
idx = inputFields.indexFromName(f)
if idx == -1:
raise GeoAlgorithmExecutionException('Field not found:' + f)
fieldIdxs.append(idx)
2014-10-03 10:41:44 +02:00
writer = TableWriter(output, None, fields + ['FREQ'])
counts = {}
feats = processing.features(layer)
nFeats = len(feats)
counts = defaultdict(int)
for i, feat in enumerate(feats):
2014-10-19 15:52:38 +02:00
progress.setPercentage(int(100 * i / nFeats))
attrs = feat.attributes()
2014-07-13 17:16:24 +02:00
clazz = tuple([attrs[idx] for idx in fieldIdxs])
2014-10-03 10:41:44 +02:00
print clazz
counts[clazz] += 1
2014-10-19 15:52:38 +02:00
for c in counts:
writer.addRecord(list(c) + [counts[c]])