mirror of
https://github.com/qgis/QGIS.git
synced 2025-03-04 00:30:59 -05:00
36 lines
921 B
Python
36 lines
921 B
Python
##Table=group
|
|
##input=vector
|
|
##fields=string
|
|
##output=output table
|
|
|
|
from qgis.core import *
|
|
from PyQt4.QtCore import *
|
|
from processing.core.TableWriter import TableWriter
|
|
from collections import defaultdict
|
|
|
|
layer = processing.getObject(input)
|
|
inputFields = layer.pendingFields()
|
|
fieldIdxs = []
|
|
fields = fields.split(',')
|
|
for f in fields:
|
|
idx = inputFields.indexFromName(f)
|
|
if idx == -1:
|
|
raise GeoAlgorithmExecutionException('Field not found:' + f)
|
|
fieldIdxs.append(idx)
|
|
writer = TableWriter(output, None, fields + ['FREQ'])
|
|
|
|
counts = {}
|
|
feats = processing.features(layer)
|
|
nFeats = len(feats)
|
|
counts = defaultdict(int)
|
|
for i, feat in enumerate(feats):
|
|
progress.setPercentage(int(100 * i / nFeats))
|
|
attrs = feat.attributes()
|
|
clazz = tuple([attrs[idx] for idx in fieldIdxs])
|
|
print clazz
|
|
counts[clazz] += 1
|
|
|
|
for c in counts:
|
|
writer.addRecord(list(c) + [counts[c]])
|
|
|