[GRASS-user] compare a DCELL and FCELL question
Markus Neteler
neteler at osgeo.org
Sun Jan 24 03:58:15 PST 2021
Hi Ming,
On Sun, Jan 24, 2021 at 10:49 AM ming han <dustming at gmail.com> 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
More information about the grass-user
mailing list