Skip to content

Commit c13c97e

Browse files
committedNov 11, 2018
processing: add windows support to exportRasterLayersIntoDirectory (fixes #20146)
(cherry picked from commit b39e5a0)
1 parent 7c9429a commit c13c97e

File tree

2 files changed

+20
-16
lines changed

2 files changed

+20
-16
lines changed
 

‎python/plugins/processing/algs/grass7/Grass7Algorithm.py

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@
6161
QgsProcessingParameterFile,
6262
QgsProcessingParameterFolderDestination,
6363
QgsProcessingOutputHtml,
64-
QgsProcessingUtils,
6564
QgsVectorLayer,
6665
QgsProviderRegistry)
6766
from qgis.utils import iface
@@ -73,7 +72,6 @@
7372

7473
from .Grass7Utils import Grass7Utils
7574

76-
#from processing.tools import dataobjects, system
7775
from processing.tools.system import isWindows, getTempFilename
7876

7977
pluginPath = os.path.normpath(os.path.join(
@@ -187,7 +185,7 @@ def initAlgorithm(self, config=None):
187185
"""
188186
for p in self.params:
189187
# We use createOutput argument for automatic output creation
190-
res = self.addParameter(p, True)
188+
self.addParameter(p, True)
191189

192190
def defineCharacteristicsFromFile(self):
193191
"""
@@ -441,7 +439,7 @@ def processInputs(self, parameters, context, feedback):
441439
QgsProcessingParameterMultipleLayers))]
442440
for param in inputs:
443441
paramName = param.name()
444-
if not paramName in parameters:
442+
if paramName not in parameters:
445443
continue
446444
# Handle Null parameter
447445
if parameters[paramName] is None:
@@ -640,7 +638,6 @@ def processCommand(self, parameters, context, feedback, delOutputs=False):
640638
if outName in parameters and parameters[outName] is not None:
641639
# We add an output name to make sure it is unique if the session
642640
# uses this algorithm several times.
643-
#value = self.parameterAsOutputLayer(parameters, outName, context)
644641
uniqueOutputName = outName + self.uniqueSuffix
645642
command += ' {}={}'.format(outName, uniqueOutputName)
646643

@@ -669,7 +666,7 @@ def processOutputs(self, parameters, context, feedback):
669666

670667
for out in self.destinationParameterDefinitions():
671668
outName = out.name()
672-
if not outName in parameters:
669+
if outName not in parameters:
673670
# skipped output
674671
continue
675672

@@ -785,15 +782,22 @@ def exportRasterLayersIntoDirectory(self, name, parameters, context, colorTable=
785782

786783
# Add a loop export from the basename
787784
for cmd in [self.commands, self.outputCommands]:
788-
# TODO Windows support
789785
# TODO Format/options support
790-
cmd.append("for r in $(g.list type=rast pattern='{}*'); do".format(basename))
791-
cmd.append(" r.out.gdal -m{0} input=${{r}} output={1}/${{r}}.tif {2}".format(
792-
' -t' if colorTable else '', outDir,
793-
'--overwrite -c createopt="TFW=YES,COMPRESS=LZW"'
794-
)
795-
)
796-
cmd.append("done")
786+
if isWindows():
787+
cmd.append("if not exist {0} mkdir {0}".format(outDir))
788+
cmd.append("for /F %%r IN ('g.list type^=rast pattern^=\"{0}*\"') do r.out.gdal -m{1} input=%%r output={2}/%%r.tif {3}".format(
789+
basename,
790+
' -t' if colorTable else '',
791+
outDir,
792+
'--overwrite -c createopt="TFW=YES,COMPRESS=LZW"'
793+
))
794+
else:
795+
cmd.append("for r in $(g.list type=rast pattern='{}*'); do".format(basename))
796+
cmd.append(" r.out.gdal -m{0} input=${{r}} output={1}/${{r}}.tif {2}".format(
797+
' -t' if colorTable else '', outDir,
798+
'--overwrite -c createopt="TFW=YES,COMPRESS=LZW"'
799+
))
800+
cmd.append("done")
797801

798802
def loadVectorLayerFromParameter(self, name, parameters, context, feedback, external=False):
799803
"""
@@ -999,7 +1003,6 @@ def setSessionProjectionFromLayer(self, layer):
9991003
def convertToHtml(self, fileName):
10001004
# Read HTML contents
10011005
lines = []
1002-
html = False
10031006
with open(fileName, 'r', encoding='utf-8') as f:
10041007
lines = f.readlines()
10051008

‎python/plugins/processing/algs/grass7/Grass7Utils.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -353,7 +353,7 @@ def executeGrass(commands, feedback, outputCommands=None):
353353
loglines.append(Grass7Utils.tr('GRASS GIS 7 execution console output'))
354354
grassOutDone = False
355355
command, grassenv = Grass7Utils.prepareGrassExecution(commands)
356-
#QgsMessageLog.logMessage('exec: {}'.format(command), 'DEBUG', Qgis.Info)
356+
# QgsMessageLog.logMessage('exec: {}'.format(command), 'DEBUG', Qgis.Info)
357357

358358
# For MS-Windows, we need to hide the console window.
359359
if isWindows():
@@ -369,6 +369,7 @@ def executeGrass(commands, feedback, outputCommands=None):
369369
stderr=subprocess.STDOUT,
370370
universal_newlines=True,
371371
env=grassenv,
372+
encoding="cp{}".format(Grass7Utils.getWindowsCodePage()) if isWindows() else None,
372373
startupinfo=si if isWindows() else None
373374
) as proc:
374375
for line in iter(proc.stdout.readline, ''):

0 commit comments

Comments
 (0)
Please sign in to comment.