Skip to content

Commit 3a9a0ef

Browse files
committed
Resurrect select by attribute algorithm
1 parent 4e93f8d commit 3a9a0ef

File tree

2 files changed

+22
-22
lines changed

2 files changed

+22
-22
lines changed

python/plugins/processing/algs/qgis/QGISAlgorithmProvider.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@
6464
from .RandomExtractWithinSubsets import RandomExtractWithinSubsets
6565
from .RegularPoints import RegularPoints
6666
from .SaveSelectedFeatures import SaveSelectedFeatures
67+
from .SelectByAttribute import SelectByAttribute
6768
from .SimplifyGeometries import SimplifyGeometries
6869
from .Smooth import Smooth
6970
from .SpatialiteExecuteSQL import SpatialiteExecuteSQL
@@ -99,7 +100,6 @@
99100
# from .SpatialJoin import SpatialJoin
100101
# from .DeleteDuplicateGeometries import DeleteDuplicateGeometries
101102
# from .TextToFloat import TextToFloat
102-
# from .SelectByAttribute import SelectByAttribute
103103
# from .GridLine import GridLine
104104
# from .Gridify import Gridify
105105
# from .HubDistancePoints import HubDistancePoints
@@ -202,7 +202,6 @@ def getAlgs(self):
202202
# ExtractByLocation(),
203203
# SpatialJoin(),
204204
# DeleteDuplicateGeometries(), TextToFloat(),
205-
# SelectByAttribute(),
206205
# GridLine(), Gridify(), HubDistancePoints(),
207206
# HubDistanceLines(), HubLines(),
208207
# GeometryConvert(), FieldsCalculator(),
@@ -266,6 +265,7 @@ def getAlgs(self):
266265
RandomExtractWithinSubsets(),
267266
RegularPoints(),
268267
SaveSelectedFeatures(),
268+
SelectByAttribute(),
269269
SimplifyGeometries(),
270270
Smooth(),
271271
SpatialiteExecuteSQL(),

python/plugins/processing/algs/qgis/SelectByAttribute.py

+20-20
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,14 @@
2828
from qgis.core import (QgsApplication)
2929
from qgis.PyQt.QtCore import QVariant
3030
from qgis.core import (QgsExpression,
31-
QgsProcessingUtils)
31+
QgsProcessingUtils,
32+
QgsProcessingParameterVectorLayer,
33+
QgsProcessingParameterField,
34+
QgsProcessingParameterEnum,
35+
QgsProcessingParameterString,
36+
QgsProcessingOutputVectorLayer)
3237
from processing.algs.qgis.QgisAlgorithm import QgisAlgorithm
3338
from processing.core.GeoAlgorithmExecutionException import GeoAlgorithmExecutionException
34-
from processing.core.parameters import ParameterVector
35-
from processing.core.parameters import ParameterTableField
36-
from processing.core.parameters import ParameterSelection
37-
from processing.core.parameters import ParameterString
38-
from processing.core.outputs import OutputVector
3939

4040

4141
class SelectByAttribute(QgisAlgorithm):
@@ -82,15 +82,15 @@ def __init__(self):
8282
self.tr('does not contain')
8383
]
8484

85-
self.addParameter(ParameterVector(self.INPUT,
86-
self.tr('Input Layer')))
87-
self.addParameter(ParameterTableField(self.FIELD,
88-
self.tr('Selection attribute'), self.INPUT))
89-
self.addParameter(ParameterSelection(self.OPERATOR,
90-
self.tr('Operator'), self.i18n_operators))
91-
self.addParameter(ParameterString(self.VALUE, self.tr('Value')))
85+
self.addParameter(QgsProcessingParameterVectorLayer(self.INPUT, self.tr('Input layer')))
9286

93-
self.addOutput(OutputVector(self.OUTPUT, self.tr('Selected (attribute)'), True))
87+
self.addParameter(QgsProcessingParameterField(self.FIELD,
88+
self.tr('Selection attribute'), parentLayerParameterName=self.INPUT))
89+
self.addParameter(QgsProcessingParameterEnum(self.OPERATOR,
90+
self.tr('Operator'), self.i18n_operators))
91+
self.addParameter(QgsProcessingParameterString(self.VALUE, self.tr('Value')))
92+
93+
self.addOutput(QgsProcessingOutputVectorLayer(self.OUTPUT, self.tr('Selected (attribute)')))
9494

9595
def name(self):
9696
return 'selectbyattribute'
@@ -99,11 +99,11 @@ def displayName(self):
9999
return self.tr('Select by attribute')
100100

101101
def processAlgorithm(self, parameters, context, feedback):
102-
fileName = self.getParameterValue(self.INPUT)
103-
layer = QgsProcessingUtils.mapLayerFromString(fileName, context)
104-
fieldName = self.getParameterValue(self.FIELD)
105-
operator = self.OPERATORS[self.getParameterValue(self.OPERATOR)]
106-
value = self.getParameterValue(self.VALUE)
102+
layer = self.parameterAsVectorLayer(parameters, self.INPUT, context)
103+
104+
fieldName = self.parameterAsString(parameters, self.FIELD, context)
105+
operator = self.OPERATORS[self.parameterAsEnum(parameters, self.OPERATOR, context)]
106+
value = self.parameterAsString(parameters, self.VALUE, context)
107107

108108
fields = layer.fields()
109109

@@ -135,4 +135,4 @@ def processAlgorithm(self, parameters, context, feedback):
135135
raise GeoAlgorithmExecutionException(expression.parserErrorString())
136136

137137
layer.selectByExpression(expression_string)
138-
self.setOutputValue(self.OUTPUT, fileName)
138+
return {self.OUTPUT: parameters[self.INPUT]}

0 commit comments

Comments
 (0)