Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[processing][gdal] Fix parsing of creation options
Creation options must be specified one at a time - the
current approach causes them to be specified once embedded
in quotation marks, which is not valid input for gdal

(cherry-picked from 00bb177)
  • Loading branch information
nyalldawson committed Mar 22, 2018
1 parent 9dc4b04 commit 50c239b
Show file tree
Hide file tree
Showing 22 changed files with 29 additions and 41 deletions.
3 changes: 1 addition & 2 deletions python/plugins/processing/algs/gdal/ClipRasterByExtent.py
Expand Up @@ -132,8 +132,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
arguments.append(QgsRasterFileWriter.driverForExtension(os.path.splitext(out)[1]))

if options:
arguments.append('-co')
arguments.append(options)
arguments.extend(GdalUtils.parseCreationOptions(options))

arguments.append(inLayer.source())
arguments.append(out)
Expand Down
3 changes: 1 addition & 2 deletions python/plugins/processing/algs/gdal/ClipRasterByMask.py
Expand Up @@ -154,8 +154,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
arguments.append('-dstnodata {}'.format(nodata))

if options:
arguments.append('-co')
arguments.append(options)
arguments.extend(GdalUtils.parseCreationOptions(options))

arguments.append(inLayer.source())
arguments.append(out)
Expand Down
8 changes: 8 additions & 0 deletions python/plugins/processing/algs/gdal/GdalUtils.py
Expand Up @@ -389,3 +389,11 @@ def ogrLayerName(uri):
name = ly.GetName()
ds = None
return name

@staticmethod
def parseCreationOptions(value):
parts = value.split('|')
options = []
for p in parts:
options.extend(['-co', p])
return options
3 changes: 1 addition & 2 deletions python/plugins/processing/algs/gdal/GridAverage.py
Expand Up @@ -167,8 +167,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):

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

arguments.append(ogrLayer)
arguments.append(out)
Expand Down
3 changes: 1 addition & 2 deletions python/plugins/processing/algs/gdal/GridDataMetrics.py
Expand Up @@ -181,8 +181,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
options = self.parameterAsString(parameters, self.OPTIONS, context)

if options:
arguments.append('-co')
arguments.append(options)
arguments.extend(GdalUtils.parseCreationOptions(options))

arguments.append(ogrLayer)
arguments.append(out)
Expand Down
3 changes: 1 addition & 2 deletions python/plugins/processing/algs/gdal/GridInverseDistance.py
Expand Up @@ -190,8 +190,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):

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

arguments.append(ogrLayer)
arguments.append(out)
Expand Down
Expand Up @@ -175,8 +175,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):

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

arguments.append(ogrLayer)
arguments.append(out)
Expand Down
3 changes: 1 addition & 2 deletions python/plugins/processing/algs/gdal/GridLinear.py
Expand Up @@ -146,8 +146,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):

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

arguments.append(ogrLayer)
arguments.append(out)
Expand Down
3 changes: 1 addition & 2 deletions python/plugins/processing/algs/gdal/GridNearestNeighbor.py
Expand Up @@ -161,8 +161,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):

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

arguments.append(ogrLayer)
arguments.append(out)
Expand Down
3 changes: 1 addition & 2 deletions python/plugins/processing/algs/gdal/aspect.py
Expand Up @@ -125,7 +125,6 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):

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

return ['gdaldem', GdalUtils.escapeAndJoin(arguments)]
3 changes: 1 addition & 2 deletions python/plugins/processing/algs/gdal/hillshade.py
Expand Up @@ -160,7 +160,6 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):

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

return ['gdaldem', GdalUtils.escapeAndJoin(arguments)]
3 changes: 1 addition & 2 deletions python/plugins/processing/algs/gdal/merge.py
Expand Up @@ -152,8 +152,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):

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

arguments.append('-o')
arguments.append(out)
Expand Down
3 changes: 1 addition & 2 deletions python/plugins/processing/algs/gdal/nearblack.py
Expand Up @@ -112,7 +112,6 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):

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

return ['nearblack', GdalUtils.escapeAndJoin(arguments)]
3 changes: 1 addition & 2 deletions python/plugins/processing/algs/gdal/proximity.py
Expand Up @@ -170,8 +170,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
arguments.append(QgsRasterFileWriter.driverForExtension(os.path.splitext(out)[1]))

if options:
arguments.append('-co')
arguments.append(options)
arguments.extend(GdalUtils.parseCreationOptions(options))

arguments.append(inLayer.source())
arguments.append(out)
Expand Down
3 changes: 1 addition & 2 deletions python/plugins/processing/algs/gdal/rasterize.py
Expand Up @@ -214,8 +214,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
options = self.parameterAsString(parameters, self.OPTIONS, context)

if options:
arguments.append('-co')
arguments.append(options)
arguments.extend(GdalUtils.parseCreationOptions(options))

arguments.append(ogrLayer)
arguments.append(out)
Expand Down
3 changes: 1 addition & 2 deletions python/plugins/processing/algs/gdal/retile.py
Expand Up @@ -187,8 +187,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):

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

if self.parameterAsBool(parameters, self.DIR_FOR_ROW, context):
arguments.append('-pyramidOnly')
Expand Down
3 changes: 1 addition & 2 deletions python/plugins/processing/algs/gdal/slope.py
Expand Up @@ -129,7 +129,6 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):

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

return ['gdaldem', GdalUtils.escapeAndJoin(arguments)]
3 changes: 1 addition & 2 deletions python/plugins/processing/algs/gdal/tpi.py
Expand Up @@ -99,7 +99,6 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):

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

return ['gdaldem', GdalUtils.escapeAndJoin(arguments)]
3 changes: 1 addition & 2 deletions python/plugins/processing/algs/gdal/translate.py
Expand Up @@ -137,8 +137,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):

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

arguments.append(inLayer.source())
arguments.append(out)
Expand Down
3 changes: 1 addition & 2 deletions python/plugins/processing/algs/gdal/tri.py
Expand Up @@ -98,7 +98,6 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):

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

return ['gdaldem', GdalUtils.escapeAndJoin(arguments)]
Expand Up @@ -70,4 +70,4 @@ def value(self):
elif self.dialogType == DIALOG_BATCH:
return self.widget.text()
else:
return ' '.join(self.widget.options())
return '|'.join(self.widget.options())
3 changes: 1 addition & 2 deletions python/plugins/processing/algs/gdal/warp.py
Expand Up @@ -212,8 +212,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):

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

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

0 comments on commit 50c239b

Please sign in to comment.