season_mov | R Documentation |
Moving growing season division
season_mov(INPUT, options = list(), ..., years.run = NULL)
INPUT |
A list object with the elements of |
options |
see the following section |
... |
others parameter to |
years.run |
Numeric vector. Which years to run? If not specified, it is all years. |
rFUN
: character (default smooth_wWHIT
), the name of rough
curve fitting function, can be one of c("smooth_wSG", "smooth_wWHIT", "smooth_wHANTS")
, which are corresponding to smooth_wSG()
,
smooth_wWHIT()
and smooth_wHANTS()
.
wFUN
: character (default wTSM
), the name of weights
updating functions, can be one of c("wTSM", "wChen", "wBisquare",
"wSELF"). See wTSM()
, wChen()
, wBisquare()
and wSELF()
for
details.
iters
: integer (default 2), the number of rough fitting
iterations.
wmin
: double, the minimum weight of bad points (i.e. snow,
ice and cloud).
verbose
: logical (default FALSE
). If TRUE
,
options$season
will be printed on the console.
lambda
: double (default NULL), the smoothing parameter of
smooth_wWHIT()
.
If lambda = NULL
, V-curve theory will be employed to find the
optimal lambda
. See lambda_vcurve()
for details.
frame
: integer (default NULL), the parameter of
smooth_wSG()
, moving window size.
If frame = NULL
, frame
will be reset as floor(nptperyear/5)*2 + 1
(refered by TIMESAT).
nf
: integer (default 4), the number of frequencies in
smooth_wHANTS()
.
maxExtendMonth
: integer (default 12), previous and subsequent
maxExtendMonth
(in month) data were added to the current year for rough
fitting.
nextend
: integer (default NULL), same as maxExtendMonth
, but
in points.
If nextend
provided, maxExtendMonth
will be ignored.
If nextend = NULL
, nextend
will be reset as
ceiling(maxExtendMonth/12*nptperyear)
minpeakdistance
: double (default NULL), the minimum distance of two
peaks (in points). If the distance of two maximum extreme value less than
minpeakdistance
, only the maximum one will be kept.
If minpeakdistance = NULL
, it will be reset as nptperyear/6
.
r_max
: double (default 0.2; in (0, 1)). r_max
and r_min
are used to eliminate fake peaks and troughs.
The real peaks should satisfy:
max(h_{peak, L}, h_{peak, R}) > r_{max} A
min(h_{peak, L}, h_{peak, R}) > r_{min} A,
where h_{peak,
L}, h_{peak, R}
are height difference from the peak to the left- and
right-hand troughs.
The troughs should satisfy:
max(h_{trough, L}, h_{trough, R}) > r_{max} A,
where
h_{trough, L}, h_{trough, R}
are height difference from the trough
to the left- and right-hand peaks.
r_min
: double (default 0.05; in (0, 1)), see above r_max
for details. r_min
< r_max
.
rtrough_max
: double (default 0.6, in (0, 1)), y_{peak} <=
rtrough_max * A + ylu[1]
.
ypeak_min
: double 0.1 (in VI unit), y_{peak} >= ypeak_min
.
.check_season
: logical (default TRUE
). check the growing season
length according to len_min
and len_max
. If FALSE
, len_min
and
len_max
will lose their effect.
len_min
: integer (default 45), the minimum length (in days) of
growing season
len_max
: integer (default 650), the minimum length (in days)
of growing season
adj.param
: logical. If TRUE
(default), if there are too many
or too less peaks and troughs, phenofit
will automatically adjust rough
curve fitting function parameters. See MaxPeaksPerYear
and
MaxTroughsPerYear
for details.
MaxPeaksPerYear
(optional) : integer (default 2), the max number of
peaks per year. If PeaksPerYear
> MaxPeaksPerYear
, then lambda = lambda*2
.
MaxTroughsPerYear
(optional) : integer (default 3), the max number of
troughs per year. If TroughsPerYear
> MaxTroughsPerYear
, then lambda = lambda*2
.
calendarYear
: logical (default FALSE
). If TRUE
, the start and
end of a calendar year will be regarded as growing season division (North
Hemisphere is from 01 Jan to 31 Dec; South Hemisphere is from 01 Jul to 30
Jun).
rm.closed
: logical (default TRUE
). If TRUE
, closed peaks (or troughs)
will be further tidied. Only the maximum
is.continuous
(not used): logical (default TRUE
). This parameter is for
fluxnet2015
fluxsite data, where the input might be not continuous.
Kong, D., Zhang, Y., Wang, D., Chen, J., & Gu, X. (2020). Photoperiod Explains the Asynchronization Between Vegetation Carbon Phenology and Vegetation Greenness Phenology. Journal of Geophysical Research: Biogeosciences, 125(8), e2020JG005636. https://doi.org/10.1029/2020JG005636
Kong, D., Zhang, Y., Gu, X., & Wang, D. (2019). A robust method for reconstructing global MODIS EVI time series on the Google Earth Engine. ISPRS Journal of Photogrammetry and Remote Sensing, 155, 13-24.
season()
data("CA_NS6")
d <- CA_NS6
nptperyear <- 23
INPUT <- check_input(d$t, d$y, d$w,
QC_flag = d$QC_flag,
nptperyear = nptperyear, south = FALSE,
maxgap = nptperyear / 4, alpha = 0.02, wmin = 0.2
)
# curve fitting by year
brks_mov <- season_mov(INPUT,
options = list(
rFUN = "smooth_wWHIT", wFUN = "wTSM",
lambda = 10,
r_min = 0.05, ypeak_min = 0.05,
verbose = TRUE
)
)
plot_season(INPUT, brks_mov)
rfit <- brks2rfit(brks_mov)
# Phenological Metrics from rough fitting
r <- get_pheno(rfit)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.