From 22c1c7e881c5fb8344eb67d29af192f6e3c48cb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A9d=C3=A9ric=20RIBREUX?= Date: Sat, 27 Feb 2016 17:20:45 +0100 Subject: [PATCH] Add r.shade algorithm --- .../algs/grass7/description/r.shade.txt | 9 +++ .../processing/algs/grass7/ext/r_shade.py | 80 +++++++++++++++++++ 2 files changed, 89 insertions(+) create mode 100644 python/plugins/processing/algs/grass7/description/r.shade.txt create mode 100644 python/plugins/processing/algs/grass7/ext/r_shade.py diff --git a/python/plugins/processing/algs/grass7/description/r.shade.txt b/python/plugins/processing/algs/grass7/description/r.shade.txt new file mode 100644 index 00000000000..8b08dfa268d --- /dev/null +++ b/python/plugins/processing/algs/grass7/description/r.shade.txt @@ -0,0 +1,9 @@ +r.shade +Drapes a color raster over an shaded relief or aspect map. +Raster (r.*) +ParameterRaster|shade|Name of shaded relief or aspect raster map|False +ParameterRaster|color|Name of raster to drape over relief raster map|False +ParameterNumber|brighten|Percent to brighten|-99|99|0|True +ParameterString|bgcolor|Color to use instead of NULL values. Either a standard color name, R:G:B triplet, or "none"|None|False|True +*ParameterBoolean|-c|Use colors from color tables for NULL values|False +OutputRaster|output|Shaded diff --git a/python/plugins/processing/algs/grass7/ext/r_shade.py b/python/plugins/processing/algs/grass7/ext/r_shade.py new file mode 100644 index 00000000000..d3a3185a732 --- /dev/null +++ b/python/plugins/processing/algs/grass7/ext/r_shade.py @@ -0,0 +1,80 @@ +# -*- coding: utf-8 -*- + +""" +*************************************************************************** + r_shade.py + ---------- + Date : February 2016 + Copyright : (C) 2016 by Médéric Ribreux + Email : medspx at medspx dot fr +*************************************************************************** +* * +* This program is free software; you can redistribute it and/or modify * +* it under the terms of the GNU General Public License as published by * +* the Free Software Foundation; either version 2 of the License, or * +* (at your option) any later version. * +* * +*************************************************************************** +""" + +__author__ = 'Médéric Ribreux' +__date__ = 'February 2016' +__copyright__ = '(C) 2016, Médéric Ribreux' + +# This will get replaced with a git SHA1 when you do a git archive + +__revision__ = '$Format:%H$' + + +def checkParameterValuesBeforeExecuting(alg): + """ Verify if we have the right parameters """ + if alg.getParameterValue('brighten') and alg.getParameterValue('bgcolor'): + return alg.tr("You need to set either a brighten percentage or a NULL color !") + return None + + +def processInputs(alg): + # We need to import all the bands and color tables of the input rasters + shade = alg.getParameterValue('shade') + color = alg.getParameterValue('color') + if color in alg.exportedLayers.keys(): + return + + for raster, method in (shade, 'r.external'), (color, 'r.in.gdal'): + alg.setSessionProjectionFromLayer(raster, alg.commands) + + destFilename = alg.getTempFilename() + alg.exportedLayers[raster] = destFilename + command = '{} input={} output={} --overwrite -o'.format(method, raster, destFilename) + alg.commands.append(command) + + alg.setSessionProjectionFromProject(alg.commands) + + region = unicode(alg.getParameterValue(alg.GRASS_REGION_EXTENT_PARAMETER)) + regionCoords = region.split(',') + command = 'g.region' + command += ' -a' + command += ' n=' + unicode(regionCoords[3]) + command += ' s=' + unicode(regionCoords[2]) + command += ' e=' + unicode(regionCoords[1]) + command += ' w=' + unicode(regionCoords[0]) + cellsize = alg.getParameterValue(alg.GRASS_REGION_CELLSIZE_PARAMETER) + if cellsize: + command += ' res=' + unicode(cellsize) + else: + command += ' res=' + unicode(alg.getDefaultCellsize()) + alignToResolution = alg.getParameterValue(alg.GRASS_REGION_ALIGN_TO_RESOLUTION) + if alignToResolution: + command += ' -a' + alg.commands.append(command) + + +def processOutputs(alg): + # Keep color table ? + output = alg.getOutputValue(u'output') + command = u"r.out.gdal -t createopt=\"TFW=YES,COMPRESS=LZW\" input={} output=\"{}\" --overwrite".format( + alg.exportedLayers[output], + output + ) + alg.commands.append(command) + alg.outputCommands.append(command)