-
-
Notifications
You must be signed in to change notification settings - Fork 3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Médéric RIBREUX
committed
Feb 28, 2016
1 parent
4831cf8
commit 0ec8951
Showing
2 changed files
with
103 additions
and
0 deletions.
There are no files selected for viewing
9 changes: 9 additions & 0 deletions
9
python/plugins/processing/algs/grass7/description/r.mapcalc.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
r.mapcalc | ||
Raster map calculator. | ||
Raster (r.*) | ||
ParameterMultipleInput|maps|Raster maps used in the calculator|3|True | ||
ParameterString|expression|Expression to evaluate. The raster names used in expression should be the same than in QGIS|None|True|True | ||
ParameterFile|file|File containing expression(s) to evaluate (same rule for raster names than above)|True | ||
ParameterString|seed|Integer seed for rand() function|None|False|True | ||
*ParameterBoolean|-s|Generate random seed (result is non-deterministic)|False | ||
OutputDirectory|output_dir|Results Directory |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,94 @@ | ||
# -*- coding: utf-8 -*- | ||
|
||
""" | ||
*************************************************************************** | ||
r_mapcalc.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$' | ||
|
||
from os import path | ||
|
||
|
||
def checkParameterValuesBeforeExecuting(alg): | ||
""" Verify if we have the right parameters """ | ||
if alg.getParameterValue('expression') and alg.getParameterValue('file'): | ||
return alg.tr("You need to set either inline expression or a rules file !") | ||
|
||
return None | ||
|
||
|
||
def processInputs(alg): | ||
# We need to use the same raster names than in QGIS | ||
if alg.getParameterValue('maps'): | ||
rasters = alg.getParameterValue('maps').split(',') | ||
for raster in rasters: | ||
if raster in alg.exportedLayers.keys(): | ||
continue | ||
|
||
alg.setSessionProjectionFromLayer(raster, alg.commands) | ||
destFilename = path.splitext(path.basename(raster))[0] | ||
alg.exportedLayers[raster] = destFilename | ||
command = 'r.in.gdal input={} output={} --overwrite -o'.format(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 processCommand(alg): | ||
# Remove output for command | ||
output_dir = alg.getOutputFromName('output_dir') | ||
maps = alg.getParameterFromName('maps') | ||
alg.removeOutputFromName('output_dir') | ||
alg.parameters.remove(maps) | ||
alg.processCommand() | ||
alg.addOutput(output_dir) | ||
alg.addParameter(maps) | ||
|
||
|
||
def processOutputs(alg): | ||
# Export everything into Output Directory with shell commands | ||
outputDir = alg.getOutputValue('output_dir') | ||
|
||
# Get the list of rasters matching the basename | ||
commands = ["for r in $(g.list type=rast); do"] | ||
commands.append(" r.out.gdal input=${{r}} output={}/${{r}}.tif createopt=\"TFW=YES,COMPRESS=LZW\" --overwrite".format(outputDir)) | ||
commands.append("done") | ||
alg.commands.extend(commands) | ||
alg.outputCommands.extend(commands) |