mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-27 00:33:48 -05:00
[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:
parent
ea2e537cd7
commit
9a091651bc
@ -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)
|
@ -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)
|
Loading…
x
Reference in New Issue
Block a user