Resurrect select by attribute algorithm

This commit is contained in:
Nyall Dawson 2017-06-27 11:42:58 +10:00
parent 4e93f8d038
commit 3a9a0efc33
2 changed files with 22 additions and 22 deletions

View File

@ -64,6 +64,7 @@ from .RandomExtract import RandomExtract
from .RandomExtractWithinSubsets import RandomExtractWithinSubsets from .RandomExtractWithinSubsets import RandomExtractWithinSubsets
from .RegularPoints import RegularPoints from .RegularPoints import RegularPoints
from .SaveSelectedFeatures import SaveSelectedFeatures from .SaveSelectedFeatures import SaveSelectedFeatures
from .SelectByAttribute import SelectByAttribute
from .SimplifyGeometries import SimplifyGeometries from .SimplifyGeometries import SimplifyGeometries
from .Smooth import Smooth from .Smooth import Smooth
from .SpatialiteExecuteSQL import SpatialiteExecuteSQL from .SpatialiteExecuteSQL import SpatialiteExecuteSQL
@ -99,7 +100,6 @@ from .VectorSplit import VectorSplit
# from .SpatialJoin import SpatialJoin # from .SpatialJoin import SpatialJoin
# from .DeleteDuplicateGeometries import DeleteDuplicateGeometries # from .DeleteDuplicateGeometries import DeleteDuplicateGeometries
# from .TextToFloat import TextToFloat # from .TextToFloat import TextToFloat
# from .SelectByAttribute import SelectByAttribute
# from .GridLine import GridLine # from .GridLine import GridLine
# from .Gridify import Gridify # from .Gridify import Gridify
# from .HubDistancePoints import HubDistancePoints # from .HubDistancePoints import HubDistancePoints
@ -202,7 +202,6 @@ class QGISAlgorithmProvider(QgsProcessingProvider):
# ExtractByLocation(), # ExtractByLocation(),
# SpatialJoin(), # SpatialJoin(),
# DeleteDuplicateGeometries(), TextToFloat(), # DeleteDuplicateGeometries(), TextToFloat(),
# SelectByAttribute(),
# GridLine(), Gridify(), HubDistancePoints(), # GridLine(), Gridify(), HubDistancePoints(),
# HubDistanceLines(), HubLines(), # HubDistanceLines(), HubLines(),
# GeometryConvert(), FieldsCalculator(), # GeometryConvert(), FieldsCalculator(),
@ -266,6 +265,7 @@ class QGISAlgorithmProvider(QgsProcessingProvider):
RandomExtractWithinSubsets(), RandomExtractWithinSubsets(),
RegularPoints(), RegularPoints(),
SaveSelectedFeatures(), SaveSelectedFeatures(),
SelectByAttribute(),
SimplifyGeometries(), SimplifyGeometries(),
Smooth(), Smooth(),
SpatialiteExecuteSQL(), SpatialiteExecuteSQL(),

View File

@ -28,14 +28,14 @@ __revision__ = '$Format:%H$'
from qgis.core import (QgsApplication) from qgis.core import (QgsApplication)
from qgis.PyQt.QtCore import QVariant from qgis.PyQt.QtCore import QVariant
from qgis.core import (QgsExpression, from qgis.core import (QgsExpression,
QgsProcessingUtils) QgsProcessingUtils,
QgsProcessingParameterVectorLayer,
QgsProcessingParameterField,
QgsProcessingParameterEnum,
QgsProcessingParameterString,
QgsProcessingOutputVectorLayer)
from processing.algs.qgis.QgisAlgorithm import QgisAlgorithm from processing.algs.qgis.QgisAlgorithm import QgisAlgorithm
from processing.core.GeoAlgorithmExecutionException import GeoAlgorithmExecutionException from processing.core.GeoAlgorithmExecutionException import GeoAlgorithmExecutionException
from processing.core.parameters import ParameterVector
from processing.core.parameters import ParameterTableField
from processing.core.parameters import ParameterSelection
from processing.core.parameters import ParameterString
from processing.core.outputs import OutputVector
class SelectByAttribute(QgisAlgorithm): class SelectByAttribute(QgisAlgorithm):
@ -82,15 +82,15 @@ class SelectByAttribute(QgisAlgorithm):
self.tr('does not contain') self.tr('does not contain')
] ]
self.addParameter(ParameterVector(self.INPUT, self.addParameter(QgsProcessingParameterVectorLayer(self.INPUT, self.tr('Input layer')))
self.tr('Input Layer')))
self.addParameter(ParameterTableField(self.FIELD,
self.tr('Selection attribute'), self.INPUT))
self.addParameter(ParameterSelection(self.OPERATOR,
self.tr('Operator'), self.i18n_operators))
self.addParameter(ParameterString(self.VALUE, self.tr('Value')))
self.addOutput(OutputVector(self.OUTPUT, self.tr('Selected (attribute)'), True)) self.addParameter(QgsProcessingParameterField(self.FIELD,
self.tr('Selection attribute'), parentLayerParameterName=self.INPUT))
self.addParameter(QgsProcessingParameterEnum(self.OPERATOR,
self.tr('Operator'), self.i18n_operators))
self.addParameter(QgsProcessingParameterString(self.VALUE, self.tr('Value')))
self.addOutput(QgsProcessingOutputVectorLayer(self.OUTPUT, self.tr('Selected (attribute)')))
def name(self): def name(self):
return 'selectbyattribute' return 'selectbyattribute'
@ -99,11 +99,11 @@ class SelectByAttribute(QgisAlgorithm):
return self.tr('Select by attribute') return self.tr('Select by attribute')
def processAlgorithm(self, parameters, context, feedback): def processAlgorithm(self, parameters, context, feedback):
fileName = self.getParameterValue(self.INPUT) layer = self.parameterAsVectorLayer(parameters, self.INPUT, context)
layer = QgsProcessingUtils.mapLayerFromString(fileName, context)
fieldName = self.getParameterValue(self.FIELD) fieldName = self.parameterAsString(parameters, self.FIELD, context)
operator = self.OPERATORS[self.getParameterValue(self.OPERATOR)] operator = self.OPERATORS[self.parameterAsEnum(parameters, self.OPERATOR, context)]
value = self.getParameterValue(self.VALUE) value = self.parameterAsString(parameters, self.VALUE, context)
fields = layer.fields() fields = layer.fields()
@ -135,4 +135,4 @@ class SelectByAttribute(QgisAlgorithm):
raise GeoAlgorithmExecutionException(expression.parserErrorString()) raise GeoAlgorithmExecutionException(expression.parserErrorString())
layer.selectByExpression(expression_string) layer.selectByExpression(expression_string)
self.setOutputValue(self.OUTPUT, fileName) return {self.OUTPUT: parameters[self.INPUT]}