Skip to content

Commit 6607ced

Browse files
committed
[processing] improved handling of output files and file naming
1 parent 979d876 commit 6607ced

File tree

6 files changed

+21
-15
lines changed

6 files changed

+21
-15
lines changed

python/plugins/processing/core/LayerExporter.py

-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
from qgis.core import *
3030
from PyQt4.QtCore import *
3131
from PyQt4.QtGui import *
32-
from processing.gdal.GdalUtils import GdalUtils
3332

3433
class LayerExporter():
3534

python/plugins/processing/core/ProcessingUtils.py

+1-5
Original file line numberDiff line numberDiff line change
@@ -61,11 +61,7 @@ def tempFolder():
6161
@staticmethod
6262
def setTempOutput(out, alg):
6363
ext = out.getDefaultFileExtension(alg)
64-
validChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
65-
safeCmdName = ''.join(c for c in alg.commandLineName() if c in validChars)
66-
uniqueSufix = str(uuid.uuid4()).replace("-","")
67-
filename = ProcessingUtils.tempFolder() + os.sep + safeCmdName + uniqueSufix + "." + ext
68-
out.value = filename
64+
out.value = ProcessingUtils.getTempFilenameInTempFolder(out.name + "." + ext)
6965

7066
@staticmethod
7167
def getTempFilename(ext):

python/plugins/processing/outputs/OutputRaster.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,6 @@ def getCompatibleFileName(self, alg):
4949
return self.value
5050
else:
5151
if self.compatible is None:
52-
self.compatible = ProcessingUtils.getTempFilename(self.getDefaultFileExtension(alg))
52+
self.compatible = ProcessingUtils.getTempFilenameInTempFolder(self.name + "." + self.getDefaultFileExtension(alg))
5353
return self.compatible;
5454

python/plugins/processing/outputs/OutputTable.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ def getCompatibleFileName(self, alg):
5252
return self.value
5353
else:
5454
if self.compatible is None:
55-
self.compatible = ProcessingUtils.getTempFilename(self.getDefaultFileExtension(alg))
55+
self.compatible = ProcessingUtils.getTempFilenameInTempFolder(self.name + "." + self.getDefaultFileExtension(alg))
5656
return self.compatible;
5757

5858
def getTableWriter(self, fields):

python/plugins/processing/outputs/OutputVector.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ def getCompatibleFileName(self, alg):
5555
return self.value
5656
else:
5757
if self.compatible is None:
58-
self.compatible = ProcessingUtils.getTempFilename(self.getDefaultFileExtension(alg))
58+
self.compatible = ProcessingUtils.getTempFilenameInTempFolder(self.name + "." + self.getDefaultFileExtension(alg))
5959
return self.compatible;
6060

6161

python/plugins/processing/saga/SagaAlgorithm.py

+17-6
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ def processAlgorithm(self, progress):
206206
filename = LayerExporter.exportVectorLayer(layer)
207207
self.exportedLayers[param.value]=filename
208208
elif not param.value.endswith("shp"):
209-
raise GeoAlgorithmExecutionException("Unsupported file format")
209+
raise GeoAlgorithmExecutionException("Unsupported file format")
210210
if isinstance(param, ParameterTable):
211211
if param.value == None:
212212
continue
@@ -378,14 +378,25 @@ def resampleRasterLayer(self,layer):
378378
return s
379379

380380

381-
def exportRasterLayer(self, layer):
382-
destFilename = ProcessingUtils.getTempFilenameInTempFolder(os.path.basename(layer)[0:5] + ".sgrd")
383-
self.exportedLayers[layer]= destFilename
381+
def exportRasterLayer(self, source):
382+
layer = QGisLayers.getObjectFromUri(source, False)
383+
if layer:
384+
filename = str(layer.name())
385+
else:
386+
filename = source.rstrip(".sgrd")
387+
validChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789:"
388+
filename = ''.join(c for c in filename if c in validChars)
389+
if len(filename) == 0:
390+
filename = "layer"
391+
destFilename = ProcessingUtils.getTempFilenameInTempFolder(filename + ".sgrd")
392+
self.exportedLayers[source]= destFilename
384393
saga208 = ProcessingConfig.getSetting(SagaUtils.SAGA_208)
385394
if ProcessingUtils.isWindows() or ProcessingUtils.isMac() or not saga208:
386-
return "io_gdal 0 -GRIDS \"" + destFilename + "\" -FILES \"" + layer+"\""
395+
return "io_gdal 0 -GRIDS \"" + destFilename + "\" -FILES \"" + source+"\""
387396
else:
388-
return "libio_gdal 0 -GRIDS \"" + destFilename + "\" -FILES \"" + layer + "\""
397+
return "libio_gdal 0 -GRIDS \"" + destFilename + "\" -FILES \"" + source + "\""
398+
399+
389400

390401

391402
def checkBeforeOpeningParametersDialog(self):

0 commit comments

Comments
 (0)