Skip to content
Browse files
Fix r.colors rules
  • Loading branch information
Médéric RIBREUX committed Feb 28, 2016
1 parent 0ec8951 commit b8948a17922f6918e559497468967b514a4e0ba9
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 4 deletions.
@@ -4,7 +4,7 @@ Raster (r.*)
ParameterMultipleInput|map|Name of raster maps(s)|3|False
ParameterSelection|color|Name of color table|not selected;aspect;aspectcolr;bcyr;bgyr;blues;byg;byr;celsius;corine;curvature;differences;elevation;etopo2;evi;fahrenheit;gdd;greens;grey;grey.eq;grey.log;grey1.0;grey255;gyr;haxby;kelvin;ndvi;ndwi;oranges;population;population_dens;precipitation;precipitation_daily;precipitation_monthly;rainbow;ramp;random;reds;rstcurv;ryb;ryg;sepia;slope;srtm;srtm_plus;terrain;wave|0|False|True
ParameterString|rules_txt|Color rules|None|True|True
ParameterFile|rules|Color rules file|True
ParameterFile|rules|Color rules file|False|True
ParameterRaster|raster|Raster map from which to copy color table|True
ParameterBoolean|-r|Remove existing color table|False
ParameterBoolean|-w|Only write new color table if it does not already exist|False
@@ -30,7 +30,7 @@

def checkParameterValuesBeforeExecuting(alg):
""" Verify if we have the right parameters """
if alg.getParameterValue(u'rules_txt') and alg.getParameterValue(u'rules'):
if alg.getParameterValue('rules_txt') and alg.getParameterValue('rules'):
return"You need to set either inline rules or a rules file !")

return None
@@ -79,19 +79,34 @@ def processCommand(alg):
if color.value == 0:

# TODO Handle rules
# Handle rules
txtRules = alg.getParameterFromName('rules_txt')
if txtRules.value:
# Creates a temporary txt file
tempRulesName = alg.getTempFilename()

# Inject rules into temporary txt file
with open(tempRulesName, "w") as tempRules:

# Use temporary file as rules file
alg.setParameterValue('rules', tempRulesName)


# re-add the previous output

def processOutputs(alg):
# Export all rasters with their color tables (and their bands)
rasters = [alg.exportedLayers[f] for f in alg.getParameterValue('map').split(',')]
output_dir = alg.getOutputValue('output_dir')
for raster in rasters:
command = u"r.out.gdal createopt=\"TFW=YES,COMPRESS=LZW\" input={} output=\"{}\" --overwrite".format(
command = u"r.out.gdal -t createopt=\"TFW=YES,COMPRESS=LZW\" input={} output=\"{}\" --overwrite".format(
os.path.join(output_dir, raster + '.tif')

0 comments on commit b8948a1

Please sign in to comment.