[FEATURE] Drop 'Frequency analysis' and 'Number of unique values in classes' algs

The functionality of both these algorithms is available in 'stats by
categories'
This commit is contained in:
Nyall Dawson 2017-09-06 17:06:45 +10:00
parent ea2e537cd7
commit 9a091651bc
2 changed files with 0 additions and 99 deletions

View File

@ -1,47 +0,0 @@
##Vector analysis=group
#inputs
##Input=source
##Fields=field multiple Input
##Frequency=sink table
from processing.tools.vector import TableWriter
from collections import defaultdict
from qgis.core import QgsProcessingUtils, QgsFields, QgsField, QgsWkbTypes, QgsFeature
from qgis.PyQt.QtCore import QVariant
from processing.core.GeoAlgorithmExecutionException import GeoAlgorithmExecutionException
inputFields = Input.fields()
fieldIdxs = []
out_fields = QgsFields()
for f in Fields:
idx = inputFields.indexFromName(f)
if idx == -1:
raise GeoAlgorithmExecutionException('Field not found:' + f)
fieldIdxs.append(idx)
out_fields.append(inputFields.at(idx))
out_fields.append(QgsField('FREQ', QVariant.Int))
(sink, Frequency) = self.parameterAsSink(parameters, 'Frequency', context,
out_fields)
counts = {}
feats = Input.getFeatures()
nFeats = Input.featureCount()
counts = defaultdict(int)
for i, feat in enumerate(feats):
feedback.setProgress(int(100 * i / nFeats))
if feedback.isCanceled():
break
attrs = feat.attributes()
clazz = tuple([attrs[i] for i in fieldIdxs])
counts[clazz] += 1
for c in counts:
f = QgsFeature()
f.setAttributes(list(c) + [counts[c]])
sink.addFeature(f)

View File

@ -1,52 +0,0 @@
##Vector analysis=group
# inputs
##input=source
##class_field=field input
##value_field=field input
##N_unique_values=sink
from qgis.PyQt.QtCore import QVariant
from qgis.core import QgsFeature, QgsField, QgsProcessingUtils
fields = input.fields()
fields.append(QgsField('UNIQ_COUNT', QVariant.Int))
(sink, N_unique_values) = self.parameterAsSink(parameters, 'N_unique_values', context,
fields, input.wkbType(), input.sourceCrs())
class_field_index = input.fields().lookupField(class_field)
value_field_index = input.fields().lookupField(value_field)
outFeat = QgsFeature()
classes = {}
feats = input.getFeatures()
nFeat = input.featureCount()
for n, inFeat in enumerate(feats):
if feedback.isCanceled():
break
feedback.setProgress(int(100 * n / nFeat))
attrs = inFeat.attributes()
clazz = attrs[class_field_index]
value = attrs[value_field_index]
if clazz not in classes:
classes[clazz] = []
if value not in classes[clazz]:
classes[clazz].append(value)
feats = input.getFeatures()
for n, inFeat in enumerate(feats):
if feedback.isCanceled():
break
feedback.setProgress(int(100 * n / nFeat))
inGeom = inFeat.geometry()
outFeat.setGeometry(inGeom)
attrs = inFeat.attributes()
clazz = attrs[class_field_index]
attrs.append(len(classes[clazz]))
outFeat.setAttributes(attrs)
sink.addFeature(outFeat)