@@ -352,28 +352,35 @@ def processAlgorithm(self, parameters, context, feedback):
352
352
self .grabDefaultGrassParameters (parameters , context )
353
353
354
354
# Handle ext functions for inputs/command/outputs
355
- if self .module :
356
- if hasattr (self .module , 'processInputs' ):
357
- func = getattr (self .module , 'processInputs' )
358
- func (self )
359
- else :
360
- self .processInputs (parameters , context )
361
-
362
- if hasattr (self .module , 'processCommand' ):
363
- func = getattr (self .module , 'processCommand' )
364
- func (self )
365
- else :
366
- self .processCommand ()
367
-
368
- if hasattr (self .module , 'processOutputs' ):
369
- func = getattr (self .module , 'processOutputs' )
370
- func (self )
355
+ # if self.module:
356
+ # if hasattr(self.module, 'processInputs'):
357
+ # func = getattr(self.module, 'processInputs')
358
+ # func(self)
359
+ # else:
360
+ # self.processInputs(parameters, context)
361
+
362
+ # if hasattr(self.module, 'processCommand'):
363
+ # func = getattr(self.module, 'processCommand')
364
+ # func(self)
365
+ # else:
366
+ # self.processCommand()
367
+
368
+ # if hasattr(self.module, 'processOutputs'):
369
+ # func = getattr(self.module, 'processOutputs')
370
+ # func(self)
371
+ # else:
372
+ # self.processOutputs()
373
+ # else:
374
+ # self.processInputs(parameters, context)
375
+ # self.processCommand(parameters, context)
376
+ # self.processOutputs(parameters, context)
377
+ # Handle ext methods for input/command/outputs
378
+ for fName in ['Inputs' , 'Command' , 'Outputs' ]:
379
+ fullName = 'process{}' .format (fName )
380
+ if self .module and hasattr (self .module , fullName ):
381
+ getattr (self .module , fullName )(self , parameters , context )
371
382
else :
372
- self .processOutputs ()
373
- else :
374
- self .processInputs (parameters , context )
375
- self .processCommand (parameters , context )
376
- self .processOutputs (parameters , context )
383
+ getattr (self , fullName )(parameters , context )
377
384
378
385
# Run GRASS
379
386
loglines = []
@@ -468,7 +475,12 @@ def processInputs(self, parameters, context):
468
475
# Add a vector layer
469
476
elif layer .type () == QgsMapLayer .VectorLayer :
470
477
self .commands .append (self .exportVectorLayer (layerName , layerSrc ))
471
-
478
+ self .postInputs ()
479
+
480
+ def postInputs (self ):
481
+ """
482
+ After layer imports, we need to update some internal parameters
483
+ """
472
484
# If projection has not already be set, use the project
473
485
self .setSessionProjectionFromProject ()
474
486
@@ -647,17 +659,22 @@ def processOutputs(self, parameters, context):
647
659
self .outputCommands .append (command )
648
660
QgsMessageLog .logMessage ('processOutputs. Commands: {}' .format (self .commands ), 'Grass7' , QgsMessageLog .INFO )
649
661
650
- def exportRasterLayer (self , layerKey , layerSrc ):
662
+ def exportRasterLayer (self , layerKey , layerSrc , external = True , band = 1 ):
651
663
"""
652
664
Creates a dedicated command to load a raster into
653
665
temporary GRASS DB.
666
+ :layerKey: name of the parameter
667
+ :layerSrc: file path of raster layer
668
+ :external: use r.external (r.in.gdal if False).
669
+ :band: import only this band (if None, all bands are imported).
654
670
"""
655
- # TODO: handle multiple bands
656
- #destFileName = QgsProcessingUtils.generateTempFilename(layerKey)
657
671
destFilename = 'a' + os .path .basename (getTempFilename ())
658
672
self .exportedLayers [layerKey ] = destFilename
659
- command = 'r.external input="{}" band=1 output={} --overwrite -o' .format (
660
- layerSrc , destFilename )
673
+ command = '{0] input="{1}"{2}output={3} --overwrite -o' .format (
674
+ 'r.external' if external else 'r.in.gdal' ,
675
+ layerSrc ,
676
+ ' band={} ' format (band ) if band else '' ,
677
+ destFilename )
661
678
return command
662
679
663
680
def exportVectorLayer (self , layerKey , layerSrc ):
0 commit comments