[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