26
26
__revision__ = '$Format:%H$'
27
27
28
28
import os
29
- from qgis .PyQt .QtGui import QIcon
30
- from processing .core .GeoAlgorithm import GeoAlgorithm
31
- from processing .core .parameters import ParameterRaster
32
- from processing .core .outputs import OutputRaster
29
+ from qgis .core import (QgsProcessingParameterRasterLayer ,
30
+ QgsProcessingParameterRasterDestination )
33
31
from processing .tools .system import getTempFilename
34
32
from . import SagaUtils
33
+ from .SagaAlgorithmBase import SagaAlgorithmBase
35
34
36
35
pluginPath = os .path .normpath (os .path .join (
37
36
os .path .split (os .path .dirname (__file__ ))[0 ], os .pardir ))
38
37
39
38
40
- class SplitRGBBands (GeoAlgorithm ):
39
+ class SplitRGBBands (SagaAlgorithmBase ):
41
40
42
41
INPUT = 'INPUT'
43
42
R = 'R'
44
43
G = 'G'
45
44
B = 'B'
46
45
47
- def icon (self ):
48
- return QIcon (os .path .join (pluginPath , 'images' , 'saga.png' ))
49
-
50
46
def __init__ (self ):
51
47
super ().__init__ ()
52
- self .addParameter (ParameterRaster (SplitRGBBands .INPUT ,
53
- self .tr ('Input layer' ), False ))
54
- self .addOutput (OutputRaster (SplitRGBBands .R ,
55
- self .tr ('Output R band layer' )))
56
- self .addOutput (OutputRaster (SplitRGBBands .G ,
57
- self .tr ('Output G band layer' )))
58
- self .addOutput (OutputRaster (SplitRGBBands .B ,
59
- self .tr ('Output B band layer' )))
48
+
49
+ def initAlgorithm (self , config = None ):
50
+ self .addParameter (QgsProcessingParameterRasterLayer (self .INPUT , self .tr ('Input layer' )))
51
+
52
+ self .addParameter (QgsProcessingParameterRasterDestination (self .R , self .tr ('Output R band layer' )))
53
+ self .addParameter (QgsProcessingParameterRasterDestination (self .G , self .tr ('Output G band layer' )))
54
+ self .addParameter (QgsProcessingParameterRasterDestination (self .B , self .tr ('Output B band layer' )))
60
55
61
56
def name (self ):
62
57
return 'splitrgbbands'
@@ -69,17 +64,19 @@ def group(self):
69
64
70
65
def processAlgorithm (self , parameters , context , feedback ):
71
66
# TODO: check correct num of bands
72
- input = self .getParameterValue (SplitRGBBands .INPUT )
67
+ inLayer = self .parameterAsRasterLayer (parameters , self .INPUT , context )
68
+ input = inLayer .source ()
73
69
temp = getTempFilename (None ).replace ('.' , '' )
74
70
basename = os .path .basename (temp )
75
71
validChars = \
76
72
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
77
73
safeBasename = '' .join (c for c in basename if c in validChars )
78
74
temp = os .path .join (os .path .dirname (temp ), safeBasename )
79
75
80
- r = self .getOutputValue (SplitRGBBands .R )
81
- g = self .getOutputValue (SplitRGBBands .G )
82
- b = self .getOutputValue (SplitRGBBands .B )
76
+ r = self .parameterAsOutputLayer (parameters , self .R , context )
77
+ g = self .parameterAsOutputLayer (parameters , self .G , context )
78
+ b = self .parameterAsOutputLayer (parameters , self .B , context )
79
+
83
80
commands = []
84
81
version = SagaUtils .getInstalledVersion (True )
85
82
trailing = ""
@@ -95,3 +92,5 @@ def processAlgorithm(self, parameters, context, feedback):
95
92
96
93
SagaUtils .createSagaBatchJobFileFromSagaCommands (commands )
97
94
SagaUtils .executeSaga (feedback )
95
+
96
+ return {self .R : r , self .G : g , self .B : b }
0 commit comments