[GRASS-user] map algebra logical operators on DCELL rasters not admitted? maybe docs should outline it

Glynn Clements glynn at gclements.plus.com
Wed Oct 21 17:31:02 PDT 2015


Moritz Lennert wrote:

> >> Doing a logical operation with a DCELL raster within an if(x,a) statement
> >> produces an error: "Incorrect argument types to function bitand()".
> >
> > First, you're confusing bitwise operators and logical operators. & and
> > | are bitwise operators, while && and || (and &&& and |||) are logical
> > operators.
> >
> > Second, both bitwise and logical operators only work on integer
> > values. If you want to use floating-point values as boolean values,
> > you need to explicitly convert them to integers (either via int(x) or
> > round(x), or x==0.0, or abs(x)<1e-30, or whatever).
> 
> ???
> 
> On my grass71 and grass64release, these work (using NC demo data set):
> 
> r.mapcalc "test = if(elevation == 100.0, 1)"
> r.mapcalc "test = if(elevation > 100.0, 1)"
> 
> where elevation is FCELL.

I would expect those to work.

What won't work is using bitwise operators (& and |) or logical
operators (&& and ||, &&& and |||) on floats.

-- 
Glynn Clements <glynn at gclements.plus.com>


More information about the grass-user mailing list