[GRASS-user] map algebra logical operators on DCELL rasters not admitted? maybe docs should outline it
Glynn Clements
glynn at gclements.plus.com
Mon Oct 19 12:16:58 PDT 2015
G. Allegri 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).
> This doesn't seem to be described inside the docs, is it?
>
> When the if() function is described it only states its behaviour in case of
> NULL, 0 or "otherwise" values.
This isn't about the if() function. The bitand() function (to which
the error message refers) corresponds to the bitwise-and operator "&".
The if() function accepts either integer or floating-point values for
its arguments.
--
Glynn Clements <glynn at gclements.plus.com>
More information about the grass-user
mailing list