Skip to content

Commit

Permalink
[processing][gdal] Ensure that GDAL algs output the CORRECT
Browse files Browse the repository at this point in the history
generated filename for outputs

Previously they were just echoing the input parameter value,
which isn't always a string and accordingly was broken for
temporary outputs. This caused models to break when the output
of a GDAL algorithm was used in a subsequent model step.

(cherry picked from commit c93775f)
  • Loading branch information
nyalldawson committed Feb 7, 2019
1 parent b5eb321 commit 93c135f
Show file tree
Hide file tree
Showing 40 changed files with 41 additions and 0 deletions.
1 change: 1 addition & 0 deletions python/plugins/processing/algs/gdal/Buffer.py
Expand Up @@ -115,6 +115,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
dissolve = self.parameterAsBool(parameters, self.DISSOLVE, context)
options = self.parameterAsString(parameters, self.OPTIONS, context)
outFile = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
self.setOutputValue(self.OUTPUT, outFile)

output, outputFormat = GdalUtils.ogrConnectionStringAndFormat(outFile, context)

Expand Down
1 change: 1 addition & 0 deletions python/plugins/processing/algs/gdal/ClipRasterByExtent.py
Expand Up @@ -121,6 +121,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
nodata = None
options = self.parameterAsString(parameters, self.OPTIONS, context)
out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
self.setOutputValue(self.OUTPUT, out)

arguments = []
arguments.append('-projwin')
Expand Down
1 change: 1 addition & 0 deletions python/plugins/processing/algs/gdal/ClipRasterByMask.py
Expand Up @@ -136,6 +136,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
nodata = None
options = self.parameterAsString(parameters, self.OPTIONS, context)
out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
self.setOutputValue(self.OUTPUT, out)

arguments = []

Expand Down
1 change: 1 addition & 0 deletions python/plugins/processing/algs/gdal/ClipVectorByExtent.py
Expand Up @@ -87,6 +87,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
extent = self.parameterAsExtent(parameters, self.EXTENT, context, source.sourceCrs())
options = self.parameterAsString(parameters, self.OPTIONS, context)
outFile = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
self.setOutputValue(self.OUTPUT, outFile)

output, outputFormat = GdalUtils.ogrConnectionStringAndFormat(outFile, context)

Expand Down
1 change: 1 addition & 0 deletions python/plugins/processing/algs/gdal/ClipVectorByMask.py
Expand Up @@ -85,6 +85,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
maskLayer, maskLayerName = self.getOgrCompatibleSource(self.MASK, parameters, context, feedback, executing)
options = self.parameterAsString(parameters, self.OPTIONS, context)
outFile = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
self.setOutputValue(self.OUTPUT, outFile)

output, outputFormat = GdalUtils.ogrConnectionStringAndFormat(outFile, context)

Expand Down
1 change: 1 addition & 0 deletions python/plugins/processing/algs/gdal/ColorRelief.py
Expand Up @@ -111,6 +111,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
arguments.append(self.parameterAsFile(parameters, self.COLOR_TABLE, context))

out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
self.setOutputValue(self.OUTPUT, out)
arguments.append(out)

arguments.append('-of')
Expand Down
1 change: 1 addition & 0 deletions python/plugins/processing/algs/gdal/Dissolve.py
Expand Up @@ -124,6 +124,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):

options = self.parameterAsString(parameters, self.OPTIONS, context)
outFile = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
self.setOutputValue(self.OUTPUT, outFile)

output, outputFormat = GdalUtils.ogrConnectionStringAndFormat(outFile, context)

Expand Down
1 change: 1 addition & 0 deletions python/plugins/processing/algs/gdal/ExecuteSql.py
Expand Up @@ -93,6 +93,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
sql = self.parameterAsString(parameters, self.SQL, context)
options = self.parameterAsString(parameters, self.OPTIONS, context)
outFile = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
self.setOutputValue(self.OUTPUT, outFile)

output, outputFormat = GdalUtils.ogrConnectionStringAndFormat(outFile, context)

Expand Down
1 change: 1 addition & 0 deletions python/plugins/processing/algs/gdal/GridAverage.py
Expand Up @@ -165,6 +165,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
arguments.append(self.TYPES[self.parameterAsEnum(parameters, self.DATA_TYPE, context)])

out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
self.setOutputValue(self.OUTPUT, out)
arguments.append('-of')
arguments.append(QgsRasterFileWriter.driverForExtension(os.path.splitext(out)[1]))

Expand Down
1 change: 1 addition & 0 deletions python/plugins/processing/algs/gdal/GridDataMetrics.py
Expand Up @@ -179,6 +179,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
arguments.append(self.TYPES[self.parameterAsEnum(parameters, self.DATA_TYPE, context)])

out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
self.setOutputValue(self.OUTPUT, out)
arguments.append('-of')
arguments.append(QgsRasterFileWriter.driverForExtension(os.path.splitext(out)[1]))
options = self.parameterAsString(parameters, self.OPTIONS, context)
Expand Down
1 change: 1 addition & 0 deletions python/plugins/processing/algs/gdal/GridInverseDistance.py
Expand Up @@ -188,6 +188,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
arguments.append(self.TYPES[self.parameterAsEnum(parameters, self.DATA_TYPE, context)])

out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
self.setOutputValue(self.OUTPUT, out)
arguments.append('-of')
arguments.append(QgsRasterFileWriter.driverForExtension(os.path.splitext(out)[1]))

Expand Down
Expand Up @@ -173,6 +173,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
arguments.append(self.TYPES[self.parameterAsEnum(parameters, self.DATA_TYPE, context)])

out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
self.setOutputValue(self.OUTPUT, out)
arguments.append('-of')
arguments.append(QgsRasterFileWriter.driverForExtension(os.path.splitext(out)[1]))

Expand Down
1 change: 1 addition & 0 deletions python/plugins/processing/algs/gdal/GridLinear.py
Expand Up @@ -144,6 +144,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
arguments.append(self.TYPES[self.parameterAsEnum(parameters, self.DATA_TYPE, context)])

out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
self.setOutputValue(self.OUTPUT, out)
arguments.append('-of')
arguments.append(QgsRasterFileWriter.driverForExtension(os.path.splitext(out)[1]))

Expand Down
1 change: 1 addition & 0 deletions python/plugins/processing/algs/gdal/GridNearestNeighbor.py
Expand Up @@ -159,6 +159,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
arguments.append(self.TYPES[self.parameterAsEnum(parameters, self.DATA_TYPE, context)])

out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
self.setOutputValue(self.OUTPUT, out)
arguments.append('-of')
arguments.append(QgsRasterFileWriter.driverForExtension(os.path.splitext(out)[1]))

Expand Down
1 change: 1 addition & 0 deletions python/plugins/processing/algs/gdal/OffsetCurve.py
Expand Up @@ -97,6 +97,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
distance = self.parameterAsDouble(parameters, self.DISTANCE, context)
options = self.parameterAsString(parameters, self.OPTIONS, context)
outFile = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
self.setOutputValue(self.OUTPUT, outFile)

output, outputFormat = GdalUtils.ogrConnectionStringAndFormat(outFile, context)

Expand Down
1 change: 1 addition & 0 deletions python/plugins/processing/algs/gdal/OneSideBuffer.py
Expand Up @@ -126,6 +126,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
dissolve = self.parameterAsBool(parameters, self.DISSOLVE, context)
options = self.parameterAsString(parameters, self.OPTIONS, context)
outFile = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
self.setOutputValue(self.OUTPUT, outFile)

output, outputFormat = GdalUtils.ogrConnectionStringAndFormat(outFile, context)

Expand Down
1 change: 1 addition & 0 deletions python/plugins/processing/algs/gdal/PointsAlongLines.py
Expand Up @@ -100,6 +100,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
distance = self.parameterAsDouble(parameters, self.DISTANCE, context)
geometry = self.parameterAsString(parameters, self.GEOMETRY, context)
outFile = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
self.setOutputValue(self.OUTPUT, outFile)
options = self.parameterAsString(parameters, self.OPTIONS, context)

output, outputFormat = GdalUtils.ogrConnectionStringAndFormat(outFile, context)
Expand Down
1 change: 1 addition & 0 deletions python/plugins/processing/algs/gdal/aspect.py
Expand Up @@ -110,6 +110,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):

out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
arguments.append(out)
self.setOutputValue(self.OUTPUT, out)

arguments.append('-of')
arguments.append(QgsRasterFileWriter.driverForExtension(os.path.splitext(out)[1]))
Expand Down
1 change: 1 addition & 0 deletions python/plugins/processing/algs/gdal/buildvrt.py
Expand Up @@ -171,6 +171,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
arguments.append(list_file)

out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
self.setOutputValue(self.OUTPUT, out)
arguments.append(out)

return [self.commandName(), GdalUtils.escapeAndJoin(arguments)]
1 change: 1 addition & 0 deletions python/plugins/processing/algs/gdal/contour.py
Expand Up @@ -147,6 +147,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
offset = self.parameterAsDouble(parameters, self.OFFSET, context)

outFile = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
self.setOutputValue(self.OUTPUT, outFile)
output, outFormat = GdalUtils.ogrConnectionStringAndFormat(outFile, context)

arguments = []
Expand Down
1 change: 1 addition & 0 deletions python/plugins/processing/algs/gdal/fillnodata.py
Expand Up @@ -119,6 +119,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
arguments.append('-mask {}'.format(mask.source()))

out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
self.setOutputValue(self.OUTPUT, out)
arguments.append('-of')
arguments.append(QgsRasterFileWriter.driverForExtension(os.path.splitext(out)[1]))

Expand Down
1 change: 1 addition & 0 deletions python/plugins/processing/algs/gdal/gdalcalc.py
Expand Up @@ -180,6 +180,7 @@ def commandName(self):

def getConsoleCommands(self, parameters, context, feedback, executing=True):
out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
self.setOutputValue(self.OUTPUT, out)
formula = self.parameterAsString(parameters, self.FORMULA, context)
if self.NO_DATA in parameters and parameters[self.NO_DATA] is not None:
noData = self.parameterAsDouble(parameters, self.NO_DATA, context)
Expand Down
1 change: 1 addition & 0 deletions python/plugins/processing/algs/gdal/gdaltindex.py
Expand Up @@ -128,6 +128,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
target_crs = self.parameterAsCrs(parameters, self.TARGET_CRS, context)

outFile = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
self.setOutputValue(self.OUTPUT, outFile)
output, outFormat = GdalUtils.ogrConnectionStringAndFormat(outFile, context)

layers = []
Expand Down
1 change: 1 addition & 0 deletions python/plugins/processing/algs/gdal/hillshade.py
Expand Up @@ -137,6 +137,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
arguments.append(inLayer.source())

out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
self.setOutputValue(self.OUTPUT, out)
arguments.append(out)

arguments.append('-of')
Expand Down
1 change: 1 addition & 0 deletions python/plugins/processing/algs/gdal/merge.py
Expand Up @@ -129,6 +129,7 @@ def commandName(self):

def getConsoleCommands(self, parameters, context, feedback, executing=True):
out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
self.setOutputValue(self.OUTPUT, out)

arguments = []
if self.parameterAsBool(parameters, self.PCT, context):
Expand Down
1 change: 1 addition & 0 deletions python/plugins/processing/algs/gdal/nearblack.py
Expand Up @@ -105,6 +105,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
arguments.append(inLayer.source())

out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
self.setOutputValue(self.OUTPUT, out)
arguments.append('-of')
arguments.append(QgsRasterFileWriter.driverForExtension(os.path.splitext(out)[1]))
arguments.append('-o')
Expand Down
1 change: 1 addition & 0 deletions python/plugins/processing/algs/gdal/ogr2ogr.py
Expand Up @@ -79,6 +79,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
ogrLayer, layerName = self.getOgrCompatibleSource(self.INPUT, parameters, context, feedback, executing)
options = self.parameterAsString(parameters, self.OPTIONS, context)
outFile = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
self.setOutputValue(self.OUTPUT, outFile)

output, outputFormat = GdalUtils.ogrConnectionStringAndFormat(outFile, context)

Expand Down
1 change: 1 addition & 0 deletions python/plugins/processing/algs/gdal/pct2rgb.py
Expand Up @@ -91,6 +91,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
arguments.append(inLayer.source())

out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
self.setOutputValue(self.OUTPUT, out)
arguments.append(out)

arguments.append('-of')
Expand Down
1 change: 1 addition & 0 deletions python/plugins/processing/algs/gdal/polygonize.py
Expand Up @@ -99,6 +99,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
arguments.append(inLayer.source())

outFile = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
self.setOutputValue(self.OUTPUT, outFile)
output, outFormat = GdalUtils.ogrConnectionStringAndFormat(outFile, context)
arguments.append(output)

Expand Down
1 change: 1 addition & 0 deletions python/plugins/processing/algs/gdal/proximity.py
Expand Up @@ -149,6 +149,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
nodata = None
options = self.parameterAsString(parameters, self.OPTIONS, context)
out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
self.setOutputValue(self.OUTPUT, out)

arguments = []
arguments.append('-srcband')
Expand Down
1 change: 1 addition & 0 deletions python/plugins/processing/algs/gdal/rasterize.py
Expand Up @@ -208,6 +208,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
arguments.append(self.TYPES[self.parameterAsEnum(parameters, self.DATA_TYPE, context)])

out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
self.setOutputValue(self.OUTPUT, out)
arguments.append('-of')
arguments.append(QgsRasterFileWriter.driverForExtension(os.path.splitext(out)[1]))
options = self.parameterAsString(parameters, self.OPTIONS, context)
Expand Down
1 change: 1 addition & 0 deletions python/plugins/processing/algs/gdal/rearrange_bands.py
Expand Up @@ -114,6 +114,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))

out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
self.setOutputValue(self.OUTPUT, out)

arguments = []

Expand Down
1 change: 1 addition & 0 deletions python/plugins/processing/algs/gdal/rgb2pct.py
Expand Up @@ -86,6 +86,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
arguments.append(str(self.parameterAsInt(parameters, self.NCOLORS, context)))

out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
self.setOutputValue(self.OUTPUT, out)
arguments.append('-of')
arguments.append(QgsRasterFileWriter.driverForExtension(os.path.splitext(out)[1]))
raster = self.parameterAsRasterLayer(parameters, self.INPUT, context)
Expand Down
1 change: 1 addition & 0 deletions python/plugins/processing/algs/gdal/roughness.py
Expand Up @@ -99,6 +99,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
arguments.append(inLayer.source())

out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
self.setOutputValue(self.OUTPUT, out)
arguments.append(out)

arguments.append('-of')
Expand Down
1 change: 1 addition & 0 deletions python/plugins/processing/algs/gdal/sieve.py
Expand Up @@ -109,6 +109,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
arguments.append('-mask {}'.format(mask.source()))

out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
self.setOutputValue(self.OUTPUT, out)
arguments.append('-of')
arguments.append(QgsRasterFileWriter.driverForExtension(os.path.splitext(out)[1]))

Expand Down
1 change: 1 addition & 0 deletions python/plugins/processing/algs/gdal/slope.py
Expand Up @@ -114,6 +114,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
arguments.append(inLayer.source())

out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
self.setOutputValue(self.OUTPUT, out)
arguments.append(out)

arguments.append('-of')
Expand Down
1 change: 1 addition & 0 deletions python/plugins/processing/algs/gdal/tpi.py
Expand Up @@ -97,6 +97,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):

arguments.append(inLayer.source())
out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
self.setOutputValue(self.OUTPUT, out)
arguments.append(out)

arguments.append('-b')
Expand Down
1 change: 1 addition & 0 deletions python/plugins/processing/algs/gdal/translate.py
Expand Up @@ -120,6 +120,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))

out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
self.setOutputValue(self.OUTPUT, out)
if self.NODATA in parameters and parameters[self.NODATA] is not None:
nodata = self.parameterAsDouble(parameters, self.NODATA, context)
else:
Expand Down
1 change: 1 addition & 0 deletions python/plugins/processing/algs/gdal/tri.py
Expand Up @@ -96,6 +96,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):

arguments.append(inLayer.source())
out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
self.setOutputValue(self.OUTPUT, out)
arguments.append(out)

arguments.append('-b')
Expand Down
2 changes: 2 additions & 0 deletions python/plugins/processing/algs/gdal/warp.py
Expand Up @@ -180,6 +180,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))

out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
self.setOutputValue(self.OUTPUT, out)
sourceCrs = self.parameterAsCrs(parameters, self.SOURCE_CRS, context)
targetCrs = self.parameterAsCrs(parameters, self.TARGET_CRS, context)
if self.NODATA in parameters and parameters[self.NODATA] is not None:
Expand Down Expand Up @@ -230,6 +231,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
arguments.append('-ot ' + self.TYPES[data_type])

out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
self.setOutputValue(self.OUTPUT, out)
arguments.append('-of')
arguments.append(QgsRasterFileWriter.driverForExtension(os.path.splitext(out)[1]))

Expand Down

0 comments on commit 93c135f

Please sign in to comment.