24
24
25
25
__revision__ = '$Format:%H$'
26
26
27
- from qgis .core import (QgsApplication ,
28
- QgsExpression ,
27
+ from qgis .core import (QgsExpression ,
29
28
QgsVectorLayer ,
30
- QgsProcessingUtils )
29
+ QgsProcessingParameterVectorLayer ,
30
+ QgsProcessingParameterExpression ,
31
+ QgsProcessingParameterEnum ,
32
+ QgsProcessingOutputVectorLayer )
31
33
from processing .core .GeoAlgorithmExecutionException import GeoAlgorithmExecutionException
32
- from processing .core .parameters import ParameterVector
33
- from processing .core .parameters import ParameterSelection
34
- from processing .core .outputs import OutputVector
35
34
from processing .algs .qgis .QgisAlgorithm import QgisAlgorithm
36
- from processing .core .parameters import ParameterExpression
37
35
38
36
39
37
class SelectByExpression (QgisAlgorithm ):
40
38
41
- LAYERNAME = 'LAYERNAME '
39
+ INPUT = 'INPUT '
42
40
EXPRESSION = 'EXPRESSION'
43
- RESULT = 'RESULT '
41
+ OUTPUT = 'OUTPUT '
44
42
METHOD = 'METHOD'
45
43
46
44
def group (self ):
@@ -53,13 +51,14 @@ def __init__(self):
53
51
self .tr ('removing from current selection' ),
54
52
self .tr ('selecting within current selection' )]
55
53
56
- self .addParameter (ParameterVector (self .LAYERNAME ,
57
- self .tr ('Input Layer' )))
58
- self .addParameter (ParameterExpression (self .EXPRESSION ,
59
- self .tr ("Expression" ), parent_layer = self .LAYERNAME ))
60
- self .addParameter (ParameterSelection (self .METHOD ,
61
- self .tr ('Modify current selection by' ), self .methods , 0 ))
62
- self .addOutput (OutputVector (self .RESULT , self .tr ('Selected (expression)' ), True ))
54
+ self .addParameter (QgsProcessingParameterVectorLayer (self .INPUT , self .tr ('Input layer' )))
55
+
56
+ self .addParameter (QgsProcessingParameterExpression (self .EXPRESSION ,
57
+ self .tr ('Expression' ), parentLayerParameterName = self .INPUT ))
58
+ self .addParameter (QgsProcessingParameterEnum (self .METHOD ,
59
+ self .tr ('Modify current selection by' ), self .methods , 0 ))
60
+
61
+ self .addOutput (QgsProcessingOutputVectorLayer (self .OUTPUT , self .tr ('Selected (attribute)' )))
63
62
64
63
def name (self ):
65
64
return 'selectbyexpression'
@@ -68,9 +67,9 @@ def displayName(self):
68
67
return self .tr ('Select by expression' )
69
68
70
69
def processAlgorithm (self , parameters , context , feedback ):
71
- filename = self .getParameterValue ( self .LAYERNAME )
72
- layer = QgsProcessingUtils . mapLayerFromString ( filename , context )
73
- method = self .getParameterValue ( self .METHOD )
70
+ layer = self .parameterAsVectorLayer ( parameters , self .INPUT , context )
71
+
72
+ method = self .parameterAsEnum ( parameters , self .METHOD , context )
74
73
75
74
if method == 0 :
76
75
behavior = QgsVectorLayer .SetSelection
@@ -81,10 +80,10 @@ def processAlgorithm(self, parameters, context, feedback):
81
80
elif method == 3 :
82
81
behavior = QgsVectorLayer .IntersectSelection
83
82
84
- expression = self .getParameterValue ( self .EXPRESSION )
83
+ expression = self .parameterAsString ( parameters , self .EXPRESSION , context )
85
84
qExp = QgsExpression (expression )
86
85
if qExp .hasParserError ():
87
86
raise GeoAlgorithmExecutionException (qExp .parserErrorString ())
88
87
89
88
layer .selectByExpression (expression , behavior )
90
- self .setOutputValue ( self .RESULT , filename )
89
+ return { self .OUTPUT : parameters [ self .INPUT ]}
0 commit comments