3030from qgis .PyQt .QtGui import QIcon
3131
3232from qgis .analysis import QgsHillshadeFilter
33-
33+ from qgis .core import (QgsProcessingParameterRasterLayer ,
34+ QgsProcessingParameterNumber ,
35+ QgsProcessingParameterRasterDestination )
3436from processing .algs .qgis .QgisAlgorithm import QgisAlgorithm
35- from processing .core .parameters import ParameterRaster
36- from processing .core .parameters import ParameterNumber
37- from processing .core .outputs import OutputRaster
3837from processing .tools import raster
38+ from processing .tools .dataobjects import exportRasterLayer
3939
4040pluginPath = os .path .split (os .path .split (os .path .dirname (__file__ ))[0 ])[0 ]
4141
4242
4343class Hillshade (QgisAlgorithm ):
4444
45- INPUT_LAYER = 'INPUT_LAYER '
45+ INPUT = 'INPUT '
4646 Z_FACTOR = 'Z_FACTOR'
4747 AZIMUTH = 'AZIMUTH'
4848 V_ANGLE = 'V_ANGLE'
49- OUTPUT_LAYER = 'OUTPUT_LAYER '
49+ OUTPUT = 'OUTPUT '
5050
5151 def icon (self ):
5252 return QIcon (os .path .join (pluginPath , 'images' , 'dem.png' ))
@@ -58,16 +58,18 @@ def __init__(self):
5858 super ().__init__ ()
5959
6060 def initAlgorithm (self , config = None ):
61- self .addParameter (ParameterRaster (self .INPUT_LAYER ,
62- self .tr ('Elevation layer' )))
63- self .addParameter (ParameterNumber (self .Z_FACTOR ,
64- self .tr ('Z factor' ), 1.0 , 999999.99 , 1.0 ))
65- self .addParameter (ParameterNumber (self .AZIMUTH ,
66- self .tr ('Azimuth (horizontal angle)' ), 0.00 , 360.00 , 300.00 ))
67- self .addParameter (ParameterNumber (self .V_ANGLE ,
68- self .tr ('Vertical angle' ), 1.00 , 90.00 , 40.00 ))
69- self .addOutput (OutputRaster (self .OUTPUT_LAYER ,
70- self .tr ('Hillshade' )))
61+ self .addParameter (QgsProcessingParameterRasterLayer (self .INPUT ,
62+ self .tr ('Elevation layer' )))
63+ self .addParameter (QgsProcessingParameterNumber (self .Z_FACTOR ,
64+ self .tr ('Z factor' ), QgsProcessingParameterNumber .Double ,
65+ 1 , False , 1 , 999999.99 ))
66+ self .addParameter (QgsProcessingParameterNumber (self .AZIMUTH ,
67+ self .tr ('Azimuth (horizontal angle)' ), QgsProcessingParameterNumber .Double ,
68+ 300 , False , 0 , 360 ))
69+ self .addParameter (QgsProcessingParameterNumber (self .V_ANGLE ,
70+ self .tr ('Vertical angle' ), QgsProcessingParameterNumber .Double ,
71+ 40 , False , 1 , 90 ))
72+ self .addParameter (QgsProcessingParameterRasterDestination (self .OUTPUT , self .tr ('Hillshade' )))
7173
7274 def name (self ):
7375 return 'hillshade'
@@ -76,14 +78,17 @@ def displayName(self):
7678 return self .tr ('Hillshade' )
7779
7880 def processAlgorithm (self , parameters , context , feedback ):
79- inputFile = self .getParameterValue (self .INPUT_LAYER )
80- zFactor = self .getParameterValue (self .Z_FACTOR )
81- azimuth = self .getParameterValue (self .AZIMUTH )
82- vAngle = self .getParameterValue (self .V_ANGLE )
83- outputFile = self .getOutputValue (self .OUTPUT_LAYER )
81+ inputFile = exportRasterLayer (self .parameterAsRasterLayer (parameters , self .INPUT , context ))
82+ zFactor = self .parameterAsDouble (parameters , self .Z_FACTOR , context )
83+ azimuth = self .parameterAsDouble (parameters , self .AZIMUTH , context )
84+ vAngle = self .parameterAsDouble (parameters , self .V_ANGLE , context )
85+
86+ outputFile = self .parameterAsOutputLayer (parameters , self .OUTPUT , context )
8487
8588 outputFormat = raster .formatShortNameFromFileName (outputFile )
8689
8790 hillshade = QgsHillshadeFilter (inputFile , outputFile , outputFormat , azimuth , vAngle )
8891 hillshade .setZFactor (zFactor )
89- hillshade .processRaster (None )
92+ hillshade .processRaster (feedback )
93+
94+ return {self .OUTPUT : outputFile }
0 commit comments