[GRASS-user] Extracting vegetation phenology from Landsat-based time series

Veronica Andreo veroandreo at gmail.com
Mon Oct 31 02:40:33 PDT 2016


Hello Nikos and all :)

Don't know exactly which parameters you would like to extract from your
time series, Nikos, but if helpful, what I did was to use a combination of
r.hants and temporal modules to get some phenological indicators such as,
number of cycles per year, yearly max and min values, dates of yearly max
and min values, period that the variable was above a certain threshold, max
rate of change (slope between every pair of maps and then aggregate per
year with method=maximum). Some of those examples are in the wiki [0]. I
believe that much more could be done with t.rast.algebra (it seems very
powerfull), but I haven't yet tested enough.

@Sajid, I agree it would be great to have such functionalities as
"ready-to-use" module in GRASS, too. Therefore, we could avoid all the
steps of moving a time series into r and then back again into GRASS [1]

@MarkusM, local weighted regression sounds cool. +1 for that! It would be
also very useful to have DINEOF [2] natively implemented. It is very nice
when you want to keep the variation of the series instead of smoothing it
out [1].

Best,
Vero

[0] https://grasswiki.osgeo.org/wiki/Temporal_data_processing
[1]
https://grasswiki.osgeo.org/wiki/Temporal_data_processing/GRASS_R_raster_time_series_processing
[2] http://modb.oce.ulg.ac.be/mediawiki/index.php/DINEOF

2016-10-31 10:06 GMT+01:00 Nikos Alexandris <nik at nikosalexandris.net>:

> * Markus Metz <markus.metz.giswork at gmail.com> [2016-10-30 22:30:46 +0100]:
>
>
> On Sun, Oct 30, 2016 at 12:37 PM, Nikos Alexandris
>> <nik at nikosalexandris.net> wrote:
>>
>>> Nikos Alexandris:
>>>
>>> is there a GRASS-native, of GRASS-friendly, practical tool or tutorial
>>>>> or implementation of models, as in the TIMESAT [0] software or SPIRITS
>>>>> [1], to exctract phenological parameters from NDVI (or, preferrably
>>>>> EVI2) times series?
>>>>>
>>>>> Thank you, Nikos
>>>>>
>>>>> [0] http://web.nateko.lu.se/timesat/timesat.asp
>>>>> [1] http://spirits.jrc.ec.europa.eu/download/software/
>>>>>
>>>>
>>>
>>> Sajid Pareeth:
>>>
>>>>
>>>> I was also looking for the same functionalities very recently. Closest
>>>> solution i could find is the 'greenbrown' package in R. Atleast we could
>>>> make use of the GRASS-R interface to implement the work flow.
>>>>
>>>> Phenology function in this package has a good comprehensive list of
>>>> functions as in timestat and spirits.
>>>> See fig4 here: http://greenbrown.r-forge.r-project.org/phenology.php
>>>>
>>>> If you find anything else, please do post here.
>>>>
>>>> And above all, it would be really great to have these functionalities in
>>>> GRASS ;)
>>>>
>>>
>>>
>>> Thank you Sajid.
>>>
>>> As I am not an expert in cropping cycles monitoring, I
>>> naively thought there would be more or less some ready to use tools in
>>> the GFOSS domain (TIMESAT requires Matlab, SPIRITS works only under
>>> Windows).
>>>
>>> R is good, but there is still the back-and-forth step.  There is also a
>>> "french" tool for QGIS:
>>> https://plugins.qgis.org/plugins/VERSAO_VegaMonitor/
>>>
>>> At the moment I am looking for an over-simplified way to just
>>> hint/classify surfaces on which multiple cropping cycles per year take
>>> place (related to industrial agricultural surfaces).  Something to get
>>> going.
>>>
>>> Given TGRASS, if we find a practical algorithm, it shouldn't be too hard
>>> to implement it GRASS-natively.
>>>
>>
> Markus M:
>
> [ currently trying to get a grip on MODIS version 6 time series ]
>>
>> In theory, extracting seasons such as cropping cycles is quite easy to
>> implement: whenever a parameter in a time series is above/below a
>> given threshold, start/stop the season. The question is how to store
>> the results for multiple cropping cycles: a separate raster for each
>> cycle and each start and stop date?
>>
>
> May Yann's addon i.lmf (Temporal Local Maximum Fitting of vegetation
> indices) be useful within the context? (can't test it, it
> segfaults and I have no time to debug these days).
>
> Nikos
>
> For preparation, I think that GRASS needs more tools to remove
>> outliers and fill gaps in time series. A commonly used tool is local
>> weighted regression, also known as LOESS or LOWESS.
>>
>> I would like to have a module like r.series.lwr (local weighted
>> regression) in GRASS with the options
>>
>> * order=1,2,3 with 1 = linear regression, 2 = second order polynomial
>> regression, 3 = third order polynomial regression
>> * dod = degree of over-determination because for e.g. linear
>> regression you need only 2 data points but that gives an exact fit and
>> does not remove outliers, so a number of additional points
>> (over-determination) is needed for smoothing. The number of additional
>> points should not be too large, otherwise local real fluctuations can
>> not be represented by the regression and are smoothed out.
>> * weighing function: default tricube, additional options uniform,
>> triangular, epanechnikov, quartic, triweight, cosine
>> * extreme: iteratively replace outliers with the estimate until a
>> given goodness of fit (e.g. coefficient of determination) is obtained
>>
>> Output: one output for each input map.
>>
>> Currently I am using r.hants a lot, but r.hants assumes more or less
>> regular cycles in the time series (e.g. NDVI) and fits a single
>> function to the complete time series, while a local weighted
>> regression can work with much less points and can still capture
>> short-term non-linear fluctuations.
>>
>> Markus M
>>
> _______________________________________________
> grass-user mailing list
> grass-user at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/grass-user
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/grass-user/attachments/20161031/0db0739a/attachment-0001.html>


More information about the grass-user mailing list