[GRASS-user] Extracting vegetation phenology from Landsat-based time series
Nikos Alexandris
nik at nikosalexandris.net
Sun Nov 6 18:01:42 PST 2016
Veronica Andreo:
>>> 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,...
Nikos Alexandris:
>> Vero,
>>
>> Is the number of cycles per year in the Wiki as well? Going through,
>> last time, I think I didn't grasp that. Can you pin-point? It's
>> exactly what we need at the moment.
Veronica Andreo:
>Yes, maybe it is not well explained, but it is here:
>https://grasswiki.osgeo.org/wiki/Temporal_data_processing#Filling_and_reconstructing_time_series_data_with_gaps_-_HANTS
>
>and also in the manual under "NOTES"
>https://grass.osgeo.org/grass70/manuals/addons/r.hants.html
>
>The idea is, once you are happy with the result of hants, you ask for
>amplitude outputs and with those amplitude maps (you'll have one map per
>frequency) you run r.series method=max_raster. This will give you the most
>important frequency (according to amplitude value of that frequency) in
>each pixel. If the result is that the most important frequency is 0, then
>you have one cycle per year (that, if you use a base period of one year of
>course).
>
>Hope it is clearer now :)
Yes. It was even before -- just me read through quickly.
r.hants is awesome!
We have 24 Landsat 8 derived EVI2 maps (2 for each month) for one year.
Clouds and Water surfaces removed. Another set of "relatively normalised
images, using `i.histo.match` is also ready. We really need to "fix"
`i.histo.match` to crunch floats directly. The resulting ranges worry
me a bit -- I just followed the "old" way as discussed some years ago in
a relevant thread (floats > integers > histo-matching > floats).
Anyhow, I am testing the following:
for NF in 4 5 6 7 8 ;do r.hants file=evi2_maps nf=$NF fet=0.05 dod=3 base_period=24 suffix=_hants_nf_$NF amplitude=amplitude_hants_nf_$NF phase=phase_hants_nf_$NF ;done
(thinking loudly... it would be super-nice to have `t.rast.hants`)
Not sure about `dod`. Perhaps it should also follow a patten like 3 4 5
6 and 7 for the above?
for NF in 5 6 7 8 ; do t.rast.series evi2_hants_nf_$NF method=max_raster output=dominant_frequencies_hants_nf_$NF --o
"Dominant" frequencies 0, 1, 2 and 3 appear to be within the areas
of our interest (agricultural surfaces). Very good. And convincing.
Yet I am learning to interpret this correctly. And the "phase" as well.
Reminds math studies, years ago.
As I am working this out in a remote workstation, it's a bit annoying
not to be able to play an animation directly. The GUI runs fine,
though slow, of course (via ssh -CY).
Awesome to have all this in our fingertips :-)
Cheers, Nikos
[rest deleted]
More information about the grass-user
mailing list