Helena Herrera wrote: > I have 4 bands (B1;B2,B3;B4) all with values >0 except in a few pixels where > I have nulls. > I want to create a layer where I have 1 if at least I have 1 number and > nulls where I don't have a single value > I have tried this > if (B1>=0 || B2>=0 || B3>=0 || B4>=0, 1,null()) but I got null in pixels > where I have information for at least 2 bands.
"x>=0" will evaluate to null if x is null. "x||y" will evaluate to null if either x or y is null. In general, most operators and functions return null if any of their arguments are null. The main exceptions are if(), eval(), isnull(), ||| and &&&, as described in the "NULL support" section of the r.mapcalc manual page. > any tip on how can I do this? Either: 1. Use isnull() to determine whether a cell is null, e.g.: if (isnull(B1) && isnull(B2) && isnull(B3) && isnull(B4), null(), 1) 2. Modify your original expression to use ||| instead of ||, i.e.: if (B1>=0 ||| B2>=0 ||| B3>=0 ||| B4>=0, 1, null()) The ||| operator satisfies the boolean axioms: x ||| true == true and: true ||| x == true even when x is null. The || operator propagates nulls like other operators. Similarly for &&& and &&. -- Glynn Clements <gl...@gclements.plus.com> _______________________________________________ grass-user mailing list grass-user@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/grass-user