3535 QgsMessageLog ,
3636 QgsMapLayer ,
3737 QgsApplication ,
38+ QgsProcessing ,
3839 QgsProcessingAlgorithm ,
3940 QgsProcessingParameterMultipleLayers ,
4041 QgsProcessingParameterDefinition ,
4344 QgsProcessingParameterString ,
4445 QgsProcessingParameterRasterLayer ,
4546 QgsProcessingParameterVectorLayer ,
47+ QgsProcessingParameterBoolean ,
48+ QgsProcessingParameterFile ,
49+ QgsProcessingParameterNumber ,
50+ QgsProcessingParameterRasterDestination ,
51+ QgsProcessingParameterVectorDestination ,
4652 QgsProcessingParameterEnum )
4753
4854from processing .core .parameters import getParameterFromString
@@ -190,15 +196,13 @@ def preprocessParameters(self, parameters):
190196 return valid_params
191197
192198 def processAlgorithm (self , parameters , context , feedback ):
193-
194199 otb_cli_file = OtbUtils .cliPath ()
195200 command = '"{}" {} {}' .format (otb_cli_file , self .name (), OtbUtils .appFolder ())
196201 outputPixelType = None
197202 for k , v in parameters .items ():
198203 # if value is None for a parameter we don't have any businees with this key
199204 if v is None :
200205 continue
201-
202206 # for 'outputpixeltype' parameter we find the pixeltype string from self.pixelTypes
203207 if k == 'outputpixeltype' :
204208 outputPixelType = self .pixelTypes [int (parameters ['outputpixeltype' ])]
@@ -207,31 +211,41 @@ def processAlgorithm(self, parameters, context, feedback):
207211 param = self .parameterDefinition (k )
208212 if param .isDestination ():
209213 continue
210-
211- if isinstance (param , (QgsProcessingParameterRasterLayer , QgsProcessingParameterVectorLayer )):
212- if isinstance (v , QgsMapLayer ):
213- value = '"{}"' .format (v .source ())
214- else :
215- value = '"{}"' .format (v )
216- elif isinstance (param , QgsProcessingParameterMultipleLayers ):
217- value = ''
218- for item in v :
219- value += '"{}" ' .format (item )
220- elif isinstance (param , QgsProcessingParameterCrs ):
221- crs = self .parameterAsCrs (parameters , param .name (), context )
222- value = crs .authid ().split ('EPSG:' )[1 ]
223-
224- elif isinstance (param , QgsProcessingParameterEnum ):
214+ if isinstance (param , QgsProcessingParameterEnum ):
225215 value = self .parameterAsEnum (parameters , param .name (), context )
216+ elif isinstance (param , QgsProcessingParameterBoolean ):
217+ value = self .parameterAsBool (parameters , param .name (), context )
218+ elif isinstance (param , QgsProcessingParameterCrs ):
219+ crsValue = self .parameterAsCrs (parameters , param .name (), context )
220+ value = crsValue .authid ().split ('EPSG:' )[1 ]
221+ elif isinstance (param , QgsProcessingParameterFile ):
222+ value = self .parameterAsFile (parameters , param .name (), context )
223+ elif isinstance (param , QgsProcessingParameterMultipleLayers ):
224+ layers = self .parameterAsLayerList (parameters , param .name (), context )
225+ if layers is None or len (layers ) == 0 :
226+ continue
227+ value = ' ' .join (['"{}"' .format (layer .source ()) for layer in layers ])
228+ elif isinstance (param , QgsProcessingParameterNumber ):
229+ if param .dataType () == QgsProcessingParameterNumber .Integer :
230+ value = self .parameterAsInt (parameters , param .name (), context )
231+ else :
232+ value = self .parameterAsDouble (parameters , param .name (), context )
233+ elif isinstance (param , (QgsProcessingParameterRasterLayer , QgsProcessingParameterVectorLayer )):
234+ value = '"{}"' .format (self .parameterAsLayer (parameters , param .name (), context ).source ())
235+ elif isinstance (param , QgsProcessingParameterString ):
236+ value = '"{}"' .format (parameters [param .name ()])
226237 else :
227- value = self .parameterAsString (parameters , param .name (), context )
238+ # Use whatever is given
239+ value = '"{}"' .format (parameters [param .name ()])
228240
229- command += ' -{} {}' .format (k , value )
241+ # Check if value is set in above if elif ladder and update command string
242+ if value and value is not None :
243+ command += ' -{} {}' .format (k , value )
230244
231245 output_files = {}
246+
232247 for out in self .destinationParameterDefinitions ():
233248 filePath = self .parameterAsOutputLayer (parameters , out .name (), context )
234-
235249 output_files [out .name ()] = filePath
236250 if outputPixelType is not None :
237251 command += ' -{} "{}" {}' .format (out .name (), filePath , outputPixelType )
0 commit comments