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

Sajid Pareeth spareeth at gmail.com
Mon Oct 31 03:00:19 PDT 2016


Hi all

Thanks MarkusM and Vero for the detailed follow up.

I also use r.hants a lot, and recently was trying to make use of amplitude
and phase outputs to infer some of the phenological parameters from the
annual cycle (still not sure, if it is a feasible approach).

But it seems inadequate when it comes to determine the *start and end time
of the growing season* in a year. I am looking for a solution along the
line as given in this paper:

https://www.researchgate.net/publication/238418948_Measuring_Phenological_Variability_From_Satellite_Imagery

I think once we have the start and end of growing season, rest of the
related parameters are easy to compute.

May be, there already exists a way in GRASS to do it using TGRASS !!.

Regards

Sajid







On Mon, Oct 31, 2016 at 10:40 AM, Veronica Andreo <veroandreo at gmail.com>
wrote:

> 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
>>
>
>
> _______________________________________________
> 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/35ebbb8b/attachment.html>


More information about the grass-user mailing list