Skip to content

Commit

Permalink
allow pass additional parameters in the contour algorithm
Browse files Browse the repository at this point in the history
  • Loading branch information
alexbruy committed Jun 25, 2019
1 parent c64c294 commit 18a56f9
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 8 deletions.
22 changes: 18 additions & 4 deletions python/plugins/processing/algs/gdal/contour.py
Expand Up @@ -51,6 +51,7 @@ class contour(GdalAlgorithm):
IGNORE_NODATA = 'IGNORE_NODATA'
NODATA = 'NODATA'
OFFSET = 'OFFSET'
EXTRA = 'EXTRA'
OPTIONS = 'OPTIONS'
OUTPUT = 'OUTPUT'

Expand Down Expand Up @@ -102,11 +103,19 @@ def initAlgorithm(self, config=None):
nodata_param.setFlags(offset_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced)
self.addParameter(offset_param)

extra_param = QgsProcessingParameterString(self.EXTRA,
self.tr('Additional command-line parameters'),
defaultValue=None,
optional=True)
extra_param.setFlags(extra_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced)
self.addParameter(extra_param)

# TODO: remove in QGIS 4
options_param = QgsProcessingParameterString(self.OPTIONS,
self.tr('Additional creation options'),
defaultValue='',
optional=True)
options_param.setFlags(options_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced)
options_param.setFlags(options_param.flags() | QgsProcessingParameterDefinition.FlagHidden)
self.addParameter(options_param)

self.addParameter(QgsProcessingParameterVectorDestination(
Expand Down Expand Up @@ -169,13 +178,18 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
if offset:
arguments.append('-off {}'.format(offset))

if outFormat:
arguments.append('-f {}'.format(outFormat))

if self.EXTRA in parameters and parameters[self.EXTRA] not in (None, ''):
extra = self.parameterAsString(parameters, self.EXTRA, context)
arguments.append(extra)

# TODO: remove in QGIS 4
options = self.parameterAsString(parameters, self.OPTIONS, context)
if options:
arguments.append(options)

if outFormat:
arguments.append('-f {}'.format(outFormat))

arguments.append(inLayer.source())
arguments.append(output)

Expand Down
37 changes: 33 additions & 4 deletions python/plugins/processing/tests/GdalAlgorithmsTest.py
Expand Up @@ -717,16 +717,45 @@ def testContour(self):
'-b 1 -a elev -i 5.0 -snodata 0.0 -f "GPKG" ' +
source + ' ' +
outdir + '/check.gpkg'])
# fixed level contours
# with CREATE_3D
self.assertEqual(
alg.getConsoleCommands({'INPUT': source,
'BAND': 1,
'CREATE_3D': True,
'OUTPUT': outdir + '/check.shp'}, context, feedback),
['gdal_contour',
'-b 1 -a ELEV -i 10.0 -3d -f "ESRI Shapefile" ' +
source + ' ' +
outdir + '/check.shp'])
# with IGNORE_NODATA and OFFSET
self.assertEqual(
alg.getConsoleCommands({'INPUT': source,
'BAND': 1,
'IGNORE_NODATA': True,
'OFFSET': 100,
'OUTPUT': outdir + '/check.shp'}, context, feedback),
['gdal_contour',
'-b 1 -a ELEV -i 10.0 -inodata -off 100.0 -f "ESRI Shapefile" ' +
source + ' ' +
outdir + '/check.shp'])
# with additional command line parameters
self.assertEqual(
alg.getConsoleCommands({'INPUT': source,
'BAND': 1,
'EXTRA': '-e 3 -amin MIN_H',
'OUTPUT': outdir + '/check.shp'}, context, feedback),
['gdal_contour',
'-b 1 -a ELEV -i 10.0 -f "ESRI Shapefile" -e 3 -amin MIN_H ' +
source + ' ' +
outdir + '/check.shp'])
# obsolete OPTIONS param
self.assertEqual(
alg.getConsoleCommands({'INPUT': source,
'BAND': 1,
'FIELD_NAME': 'elev',
'INTERVAL': 0,
'OPTIONS': '-fl 100 125 150 200',
'OUTPUT': outdir + '/check.shp'}, context, feedback),
['gdal_contour',
'-b 1 -a elev -i 0.0 -fl 100 125 150 200 -f "ESRI Shapefile" ' +
'-b 1 -a ELEV -i 10.0 -f "ESRI Shapefile" -fl 100 125 150 200 ' +
source + ' ' +
outdir + '/check.shp'])

Expand Down

0 comments on commit 18a56f9

Please sign in to comment.