Skip to content

Commit 00bb177

Browse files
committedMar 21, 2018
[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
1 parent 51ce2fb commit 00bb177

22 files changed

+29
-41
lines changed
 

‎python/plugins/processing/algs/gdal/ClipRasterByExtent.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,8 +132,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
132132
arguments.append(QgsRasterFileWriter.driverForExtension(os.path.splitext(out)[1]))
133133

134134
if options:
135-
arguments.append('-co')
136-
arguments.append(options)
135+
arguments.extend(GdalUtils.parseCreationOptions(options))
137136

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

‎python/plugins/processing/algs/gdal/ClipRasterByMask.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -154,8 +154,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
154154
arguments.append('-dstnodata {}'.format(nodata))
155155

156156
if options:
157-
arguments.append('-co')
158-
arguments.append(options)
157+
arguments.extend(GdalUtils.parseCreationOptions(options))
159158

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

‎python/plugins/processing/algs/gdal/GdalUtils.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -389,3 +389,11 @@ def ogrLayerName(uri):
389389
name = ly.GetName()
390390
ds = None
391391
return name
392+
393+
@staticmethod
394+
def parseCreationOptions(value):
395+
parts = value.split('|')
396+
options = []
397+
for p in parts:
398+
options.extend(['-co', p])
399+
return options

‎python/plugins/processing/algs/gdal/GridAverage.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -167,8 +167,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
167167

168168
options = self.parameterAsString(parameters, self.OPTIONS, context)
169169
if options:
170-
arguments.append('-co')
171-
arguments.append(options)
170+
arguments.extend(GdalUtils.parseCreationOptions(options))
172171

173172
arguments.append(ogrLayer)
174173
arguments.append(out)

‎python/plugins/processing/algs/gdal/GridDataMetrics.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,8 +181,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
181181
options = self.parameterAsString(parameters, self.OPTIONS, context)
182182

183183
if options:
184-
arguments.append('-co')
185-
arguments.append(options)
184+
arguments.extend(GdalUtils.parseCreationOptions(options))
186185

187186
arguments.append(ogrLayer)
188187
arguments.append(out)

‎python/plugins/processing/algs/gdal/GridInverseDistance.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -190,8 +190,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
190190

191191
options = self.parameterAsString(parameters, self.OPTIONS, context)
192192
if options:
193-
arguments.append('-co')
194-
arguments.append(options)
193+
arguments.extend(GdalUtils.parseCreationOptions(options))
195194

196195
arguments.append(ogrLayer)
197196
arguments.append(out)

‎python/plugins/processing/algs/gdal/GridInverseDistanceNearestNeighbor.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -175,8 +175,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
175175

176176
options = self.parameterAsString(parameters, self.OPTIONS, context)
177177
if options:
178-
arguments.append('-co')
179-
arguments.append(options)
178+
arguments.extend(GdalUtils.parseCreationOptions(options))
180179

181180
arguments.append(ogrLayer)
182181
arguments.append(out)

‎python/plugins/processing/algs/gdal/GridLinear.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -146,8 +146,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
146146

147147
options = self.parameterAsString(parameters, self.OPTIONS, context)
148148
if options:
149-
arguments.append('-co')
150-
arguments.append(options)
149+
arguments.extend(GdalUtils.parseCreationOptions(options))
151150

152151
arguments.append(ogrLayer)
153152
arguments.append(out)

‎python/plugins/processing/algs/gdal/GridNearestNeighbor.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -161,8 +161,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
161161

162162
options = self.parameterAsString(parameters, self.OPTIONS, context)
163163
if options:
164-
arguments.append('-co')
165-
arguments.append(options)
164+
arguments.extend(GdalUtils.parseCreationOptions(options))
166165

167166
arguments.append(ogrLayer)
168167
arguments.append(out)

‎python/plugins/processing/algs/gdal/aspect.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,6 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
125125

126126
options = self.parameterAsString(parameters, self.OPTIONS, context)
127127
if options:
128-
arguments.append('-co')
129-
arguments.append(options)
128+
arguments.extend(GdalUtils.parseCreationOptions(options))
130129

131130
return ['gdaldem', GdalUtils.escapeAndJoin(arguments)]

‎python/plugins/processing/algs/gdal/hillshade.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,6 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
160160

161161
options = self.parameterAsString(parameters, self.OPTIONS, context)
162162
if options:
163-
arguments.append('-co')
164-
arguments.append(options)
163+
arguments.extend(GdalUtils.parseCreationOptions(options))
165164

166165
return ['gdaldem', GdalUtils.escapeAndJoin(arguments)]

‎python/plugins/processing/algs/gdal/merge.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,8 +123,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
123123

124124
options = self.parameterAsString(parameters, self.OPTIONS, context)
125125
if options:
126-
arguments.append('-co')
127-
arguments.append(options)
126+
arguments.extend(GdalUtils.parseCreationOptions(options))
128127

129128
arguments.append('-o')
130129
arguments.append(out)

‎python/plugins/processing/algs/gdal/nearblack.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,6 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
112112

113113
options = self.parameterAsString(parameters, self.OPTIONS, context)
114114
if options:
115-
arguments.append('-co')
116-
arguments.append(options)
115+
arguments.extend(GdalUtils.parseCreationOptions(options))
117116

118117
return ['nearblack', GdalUtils.escapeAndJoin(arguments)]

‎python/plugins/processing/algs/gdal/proximity.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -170,8 +170,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
170170
arguments.append(QgsRasterFileWriter.driverForExtension(os.path.splitext(out)[1]))
171171

172172
if options:
173-
arguments.append('-co')
174-
arguments.append(options)
173+
arguments.extend(GdalUtils.parseCreationOptions(options))
175174

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

‎python/plugins/processing/algs/gdal/rasterize.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -214,8 +214,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
214214
options = self.parameterAsString(parameters, self.OPTIONS, context)
215215

216216
if options:
217-
arguments.append('-co')
218-
arguments.append(options)
217+
arguments.extend(GdalUtils.parseCreationOptions(options))
219218

220219
arguments.append(ogrLayer)
221220
arguments.append(out)

‎python/plugins/processing/algs/gdal/retile.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -187,8 +187,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
187187

188188
options = self.parameterAsString(parameters, self.OPTIONS, context)
189189
if options:
190-
arguments.append('-co')
191-
arguments.append(options)
190+
arguments.extend(GdalUtils.parseCreationOptions(options))
192191

193192
if self.parameterAsBool(parameters, self.DIR_FOR_ROW, context):
194193
arguments.append('-pyramidOnly')

‎python/plugins/processing/algs/gdal/slope.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,6 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
129129

130130
options = self.parameterAsString(parameters, self.OPTIONS, context)
131131
if options:
132-
arguments.append('-co')
133-
arguments.append(options)
132+
arguments.extend(GdalUtils.parseCreationOptions(options))
134133

135134
return ['gdaldem', GdalUtils.escapeAndJoin(arguments)]

‎python/plugins/processing/algs/gdal/tpi.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,6 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
9999

100100
options = self.parameterAsString(parameters, self.OPTIONS, context)
101101
if options:
102-
arguments.append('-co')
103-
arguments.append(options)
102+
arguments.extend(GdalUtils.parseCreationOptions(options))
104103

105104
return ['gdaldem', GdalUtils.escapeAndJoin(arguments)]

‎python/plugins/processing/algs/gdal/translate.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,8 +137,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
137137

138138
options = self.parameterAsString(parameters, self.OPTIONS, context)
139139
if options:
140-
arguments.append('-co')
141-
arguments.append(options)
140+
arguments.extend(GdalUtils.parseCreationOptions(options))
142141

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

‎python/plugins/processing/algs/gdal/tri.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,6 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
9898

9999
options = self.parameterAsString(parameters, self.OPTIONS, context)
100100
if options:
101-
arguments.append('-co')
102-
arguments.append(options)
101+
arguments.extend(GdalUtils.parseCreationOptions(options))
103102

104103
return ['gdaldem', GdalUtils.escapeAndJoin(arguments)]

‎python/plugins/processing/algs/gdal/ui/RasterOptionsWidget.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,4 +70,4 @@ def value(self):
7070
elif self.dialogType == DIALOG_BATCH:
7171
return self.widget.text()
7272
else:
73-
return ' '.join(self.widget.options())
73+
return '|'.join(self.widget.options())

‎python/plugins/processing/algs/gdal/warp.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -212,8 +212,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
212212

213213
options = self.parameterAsString(parameters, self.OPTIONS, context)
214214
if options:
215-
arguments.append('-co')
216-
arguments.append(options)
215+
arguments.extend(GdalUtils.parseCreationOptions(options))
217216

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

0 commit comments

Comments
 (0)
Please sign in to comment.