[GRASS-user] detrending time series maps
Ivan Marchesini
ivan.marchesini at gmail.com
Thu Dec 28 03:14:08 PST 2023
Dear Veronica
I think I found a simple solution using temporal raster modules. Here is
an example:
#evaluating info of the strds
eval `t.info mystrds -g`
#getting the starting day (of the year, 0-365) of my strds
startday=$(date -d "$start_time" "+%j")
#Creating a new strds where each pixel has the value of the count of the
days starting from the start_day of my strds (the start day in my
dataset is in 2016)
t.rast.mapcalc inputs=mystrds
expression="(start_year()-2016)*365-${startday} +start_doy()"
output=days basename=days nprocs=xxx --o
#fitting the trend equation
r.regression.series xseries="`t.rast.list in=days columns=name sep=,
format=line`" yseries="` t.rast.list in=mystrds columns=name sep=,
format=line`"
out=regression_offset,regression_slope,regression_rsq,regression_t
meth=offset,slope,rsq,t
#detrending
t.rast.mapcalc input=mystrds,days expression="mystrds_detrend
= mystrds-(regression_offset+regression_slope*days)"
output=mystrds_detrend basename=mystrds_detrend nprocs=xxx method=start --o
Best
Ivan
On 23/12/23 14:53, Ivan Marchesini wrote:
>
> Hi Veronica
>
> Thank you. It goes in the direction of my idea evn if my problem is
> exactly trying to take into account the correct gaps between that data
>
> I have another idea.
>
> if it works I will come back here to explain how I did
>
> thank you again
>
> Ivan
>
>
> On 22/12/23 13:45, Veronica Andreo wrote:
>> Hello Ivan,
>>
>> AFAIU you could use the slope and offset maps from t.rast.series
>> within t.rast.algebra to detrend the values of the maps within the
>> strds, something like "detrended_strds = trend_strds -
>> (trend_strds*map(slope) + map(offset))". Others suggest, to detrend
>> by subtracting the previous value, i.e. that would imply using the
>> temporal algebra with the temporal index, something like
>> "detrended_strds = trend_strds[1] - trend_strds[0]".
>>
>> I haven't tested any of these, just a couple of ideas ;-) However, I
>> do not know how this might interact with seasonality within data, or
>> irregular gaps.
>>
>> hth somehow
>> Vero
>>
>> El vie, 22 dic 2023 a las 5:10, Ivan Marchesini via grass-user
>> (<grass-user at lists.osgeo.org>) escribió:
>>
>> Dear colleagues
>>
>> I would like to the advantage of the t.* modules for detrending a
>> strd.
>>
>> In the strd I have earth observation data irregularly sampled (2
>> or 3
>> times per month), in the period November-February, for 7 years.
>> They are
>> not equally spaced (i.e gaps have different duration)
>>
>> A simple t.rast.series analysis (opion=slope,offset) highlights that
>> probably there is a descending trend when considering the maps
>> ordered
>> by id.
>>
>> I would like to fit a proper time depending fitting curve for
>> each pixel
>> and then subtract the function from the real data.
>>
>> any hints on how I can do this task exploiting the GRASS GIS
>> modules or
>> some simple bash/python scripting?
>>
>> thank you
>>
>> Ivan
>>
>>
>>
>>
>> _______________________________________________
>> grass-user mailing list
>> grass-user at lists.osgeo.org
>> https://lists.osgeo.org/mailman/listinfo/grass-user
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/grass-user/attachments/20231228/febf5bcd/attachment.htm>
More information about the grass-user
mailing list