r.colors - was Re: [GRASS-dev] Re: grass-dev Digest, Vol 29, Issue 62

Markus Neteler neteler at osgeo.org
Tue Sep 23 15:47:21 EDT 2008


On Tue, Sep 23, 2008 at 9:28 PM, Glynn Clements
<glynn at gclements.plus.com> wrote:
>
> Michael Barton wrote:
>
>> > the manual of 6.4 r.colors says:
>> > "The rules color table type will cause r.colors to read color table
>> > specifications from standard
>> > input (stdin) and will build the color table accordingly.
>> > "
>> >
>> > r.colors help | grep rules
>> > ...
>> >   color   Type of color table
>> >           options: aspect,aspectcolr,bcyr,bgyr,byg,byr,curvature,
>> >
>> > differences,elevation,etopo2,evi,grey,grey1.0,grey255,
>> >
>> > gyr,ndvi,population,rainbow,ramp,ryb,ryg,sepia,slope,
>> >                    srtm,terrain,wave,random,grey.eq,grey.log,rules
>> > ...
>> >            rules: create new color table based on user-specified rules
>> > ...
>> >   rules   Path to rules file
>> >
>> > but:
>> >
>> > r.colors map=gpcp_1dd_p1d.2002_sum color=rules rules=color_tab.col
>> > ERROR: "color", "rules", and "raster" options are mutually exclusive
>>
>> This shouldn't cause this error. It seems to think that the raster
>> option has been used (when it hasn't). A new bug recently introduced?
>
> It certainly should cause this error. color=rules means to read rules
> from stdin, while rules=<filename> means to read rules from a named
> file. If you specify both, where is it supposed to read the rules
> from?
>
> Arguably, the description for color=rules should have "from stdin"
> appended to it, as that's how it behaves.

OK, I have submitted this patch:

~/grass64/lib/gis > svn diff colors.desc
Index: colors.desc
===================================================================
--- colors.desc (revision 33506)
+++ colors.desc (working copy)
@@ -21,7 +21,7 @@
 rainbow: rainbow color table
 ramp: color ramp
 random: random color table
-rules: create new color table based on user-specified rules
+rules: create new color table based on user-specified rules read from stdin
 ryb: red through yellow to blue
 ryg: red through yellow to green
 sepia: yellowish-brown through to white


>
> Note that removing the mutual exclusivity check will simply cause the
> rules= option to be ignored, as color= is checked first. The rules
> option is only used if color= isn't given; specifically, the logic is:
>
>        if <-i> read rules from stdin
>        else if <color=...> handle the various color= choices
>        else if <rules=...> read rules from the specified file
>        else copy colours from another map (raster=)
>
> FWIW, 7.0, doesn't accept color=rules; you need to use rules=- to read
> rules from stdin (this makes it easier for the GUI, where reading from
> stdin won't work.)

I have updated the docs of r.colors in both 6.4. and  7.trunk to reflect
their behaviours.

Markus


More information about the grass-dev mailing list