[GRASS-user] 10day accumulation which t.rast module to use?

Sören Gebbert soerengebbert at googlemail.com
Thu Dec 4 02:02:54 PST 2014


Hi Maning,
i think that the combination of t.rast.aggreagte and the new
t.rast.algebra will help you here. Be aware that you will need the
latest grass7.1 trunk version for this.

First you need to compute the daily rainfall sum with
t.rast.aggregate. All 3h map layer that are temporally contained in
the 1 day granule are summed up:

t.rast.aggregate input=3hr_rainrate output=prec1d method=sum
granularity="1 day" basename=prec1d sampling=contains

Then you need to use a temporal moving window of 9 day size in the
past (including the current layer that will be 10 map layers). The
granularity is one day so we can use the temporal neighbor index to
address the past map layers. Be aware that the "result" strds will
only contain map layers that have 9 map layers in the past:

t.rast.algebra basename="10d_acc" expression="result = prec1d[0] +
prec1d[-1] + ... + prec1d[-9]"


The temporal raster algebra module is very experimental, but i hope
that this will work.

Best regards
Soeren

ps.: The code is untested

2014-12-04 3:47 GMT+01:00 maning sambale <emmanuel.sambale at gmail.com>:
> Dear Vero,
>
> Thanks for the reply.  But t.rast.aggregate does not do what I intend
> to do.  My rainrate is from a span of 20 days.
> t.rast.aggregate produces (as expected) two rasters, one for each of
> the 10day accumulation.  What I want for example is like a moving sum,
> where for each day, it calculates the sum for the past 10 days.
>
> On Thu, Dec 4, 2014 at 4:31 AM, Veronica Andreo <veroandreo at gmail.com> wrote:
>> Hi Emmanuel,
>>
>>> Hi,
>>>
>>> I have 3hourly rainrate data for a given region in a GRASS temporal
>>> database (strds).
>>>
>>> I want to aggregate the data by summing all raster from the previous
>>> 10 days to calculate the accumulated rainfall.
>>> The temporal modules have several tools:
>>> t.rast.series
>>> t.rast.accumulate
>>> t.rast.aggregate
>>> t.rast.mapcalc
>>>
>>> >From the manual, the appropriate module seems to be t.rast.accumulate
>>> but it does not have sum in the method parameters. Currently, I'm
>>> running several r.series commands for each day like below:
>>>
>>> r.series input=\
>>> "`t.rast.list input=3hr_rainrate where=\
>>> "('${DATE} 00:00:00' >= datetime(start_time, '3 hours')) \
>>> and ('${DATE} 00:00:00' <= datetime(start_time, '10 days')) " \
>>> col=name method=comma`" \
>>> output="test_2014-07-20" method=sum
>>>
>>> Then, register each layer in another strds:
>>>
>>> #Create a new STRDS
>>> t.create output='10day_accumulation' type='strds' temporaltype='absolute'
>>> \
>>>             title='10day_accumulation' \
>>>             description="10 day rainfall accumulation"
>>>
>>>
>>> g.mlist type='rast', pattern='test*', separator=','
>>>
>>> #Register the r.series output to the strds
>>> t.register -i type=rast input=10day_accumulation \
>>>         start="2014-07-10 00:00:00" increment="1 days" separator="," \
>>>         maps="`g.mlist type='rast', pattern='test*', separator=','`"
>>>
>>>
>>> Is there another approach using directly any of the t.rast.* modules.
>>> For a time-line visualization, here's what I want to do:
>>> https://dl.dropboxusercontent.com/u/2096185/sample_accumulation.png
>>>
>>> Thanks!
>>
>> If i understood right, something like
>>
>> t.rast.aggregate input=3hr_rainrate output=10day_rain basename=10day_rain
>> granularity='10 days' method=sum
>>
>> should do the what you need.
>>
>> HTH,
>>
>> Vero
>
>
>
> --
> cheers,
> maning
> ------------------------------------------------------
> "Freedom is still the most radical idea of all" -N.Branden
> wiki: http://esambale.wikispaces.com/
> blog: http://epsg4253.wordpress.com/
> ------------------------------------------------------
> _______________________________________________
> grass-user mailing list
> grass-user at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/grass-user


More information about the grass-user mailing list