[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