[GRASS5] r.mapcalc result

Glynn Clements glynn.clements at virgin.net
Thu May 27 05:12:18 EDT 2004


Radim Blazek wrote:

> > Names which include r.mapcalc syntatic characters (e.g. minus) have to
> > be quoted, e.g.:
> >
> > 	r.mapcalc '"pok-1"=1'
> >
> > 	r.mapcalc "'pok-1'=1"
> >
> > 	r.mapcalc "\"pok-1\"=1"
> >
> > 	r.mapcalc
> > 	Enter expressions, "end" when done.
> > 	mapcalc> "pok-1"=1
> >
> > Etc.
> >
> > Note: the quotes must be present in the string which is passed to
> > r.mapcalc; when supplying the string on the command line, you have to
> > allow for the shell's processing.
> >
> > The list of characters which can't be used in an unquoted name
> > consists of control characters, space, and the following:
> >
> > 	^ # @ , " ' ( ) [ ] + - * / % > < ! = & | ? : ;
> >
> > This is true for both map names and variable names, and is distinct
> > from GRASS' own restrictions (see G_legal_filename()), which apply
> > regardless of whether the name is quoted.
> 
> In r.mapcalc manual:
> "Quoting result is not allowed.

That has recently been changed.

> However, it is never necessary to quote 
>  result since it is always taken to be a raster map layer name."

That isn't true. And I don't think that it was ever true, even in the
old r.mapcalc (src/raster/r.mapcalc).

> is the rest of the manual correct or there are other changes?

This isn't true:

       If the input comes directly  from  the  keyboard  and  the
       result  raster map layer exists, the user will be asked if
       it can be overwritten.  Otherwise, the result  raster  map
       layer will automatically be overwritten if it exists.

Existing maps will be silently overwritten.

This isn't true:

       Continuation lines must end with a \ and have  NO  trailing
       white  space  (blanks  or  tabs).   If the user does leave
       white space at the end of continuation  lines,  the  error
       messages produced by r.mapcalc will be meaningless and the
       equation will not work as  the  user  intended.   This  is
       important for the eval() function.

Trailing whitespace (any number of space, tab and carriage-return
characters) is allowed between the backslash and the newline.

This isn't entirely true:

       The function should require the  user  to  type  "end"  or
       "exit"  instead  of  simply a blank line.  This would make
       separation of multiple scripts separable by white space.

It now understands "end" and "exit" as alternatives to a blank line. 
Ignoring blank lines could be considered a significant
incompatibility.

The latter part of the REGION/MASK section is incorrect:

       Since a category value of 0 is used in GRASS for locations
       which do not exist in the raster map layer, the new raster
       map layer will contain the category value 10 in the  loca­
       tions  that  did  not  exist  in  the  original elevation.
       Therefore, in this  example,  it  is  essential  that  the
       boundaries  of  the geographic region be set to agree with
       the cell header.

       However, if there is a current mask,  then  the  resultant
       raster  map  layer  is  masked when it is written; i.e., 0
       category values in the mask force zero values in the  out­
       put.

Also, in the comment:

       It   is   advisable   to  put  single  quotes  around  the
       expression;  e.g.:

            result = 'elevation * 2'

I would suggest quoting the entire statement, i.e.:

            r.mapcalc 'result = elevation * 2'

-- 
Glynn Clements <glynn.clements at virgin.net>




More information about the grass-dev mailing list