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

Markus Metz markus.metz.giswork at gmail.com
Sun Oct 30 14:30:46 PDT 2016


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.

[ 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?

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

>
> Nikos
>
>
> _______________________________________________
> 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