mirror of
https://github.com/qgis/QGIS.git
synced 2025-12-04 00:06:46 -05:00
[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
This commit is contained in:
parent
51ce2fb79e
commit
00bb177f3d
@ -132,8 +132,7 @@ class ClipRasterByExtent(GdalAlgorithm):
|
||||
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)
|
||||
|
||||
@ -154,8 +154,7 @@ class ClipRasterByMask(GdalAlgorithm):
|
||||
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)
|
||||
|
||||
@ -389,3 +389,11 @@ class GdalUtils:
|
||||
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
|
||||
|
||||
@ -167,8 +167,7 @@ class GridAverage(GdalAlgorithm):
|
||||
|
||||
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)
|
||||
|
||||
@ -181,8 +181,7 @@ class GridDataMetrics(GdalAlgorithm):
|
||||
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)
|
||||
|
||||
@ -190,8 +190,7 @@ class GridInverseDistance(GdalAlgorithm):
|
||||
|
||||
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)
|
||||
|
||||
@ -175,8 +175,7 @@ class GridInverseDistanceNearestNeighbor(GdalAlgorithm):
|
||||
|
||||
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)
|
||||
|
||||
@ -146,8 +146,7 @@ class GridLinear(GdalAlgorithm):
|
||||
|
||||
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)
|
||||
|
||||
@ -161,8 +161,7 @@ class GridNearestNeighbor(GdalAlgorithm):
|
||||
|
||||
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)
|
||||
|
||||
@ -125,7 +125,6 @@ class aspect(GdalAlgorithm):
|
||||
|
||||
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)]
|
||||
|
||||
@ -160,7 +160,6 @@ class hillshade(GdalAlgorithm):
|
||||
|
||||
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)]
|
||||
|
||||
@ -123,8 +123,7 @@ class merge(GdalAlgorithm):
|
||||
|
||||
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)
|
||||
|
||||
@ -112,7 +112,6 @@ class nearblack(GdalAlgorithm):
|
||||
|
||||
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)]
|
||||
|
||||
@ -170,8 +170,7 @@ class proximity(GdalAlgorithm):
|
||||
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)
|
||||
|
||||
@ -214,8 +214,7 @@ class rasterize(GdalAlgorithm):
|
||||
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)
|
||||
|
||||
@ -187,8 +187,7 @@ class retile(GdalAlgorithm):
|
||||
|
||||
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')
|
||||
|
||||
@ -129,7 +129,6 @@ class slope(GdalAlgorithm):
|
||||
|
||||
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)]
|
||||
|
||||
@ -99,7 +99,6 @@ class tpi(GdalAlgorithm):
|
||||
|
||||
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)]
|
||||
|
||||
@ -137,8 +137,7 @@ class translate(GdalAlgorithm):
|
||||
|
||||
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)
|
||||
|
||||
@ -98,7 +98,6 @@ class tri(GdalAlgorithm):
|
||||
|
||||
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)]
|
||||
|
||||
@ -70,4 +70,4 @@ class RasterOptionsWidgetWrapper(WidgetWrapper):
|
||||
elif self.dialogType == DIALOG_BATCH:
|
||||
return self.widget.text()
|
||||
else:
|
||||
return ' '.join(self.widget.options())
|
||||
return '|'.join(self.widget.options())
|
||||
|
||||
@ -212,8 +212,7 @@ class warp(GdalAlgorithm):
|
||||
|
||||
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)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user