[GRASS5] r.mapcalc bug/64bit?
Glynn Clements
glynn at gclements.plus.com
Wed May 3 16:20:05 EDT 2006
Markus Neteler wrote:
> thanks for submitting the new operators. Here the test report:
> - the first condition works fine (for me) now
>
>
> + r.info -r modis_t_a_lst1km20040102.daily_min
> min=-24.290000
> max=-16.510000
> + r.info -r startday_previous
> min=1
> max=1
> + r.info -r condition_previous
> min=1
> max=1
> + r.info -r duration
> min=1
> max=1
> + r.mapcalc 'startday=if(modis_t_a_lst1km20040102.daily_min < -2.0 &&& (startday_previous == 0 ||| condition_previous == 0), 2, startday_previous)'
> 100%
> + r.info -r startday
> min=1
> max=1
>
>
> ... but here I am not sure if it is right (program continues):
>
>
> + r.info -r startday_previous
> min=1
> max=1
> + r.mapcalc 'condition=if(startday - startday_previous > 0 ||| modis_t_a_lst1km20040102.daily_min < -2.0, 1, 0)'
> 100%
> + r.info -r condition
> min=1
> max=1
> + r.mapcalc 'duration=if(condition == 1, if(condition_previous == 1 &&& condition == 1, duration + 1, 1), duration)'
> 100%
> + r.info -r duration
> min=-2147483648
> max=-2147483648
It depends upon the contents of the input files. If any of
condition_previous, condition, or duration contain nulls, you will get
them in the output. Whether the output is all-null depends upon which
cells are null in the inputs.
The exact logic of the last expression is:
cp=N cp=1 cp=?
c=N N N N
c=1 N d+1 1
c=? d d d
where c = condition, cp = condition_previous, d = duration, N = null,
? = anything other than null or 1.
Note that "condition_previous == 1 &&& condition == 1" can be
simplified to just "condition_previous == 1", as the expression is
only evaluated if "condition == 1" is true.
Also note that the r.info commands indicates that condition and
condition_previous only contain 1 or null, so the logic can be
simplified to:
cp=N cp=1
c=N N N
c=1 N d+1
Thus the output cell will only be null if all three input cells are
non-null.
--
Glynn Clements <glynn at gclements.plus.com>
More information about the grass-dev
mailing list