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 <[email protected]>: > 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 <[email protected]> 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 > [email protected] > http://lists.osgeo.org/mailman/listinfo/grass-user _______________________________________________ grass-user mailing list [email protected] http://lists.osgeo.org/mailman/listinfo/grass-user
