3030
3131from qgis .PyQt .QtGui import QIcon
3232
33+ from qgis .core import (QgsProcessingParameterRasterLayer ,
34+ QgsProcessingParameterNumber ,
35+ QgsProcessingParameterBoolean ,
36+ QgsProcessingParameterString ,
37+ QgsProcessingParameterEnum ,
38+ QgsProcessingParameterCrs ,
39+ QgsProcessingParameterExtent ,
40+ QgsProcessingParameterRasterDestination ,
41+ QgsProcessingUtils )
3342from processing .algs .gdal .GdalAlgorithm import GdalAlgorithm
34- from processing .core .parameters import (ParameterRaster ,
35- ParameterString ,
36- ParameterNumber ,
37- ParameterBoolean ,
38- ParameterSelection ,
39- ParameterExtent ,
40- ParameterCrs )
41- from processing .core .outputs import OutputRaster
4243
4344from processing .algs .gdal .GdalUtils import GdalUtils
4445
@@ -67,34 +68,35 @@ def __init__(self):
6768 super ().__init__ ()
6869
6970 def initAlgorithm (self , config = None ):
70- self .addParameter (ParameterRaster (self .INPUT , self .tr ('Input layer' )))
71- self .addParameter (ParameterNumber (self .OUTSIZE ,
72- self .tr ('Set the size of the output file (In pixels or %)' ),
73- 1 , None , 100 ))
74- self .addParameter (ParameterBoolean (self .OUTSIZE_PERC ,
75- self .tr ('Output size is a percentage of input size' ), True ))
76- self .addParameter (ParameterString (self .NO_DATA ,
77- self .tr ("Nodata value, leave blank to take the nodata value from input" ),
78- '' , optional = True ))
79- self .addParameter (ParameterSelection (self .EXPAND ,
80- self .tr ('Expand' ), ['none' , 'gray' , 'rgb' , 'rgba' ], default = 0 ))
81- self .addParameter (ParameterCrs (self .SRS ,
82- self .tr ('Output projection for output file [leave blank to use input projection]' ), None , optional = True ))
83- self .addParameter (ParameterExtent (self .PROJWIN ,
84- self .tr ('Subset based on georeferenced coordinates' ), optional = True ))
85- self .addParameter (ParameterBoolean (self .SDS ,
86- self .tr ('Copy all subdatasets of this file to individual output files' ),
87- False ))
88-
89- self .addParameter (ParameterString (self .OPTIONS ,
90- self .tr ('Additional creation options' ),
91- optional = True ,
92- metadata = {'widget_wrapper' : 'processing.algs.gdal.ui.RasterOptionsWidget.RasterOptionsWidgetWrapper' }))
93- self .addParameter (ParameterSelection (self .RTYPE ,
94- self .tr ('Output raster type' ),
95- self .TYPE , 5 ))
96-
97- self .addOutput (OutputRaster (self .OUTPUT , self .tr ('Converted' )))
71+ self .addParameter (QgsProcessingParameterRasterLayer (self .INPUT , self .tr ('Input layer' )))
72+ self .addParameter (QgsProcessingParameterNumber (self .OUTSIZE ,
73+ self .tr ('Set the size of the output file (In pixels or %)' ),
74+ minValue = 1 , defaultValue = 100 ))
75+ self .addParameter (QgsProcessingParameterBoolean (self .OUTSIZE_PERC ,
76+ self .tr ('Output size is a percentage of input size' ), defaultValue = True ))
77+ self .addParameter (QgsProcessingParameterString (self .NO_DATA ,
78+ self .tr ("Nodata value, leave blank to take the nodata value from input" ),
79+ defaultValue = '' , optional = True ))
80+ self .addParameter (QgsProcessingParameterEnum (self .EXPAND ,
81+ self .tr ('Expand' ), options = ['none' , 'gray' , 'rgb' , 'rgba' ], defaultValue = 0 ))
82+ self .addParameter (QgsProcessingParameterCrs (self .SRS ,
83+ self .tr ('Output projection for output file [leave blank to use input projection]' ), defaultValue = None , optional = True ))
84+ self .addParameter (QgsProcessingParameterExtent (self .PROJWIN ,
85+ self .tr ('Subset based on georeferenced coordinates' ), optional = True ))
86+ self .addParameter (QgsProcessingParameterBoolean (self .SDS ,
87+ self .tr ('Copy all subdatasets of this file to individual output files' ),
88+ defaultValue = False ))
89+
90+ create_options_param = QgsProcessingParameterString (self .OPTIONS ,
91+ self .tr ('Additional creation options' ),
92+ optional = True )
93+ create_options_param .setMetadata ({'widget_wrapper' : 'processing.algs.gdal.ui.RasterOptionsWidget.RasterOptionsWidgetWrapper' })
94+ self .addParameter (create_options_param )
95+ self .addParameter (QgsProcessingParameterEnum (self .RTYPE ,
96+ self .tr ('Output raster type' ),
97+ options = self .TYPE , defaultValue = 5 ))
98+
99+ self .addParameter (QgsProcessingParameterRasterDestination (self .OUTPUT , self .tr ('Converted' )))
98100
99101 def name (self ):
100102 return 'translate'
@@ -106,18 +108,19 @@ def group(self):
106108 return self .tr ('Raster conversion' )
107109
108110 def getConsoleCommands (self , parameters , context , feedback ):
109- inLayer = self .getParameterValue (self .INPUT )
110- out = self .getOutputValue (translate .OUTPUT )
111- outsize = str (self .getParameterValue (self .OUTSIZE ))
112- outsizePerc = str (self .getParameterValue (self .OUTSIZE_PERC ))
113- noData = self .getParameterValue (self .NO_DATA )
114- expand = parameters [self .EXPAND ].options [self .getParameterValue (self .EXPAND )][1 ]
115- projwin = str (self .getParameterValue (self .PROJWIN ))
116- if not projwin :
117- projwin = QgsProcessingUtils .combineLayerExtents ([inLayer ])
118- crsId = self .getParameterValue (self .SRS )
119- sds = self .getParameterValue (self .SDS )
120- opts = self .getParameterValue (self .OPTIONS )
111+ inLayer = self .parameterAsRasterLayer (parameters , self .INPUT , context )
112+ out = self .parameterAsOutputLayer (parameters , self .OUTPUT , context )
113+ outsize = str (self .parameterAsInt (parameters , self .OUTSIZE , context ))
114+ outsizePerc = self .parameterAsBool (parameters , self .OUTSIZE_PERC , context )
115+ noData = self .parameterAsString (parameters , self .NO_DATA , context )
116+ expand = self .parameterDefinition (self .EXPAND ).options ()[self .parameterAsEnum (parameters , self .EXPAND , context )]
117+
118+ proj_extent = self .parameterAsExtent (parameters , self .PROJWIN , context )
119+ if proj_extent .isNull ():
120+ proj_extent = QgsProcessingUtils .combineLayerExtents ([inLayer ])
121+ crsId = self .parameterAsCrs (parameters , self .SRS , context ).authid ()
122+ sds = self .parameterAsBool (parameters , self .SDS , context )
123+ opts = self .parameterAsString (parameters , self .OPTIONS , context )
121124
122125 if noData is not None :
123126 noData = str (noData )
@@ -126,8 +129,8 @@ def getConsoleCommands(self, parameters, context, feedback):
126129 arguments .append ('-of' )
127130 arguments .append (GdalUtils .getFormatShortNameFromFilename (out ))
128131 arguments .append ('-ot' )
129- arguments .append (self .TYPE [self .getParameterValue ( self .RTYPE )])
130- if outsizePerc == 'True' :
132+ arguments .append (self .TYPE [self .parameterAsEnum ( parameters , self .RTYPE , context )])
133+ if outsizePerc :
131134 arguments .append ('-outsize' )
132135 arguments .append (outsize + '%' )
133136 arguments .append (outsize + '%' )
@@ -141,14 +144,13 @@ def getConsoleCommands(self, parameters, context, feedback):
141144 if expand != 'none' :
142145 arguments .append ('-expand' )
143146 arguments .append (expand )
144- regionCoords = projwin .split (',' )
145147 try :
146148 projwin = []
147149 projwin .append ('-projwin' )
148- projwin .append (regionCoords [ 0 ] )
149- projwin .append (regionCoords [ 3 ] )
150- projwin .append (regionCoords [ 1 ] )
151- projwin .append (regionCoords [ 2 ] )
150+ projwin .append (proj_extent . xMinimum () )
151+ projwin .append (proj_extent . yMaximum () )
152+ projwin .append (proj_extent . xMaximum () )
153+ projwin .append (proj_extent . yMinimum () )
152154 except IndexError :
153155 projwin = []
154156 if projwin :
@@ -163,7 +165,7 @@ def getConsoleCommands(self, parameters, context, feedback):
163165 arguments .append ('-co' )
164166 arguments .append (opts )
165167
166- arguments .append (self . getParameterValue ( self . INPUT ))
168+ arguments .append (inLayer . source ( ))
167169 arguments .append (out )
168170
169171 return ['gdal_translate' , GdalUtils .escapeAndJoin (arguments )]
0 commit comments