#!/usr/bin/env python3 ############################################################################ # # MODULE: r.rgb # AUTHOR(S): Glynn Clements # PURPOSE: Split a raster map into red, green and blue maps # COPYRIGHT: (C) 2009 Glynn Clements and the GRASS Development Team # # This program is free software under the GNU General Public # License (>=v2). Read the file COPYING that comes with GRASS # for details. # ############################################################################# #%module #% description: Splits a raster map into red, green and blue maps. #% keyword: raster #% keyword: RGB #% keyword: separate #% keyword: split #%end #%option G_OPT_R_INPUT #%end #%option G_OPT_R_OUTPUT #% key: red #% description: Red channel raster map name #% required: no #%end #%option G_OPT_R_OUTPUT #% key: green #% description: Green channel raster map name #% required: no #%end #%option G_OPT_R_OUTPUT #% key: blue #% description: Blue channel raster map name #% required: no #%end #%rules #% required: red, green, blue #%end import grass.script as gscript def main(): options, unused = gscript.parser() input = options['input'] red = options['red'] green = options['green'] blue = options['blue'] if not gscript.find_file(input)['file']: gscript.fatal(_("Raster map <%s> not found") % input) expressions = [] maps = [] if red: expressions.append('%s = r#${input}' % red) maps.append(red) if green: expressions.append('%s = g#${input}' % green) maps.append(green) if blue: expressions.append('%s = b#${input}' % blue) maps.append(blue) expr = ';'.join(expressions) gscript.mapcalc(expr, input=input) for name in maps: gscript.run_command('r.colors', map=name, color='grey255') gscript.raster_history(name) if __name__ == "__main__": main()