Skip to content

Commit f3f9e54

Browse files
committed
[processing] restore Hillshade algorithm
1 parent f4bba54 commit f3f9e54

File tree

3 files changed

+43
-37
lines changed

3 files changed

+43
-37
lines changed

python/plugins/processing/algs/qgis/Hillshade.py

Lines changed: 27 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -30,23 +30,23 @@
3030
from qgis.PyQt.QtGui import QIcon
3131

3232
from qgis.analysis import QgsHillshadeFilter
33-
33+
from qgis.core import (QgsProcessingParameterRasterLayer,
34+
QgsProcessingParameterNumber,
35+
QgsProcessingParameterRasterDestination)
3436
from 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
3837
from processing.tools import raster
38+
from processing.tools.dataobjects import exportRasterLayer
3939

4040
pluginPath = os.path.split(os.path.split(os.path.dirname(__file__))[0])[0]
4141

4242

4343
class 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}

python/plugins/processing/algs/qgis/QGISAlgorithmProvider.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@
6060
from .FixGeometry import FixGeometry
6161
from .GridPolygon import GridPolygon
6262
from .Heatmap import Heatmap
63+
from .Hillshade import Hillshade
6364
from .ImportIntoPostGIS import ImportIntoPostGIS
6465
from .ImportIntoSpatialite import ImportIntoSpatialite
6566
from .Intersection import Intersection
@@ -148,7 +149,6 @@
148149
# from .Translate import Translate
149150
# from .SingleSidedBuffer import SingleSidedBuffer
150151
# from .PointsAlongGeometry import PointsAlongGeometry
151-
# from .Hillshade import Hillshade
152152
# from .Relief import Relief
153153
# from .IdwInterpolation import IdwInterpolation
154154
# from .TinInterpolation import TinInterpolation
@@ -254,6 +254,7 @@ def getAlgs(self):
254254
FixGeometry(),
255255
GridPolygon(),
256256
Heatmap(),
257+
Hillshade(),
257258
ImportIntoPostGIS(),
258259
ImportIntoSpatialite(),
259260
Intersection(),

python/plugins/processing/tests/testdata/qgis_algorithm_tests.yaml

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1068,20 +1068,20 @@ tests:
10681068
hash: ff630246e8dc19c7217d81261c6b64f965c17fa04d3e41d7979c1f1e
10691069
type: rasterhash
10701070

1071-
# - algorithm: qgis:hillshade
1072-
# name: Hillshade from QGIS analysis library
1073-
# params:
1074-
# AZIMUTH: 300.0
1075-
# INPUT_LAYER:
1076-
# name: dem.tif
1077-
# type: raster
1078-
# V_ANGLE: 40.0
1079-
# Z_FACTOR: 1.0
1080-
# results:
1081-
# OUTPUT_LAYER:
1082-
# hash: 58365b3715b925d6286e7f082ebd9c2a20f09fa1c922176d3f238002
1083-
# type: rasterhash
1084-
#
1071+
- algorithm: qgis:hillshade
1072+
name: Hillshade from QGIS analysis library
1073+
params:
1074+
AZIMUTH: 300.0
1075+
INPUT_LAYER:
1076+
name: dem.tif
1077+
type: raster
1078+
V_ANGLE: 40.0
1079+
Z_FACTOR: 1.0
1080+
results:
1081+
OUTPUT_LAYER:
1082+
hash: 58365b3715b925d6286e7f082ebd9c2a20f09fa1c922176d3f238002
1083+
type: rasterhash
1084+
10851085
# - algorithm: qgis:relief
10861086
# name: Relief (automatic colors generation)
10871087
# params:

0 commit comments

Comments
 (0)