<div dir="ltr">Hi Markus and Micha<div><br></div><div>     I am just trying to find grids have the same values in these two rasters, I will try the threshold approach.</div><div><br></div><div>Thanks</div><div>Ming </div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Markus Neteler <<a href="mailto:neteler@osgeo.org">neteler@osgeo.org</a>> 于2021年1月24日周日 上午6:58写道:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Ming,<br>
<br>
On Sun, Jan 24, 2021 at 10:49 AM ming han <<a href="mailto:dustming@gmail.com" target="_blank">dustming@gmail.com</a>> wrote:<br>
><br>
> Hi Micha<br>
><br>
>      Many thanks for your reply.<br>
>      Here is the command I am using:<br>
><br>
>      if(float(cat1_acc_riv) == float(cat1_minacc), str_r, null())<br>
><br>
>       The str_r is a CELL raster. the result is different when I change it to:<br>
>        if(int(cat1_acc_riv) == int(cat1_minacc), str_r, null())<br>
<br>
Note that numerical "equality" is better tested with a threshold test<br>
against the map pixel difference.<br>
As the threshold, we use GRASS_EPSILON which is defined as 1.0e-15.<br>
<br>
Hence the test needs to be implemented in a different way, i.e. by<br>
using an epsilon.<br>
Essentially something like this:<br>
<br>
if(fabs(map_A - map_B) <= 1.0e-15, ... )<br>
<br>
In your case (untested):<br>
r.mapcalc diffepsilon = if( abs( map_A - map_B) <= 1.0e-15, str_r , null())<br>
<br>
See related discussions here: [1], [2] and elsewhere.<br>
<br>
[1] Comment by Glynn: <a href="https://trac.osgeo.org/grass/ticket/2854#comment:9" rel="noreferrer" target="_blank">https://trac.osgeo.org/grass/ticket/2854#comment:9</a><br>
[2] Comment by Glynn:<br>
<a href="https://lists.osgeo.org/pipermail/grass-user/2015-October/073200.html" rel="noreferrer" target="_blank">https://lists.osgeo.org/pipermail/grass-user/2015-October/073200.html</a><br>
<br>
Best,<br>
Markus<br>
</blockquote></div>