Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[processing] allow passing additional command line parameters to GDAL algorithms #30377

Merged
merged 28 commits into from
Jun 26, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
7c06db6
allow to pass additional command-line parameters to aspect algorithm
alexbruy Jun 24, 2019
d40d040
allow to pass additional parameters to the clip raster by extent
alexbruy Jun 24, 2019
0128135
allow to pass additional parameters to the clip raster by mask algorithm
alexbruy Jun 24, 2019
c64c294
fix not used creation options parameter in the color relief algorithm…
alexbruy Jun 24, 2019
18a56f9
allow pass additional parameters in the contour algorithm
alexbruy Jun 24, 2019
45b12a7
support for additional command line parameters and creation options in
alexbruy Jun 24, 2019
c0c16cd
additional parameters for gdaladdo algorithm
alexbruy Jun 24, 2019
5b27b72
allow additional parameters for gdal_calc
alexbruy Jun 24, 2019
1e7704a
additional parameters support in gdalinfo algorithm
alexbruy Jun 24, 2019
629f299
additional parameters support for grid average algorithm
alexbruy Jun 24, 2019
3c03629
additional parameters for grid data metrics algorithm
alexbruy Jun 24, 2019
10062dc
additional parameters support for grid inverse distance
alexbruy Jun 24, 2019
c351bb8
additional command line parameters for grid IDW NN
alexbruy Jun 24, 2019
d1562a4
additional parameters for grid linear
alexbruy Jun 24, 2019
ceb0633
additional parameters for grid nearest neighbor
alexbruy Jun 24, 2019
97806ea
additional parameters for hillshade algorithm
alexbruy Jun 24, 2019
629afb6
cover gdal merge algorithm with test and add support for additional
alexbruy Jun 24, 2019
09102c7
more tests for nearblack algorithm
alexbruy Jun 24, 2019
1d12620
additional parameters for pansarpening algorithm
alexbruy Jun 24, 2019
d66914a
additional parameters for polygonize algorithm
alexbruy Jun 24, 2019
c313f1d
additional parameters for proximity algorithm
alexbruy Jun 24, 2019
27aa811
additional parameters for retile algorithm
alexbruy Jun 24, 2019
61445ad
additional parameters for sieve algorithm
alexbruy Jun 24, 2019
3ed47c3
add test for slope algorithm and allow additional command line
alexbruy Jun 24, 2019
57547a7
additional parameters for translae algorithm
alexbruy Jun 24, 2019
684083c
additional parameters for buildvrt algorithm
alexbruy Jun 25, 2019
f16f7f7
reorganize gdal provider tests
alexbruy Jun 25, 2019
543673c
also split YAML-based tests into raster and vector and run them as part
alexbruy Jun 25, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions python/plugins/processing/algs/gdal/ClipRasterByExtent.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ class ClipRasterByExtent(GdalAlgorithm):
NODATA = 'NODATA'
OPTIONS = 'OPTIONS'
DATA_TYPE = 'DATA_TYPE'
EXTRA = 'EXTRA'
OUTPUT = 'OUTPUT'

def __init__(self):
Expand Down Expand Up @@ -85,6 +86,13 @@ def initAlgorithm(self, config=None):
dataType_param.setFlags(dataType_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced)
self.addParameter(dataType_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)

self.addParameter(QgsProcessingParameterRasterDestination(self.OUTPUT,
self.tr('Clipped (extent)')))

Expand Down Expand Up @@ -140,6 +148,10 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
if options:
arguments.extend(GdalUtils.parseCreationOptions(options))

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

arguments.append(inLayer.source())
arguments.append(out)

Expand Down
14 changes: 14 additions & 0 deletions python/plugins/processing/algs/gdal/ClipRasterByMask.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ class ClipRasterByMask(GdalAlgorithm):
OPTIONS = 'OPTIONS'
DATA_TYPE = 'DATA_TYPE'
MULTITHREADING = 'MULTITHREADING'
EXTRA = 'EXTRA'
OUTPUT = 'OUTPUT'

def __init__(self):
Expand Down Expand Up @@ -106,11 +107,13 @@ def initAlgorithm(self, config=None):
type=QgsProcessingParameterNumber.Double,
defaultValue=None,
optional=True))

multithreading_param = QgsProcessingParameterBoolean(self.MULTITHREADING,
self.tr('Use multithreaded warping implementation'),
defaultValue=False)
multithreading_param.setFlags(multithreading_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced)
self.addParameter(multithreading_param)

options_param = QgsProcessingParameterString(self.OPTIONS,
self.tr('Additional creation options'),
defaultValue='',
Expand All @@ -129,6 +132,13 @@ def initAlgorithm(self, config=None):
dataType_param.setFlags(dataType_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced)
self.addParameter(dataType_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)

self.addParameter(QgsProcessingParameterRasterDestination(self.OUTPUT,
self.tr('Clipped (mask)')))

Expand Down Expand Up @@ -223,6 +233,10 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
if options:
arguments.extend(GdalUtils.parseCreationOptions(options))

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

arguments.append(inLayer.source())
arguments.append(out)

Expand Down
22 changes: 20 additions & 2 deletions python/plugins/processing/algs/gdal/ColorRelief.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ class ColorRelief(GdalAlgorithm):
COLOR_TABLE = 'COLOR_TABLE'
MATCH_MODE = 'MATCH_MODE'
OPTIONS = 'OPTIONS'
EXTRA = 'EXTRA'
OUTPUT = 'OUTPUT'

def __init__(self):
Expand All @@ -69,17 +70,24 @@ def initAlgorithm(self, config=None):
self.tr('Matching mode'),
options=[i[0] for i in self.modes],
defaultValue=2))

options_param = QgsProcessingParameterString(self.OPTIONS,
self.tr('Additional creation options'),
defaultValue='',
optional=True)

options_param.setFlags(options_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced)
options_param.setMetadata({
'widget_wrapper': {
'class': 'processing.algs.gdal.ui.RasterOptionsWidget.RasterOptionsWidgetWrapper'}})
self.addParameter(options_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)

self.addParameter(QgsProcessingParameterRasterDestination(self.OUTPUT, self.tr('Color relief')))

def name(self):
Expand Down Expand Up @@ -119,6 +127,16 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
if self.parameterAsBoolean(parameters, self.COMPUTE_EDGES, context):
arguments.append('-compute_edges')

arguments.append(self.modes[self.parameterAsEnum(parameters, self.MATCH_MODE, context)][1])
mode = self.modes[self.parameterAsEnum(parameters, self.MATCH_MODE, context)][1]
if mode != '':
arguments.append(mode)

options = self.parameterAsString(parameters, self.OPTIONS, context)
if options:
arguments.extend(GdalUtils.parseCreationOptions(options))

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

return [self.commandName(), GdalUtils.escapeAndJoin(arguments)]
12 changes: 12 additions & 0 deletions python/plugins/processing/algs/gdal/GridAverage.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ class GridAverage(GdalAlgorithm):
ANGLE = 'ANGLE'
NODATA = 'NODATA'
OPTIONS = 'OPTIONS'
EXTRA = 'EXTRA'
DATA_TYPE = 'DATA_TYPE'
OUTPUT = 'OUTPUT'

Expand Down Expand Up @@ -108,6 +109,13 @@ def initAlgorithm(self, config=None):
'class': 'processing.algs.gdal.ui.RasterOptionsWidget.RasterOptionsWidgetWrapper'}})
self.addParameter(options_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)

dataType_param = QgsProcessingParameterEnum(self.DATA_TYPE,
self.tr('Output data type'),
self.TYPES,
Expand Down Expand Up @@ -169,6 +177,10 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
if options:
arguments.extend(GdalUtils.parseCreationOptions(options))

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

arguments.append(ogrLayer)
arguments.append(out)

Expand Down
12 changes: 12 additions & 0 deletions python/plugins/processing/algs/gdal/GridDataMetrics.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ class GridDataMetrics(GdalAlgorithm):
ANGLE = 'ANGLE'
NODATA = 'NODATA'
OPTIONS = 'OPTIONS'
EXTRA = 'EXTRA'
DATA_TYPE = 'DATA_TYPE'
OUTPUT = 'OUTPUT'

Expand Down Expand Up @@ -122,6 +123,13 @@ def initAlgorithm(self, config=None):
'class': 'processing.algs.gdal.ui.RasterOptionsWidget.RasterOptionsWidgetWrapper'}})
self.addParameter(options_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)

dataType_param = QgsProcessingParameterEnum(self.DATA_TYPE,
self.tr('Output data type'),
self.TYPES,
Expand Down Expand Up @@ -183,6 +191,10 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
if options:
arguments.extend(GdalUtils.parseCreationOptions(options))

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

arguments.append(ogrLayer)
arguments.append(out)

Expand Down
12 changes: 12 additions & 0 deletions python/plugins/processing/algs/gdal/GridInverseDistance.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ class GridInverseDistance(GdalAlgorithm):
ANGLE = 'ANGLE'
NODATA = 'NODATA'
OPTIONS = 'OPTIONS'
EXTRA = 'EXTRA'
DATA_TYPE = 'DATA_TYPE'
OUTPUT = 'OUTPUT'

Expand Down Expand Up @@ -128,6 +129,13 @@ def initAlgorithm(self, config=None):
'class': 'processing.algs.gdal.ui.RasterOptionsWidget.RasterOptionsWidgetWrapper'}})
self.addParameter(options_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)

dataType_param = QgsProcessingParameterEnum(self.DATA_TYPE,
self.tr('Output data type'),
self.TYPES,
Expand Down Expand Up @@ -192,6 +200,10 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
if options:
arguments.extend(GdalUtils.parseCreationOptions(options))

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

arguments.append(ogrLayer)
arguments.append(out)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ class GridInverseDistanceNearestNeighbor(GdalAlgorithm):
MIN_POINTS = 'MIN_POINTS'
NODATA = 'NODATA'
OPTIONS = 'OPTIONS'
EXTRA = 'EXTRA'
DATA_TYPE = 'DATA_TYPE'
OUTPUT = 'OUTPUT'

Expand Down Expand Up @@ -115,6 +116,13 @@ def initAlgorithm(self, config=None):
'class': 'processing.algs.gdal.ui.RasterOptionsWidget.RasterOptionsWidgetWrapper'}})
self.addParameter(options_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)

dataType_param = QgsProcessingParameterEnum(self.DATA_TYPE,
self.tr('Output data type'),
self.TYPES,
Expand Down Expand Up @@ -177,6 +185,10 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
if options:
arguments.extend(GdalUtils.parseCreationOptions(options))

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

arguments.append(ogrLayer)
arguments.append(out)

Expand Down
13 changes: 12 additions & 1 deletion python/plugins/processing/algs/gdal/GridLinear.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
__date__ = 'September 2017'
__copyright__ = '(C) 2017, Alexander Bruy'


import os

from qgis.PyQt.QtGui import QIcon
Expand All @@ -48,6 +47,7 @@ class GridLinear(GdalAlgorithm):
RADIUS = 'RADIUS'
NODATA = 'NODATA'
OPTIONS = 'OPTIONS'
EXTRA = 'EXTRA'
DATA_TYPE = 'DATA_TYPE'
OUTPUT = 'OUTPUT'

Expand Down Expand Up @@ -90,6 +90,13 @@ def initAlgorithm(self, config=None):
'class': 'processing.algs.gdal.ui.RasterOptionsWidget.RasterOptionsWidgetWrapper'}})
self.addParameter(options_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)

dataType_param = QgsProcessingParameterEnum(self.DATA_TYPE,
self.tr('Output data type'),
self.TYPES,
Expand Down Expand Up @@ -148,6 +155,10 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
if options:
arguments.extend(GdalUtils.parseCreationOptions(options))

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

arguments.append(ogrLayer)
arguments.append(out)

Expand Down
12 changes: 12 additions & 0 deletions python/plugins/processing/algs/gdal/GridNearestNeighbor.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ class GridNearestNeighbor(GdalAlgorithm):
ANGLE = 'ANGLE'
NODATA = 'NODATA'
OPTIONS = 'OPTIONS'
EXTRA = 'EXTRA'
DATA_TYPE = 'DATA_TYPE'
OUTPUT = 'OUTPUT'

Expand Down Expand Up @@ -103,6 +104,13 @@ def initAlgorithm(self, config=None):
'class': 'processing.algs.gdal.ui.RasterOptionsWidget.RasterOptionsWidgetWrapper'}})
self.addParameter(options_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)

dataType_param = QgsProcessingParameterEnum(self.DATA_TYPE,
self.tr('Output data type'),
self.TYPES,
Expand Down Expand Up @@ -163,6 +171,10 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
if options:
arguments.extend(GdalUtils.parseCreationOptions(options))

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

arguments.append(ogrLayer)
arguments.append(out)

Expand Down
12 changes: 12 additions & 0 deletions python/plugins/processing/algs/gdal/aspect.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ class aspect(GdalAlgorithm):
TRIG_ANGLE = 'TRIG_ANGLE'
ZERO_FLAT = 'ZERO_FLAT'
OPTIONS = 'OPTIONS'
EXTRA = 'EXTRA'
OUTPUT = 'OUTPUT'

def __init__(self):
Expand Down Expand Up @@ -80,6 +81,13 @@ def initAlgorithm(self, config=None):
'class': 'processing.algs.gdal.ui.RasterOptionsWidget.RasterOptionsWidgetWrapper'}})
self.addParameter(options_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)

self.addParameter(QgsProcessingParameterRasterDestination(self.OUTPUT, self.tr('Aspect')))

def name(self):
Expand Down Expand Up @@ -131,4 +139,8 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
if options:
arguments.extend(GdalUtils.parseCreationOptions(options))

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

return [self.commandName(), GdalUtils.escapeAndJoin(arguments)]
Loading