Hi Ming, On Sun, Jan 24, 2021 at 10:49 AM ming han <[email protected]> wrote: > > Hi Micha > > Many thanks for your reply. > Here is the command I am using: > > if(float(cat1_acc_riv) == float(cat1_minacc), str_r, null()) > > The str_r is a CELL raster. the result is different when I change it to: > if(int(cat1_acc_riv) == int(cat1_minacc), str_r, null())
Note that numerical "equality" is better tested with a threshold test against the map pixel difference. As the threshold, we use GRASS_EPSILON which is defined as 1.0e-15. Hence the test needs to be implemented in a different way, i.e. by using an epsilon. Essentially something like this: if(fabs(map_A - map_B) <= 1.0e-15, ... ) In your case (untested): r.mapcalc diffepsilon = if( abs( map_A - map_B) <= 1.0e-15, str_r , null()) See related discussions here: [1], [2] and elsewhere. [1] Comment by Glynn: https://trac.osgeo.org/grass/ticket/2854#comment:9 [2] Comment by Glynn: https://lists.osgeo.org/pipermail/grass-user/2015-October/073200.html Best, Markus _______________________________________________ grass-user mailing list [email protected] https://lists.osgeo.org/mailman/listinfo/grass-user
