NDVI-class: Class '"NDVI"'

Description Objects from the Class Slots Methods Author(s) References See Also Examples

Description

Class ‘NDVI’ provides functions to smooth NDVI (Normalized Difference Vegetation Index) timeseries obtained from satellite observations.

Objects from the Class

NDVI-Objects can be created by calls of the form modelNDVI(ndvi.values, ...). These objects contain the timeserie as given by ‘ndvi.values’, smoothed values due to the performed correction (see also modelNDVI, parameter 'correction') and modelled values due to the chosen method (see also modelNDVI, parameter ‘method’). Furthermore, the year of the timeserie can be stored as integer value.

Slots

year:

The year of the timeseries as integer value or ‘NA’.

seasons:

Season start positions of the timeseries.

values:

A vector of NDVI-values (between minus one and one as numeric) of length 365 or 366 (respective to length of the year).

correctedValues:

A vector of corrected NDVI-values. Is set after use of correction methods ‘bise’ or ‘runningAvg’.

modelledValues:

A vector of corrected NDVI-values. Is set after use of method ‘modelValues’.

Methods

bise

signature(x = "NDVI"): Best index slope extraction after Viovy et. al (1992). Second interpretation of algorithm.

This routine tries to restore the temporal NDVI profile, i.e. separate true observations from noise. The sliding period default of BISE-algorithm is 40 days, optimised for the area of Central Europe. This might has to be modified when vegetation dynamics of other climates/habitats are analysed. An maximum increase threshold is defined via parameter ‘growthFactorThreshold’ with default to 0.1 (10 percent increase per day allowed). The timeserie is cycled via parameter ‘cycleValues’, which is a boolean value determining whether the end of the ndvi timeserie is combined with its beginning or not (default value is true). If false, gaps or low ndvi values at the beginning of timeserie influence the result.

This method is used by function modelNDVI if parameter correction is set to “bise”.

checkLength

signature(x = "NDVI"): Checks the length of the timeserie respective to the length of the year (365 days or 366 for leap years).

correctedValues<-

signature(x = "NDVI"): Replacement method for slot correctedValues.

correctedValues

signature(x = "NDVI"): Acessor method for slot correctedValues.

isLeapYear

signature(x = "NDVI"): Checks whether the year of the NDVI-object is a leap year.

seasons<-

signature(x = "NDVI"): Replacement method for slot seasons.

seasons

signature(x = "NDVI"): Acessor method for slot seasons.

modelledValues<-

signature(x = "NDVI"): Replacement method for slot modelledValues.

modelledValues

signature(x = "NDVI"): Acessor method for slot modelledValues.

modelValues

signature(x = "NDVI"): Fits a suite of functions/models to corrected NDVI-timeserie (if the corrected timeserie is not available, the raw one out of ‘values’ will be used). Parameter ‘method’ determines the used model:

LinIP”: A linear interpolation is performed. For interpolation, the end of timeserie is connected to the beginning (e.g. after day 365 follows day 1). Applied in Badeck et. al (2004) and Doktor et. al (2009).

Spline”: A spline interpolation is performed. For interpolation, the end of timeserie is connected to the beginning (e.g. after day 365 follows day 1).

DSig”: Fits a double sigmoidal function to NDVI values (according to Zhang et. al (2003)).

DSigC”: Fits another double sigmoidal function (own C implementation) to NDVI values.

DLogistic”: Fits a double logistic function after Fischer, Alberte (1994) to NDVI values.

Gauss”: Fits a symmetric or asymmetric (determined by boolean parameter ‘asym’) gaussian function to NDVI values (own C implementation after Press, W.H. (1992)).

GaussMix”: Fits a mixture of gaussian functions to NDVI values (own C implementation after Press, W.H. (1992)). The number of components is determined by parameter ‘components’. If multiple components are given, the algorithm checks which number performs best.

Growth”: Fits a growth model after Richter et. al (1991) to NDVI values.

FFT”: Smoothes the corrected or raw NDVI values with fast fourier transfusion (implemented in R). The smoothing intensity can be controlled with parameter ‘filter.threshold’ with default to 3.

SavGol”: Smoothes the corrected or raw NDVI values with a Savitzky-Golay filter (own C implementation after Press, W.H. (1992)). The smoothing algorithm can be modified with parameters ‘window.sav’ (window size of filter, default to 7), ‘degree’ (degree of fitting polynomial, default to 2) and ‘smoothing’ (repetition quantity, default to 10).

This method is used by function modelNDVI with modelling method respective to parameter ‘method’.

phenoPhase

signature(x = "NDVI"): Extracts the start of phenological phases out of the modelled NDVI values. Parameter ‘phase’ determines which phase is extracted:

max”: Day of the year with highest NDVI value is returned.

min”: Day of the year with lowest NDVI value is returned.

greenup”: Day of the year at which greenup takes place is returned. This day refers to the point where the function of modelled NDVI values exceeds a certain threshold.

senescence”: Day of the year at which senescence takes place is returned. This day refers to the point where the function of modelled NDVI values exceeds a certain threshold.

Parameter ‘method’ determines whether a global or local threshold is used for greenup and senescence extraction:

With “global” threshold, the day of the year is returned, where NDVI values are first equal or higher as the value of ‘threshold’. If the threshold is higher than the values of the timeseries, ‘-1’ will be returned.

With “local” threshold, the day of the year is returned, for which NDVI values first reach the value of ‘threshold’ (interpreted as percentage) between lowest and highest NDVI value of timeserie. The lowest NDVI value is chosen depending on phase selected. For “greenup”, the lowest value before day of maximum NDVI value is used. For “senescence”, the lowest value after day of maximum NDVI value is used.

The ‘threshold’ for local or global greenup/senescence-extraction method should have numerical value between ‘0’ and ‘1’. Global thresholds refer to a fix NDVI value independent of actual NDVI magnitudes. Local thresholds are based on (max - min) * e.g. 0.55. Hence, the respective NDVI value will vary dependent on e.g. land-cover.

plot

signature(x = "NDVI"): Plots raw data as black dots (slot 'values'), corrected values as red dots (slot ‘correctedValues’) and modelled values as blue line (slot ‘modelledValues’).

runningAvg

signature(x = "NDVI"): This routine performes an averaging with a running window on NDVI values. Default window size is 7 and can be modified by parameter ‘window’.

This method is used by function modelNDVI if parameter correction is set to “ravg”. See also runningAvg.

values<-

signature(x = "NDVI"): Replacement method for slot values.

values

signature(x = "NDVI"): Acessor method for slot values.

year<-

signature(x = "NDVI"): Replacement method for slot year.

year

signature(x = "NDVI"): Acessor method for slot year.

rsquare

signature(x = "NDVI"): Calculates the squared Pearson correlation coefficient out of corrected (if the corrected timeserie is not available, the raw one out of ‘values’ will be used) and modelled timeserie.

integrateTimeserie

signature(x = "NDVI"): Calculates the integral of the timeserie between the bounds ‘start’ and ‘end’.

Author(s)

Lange, Maximilian and Doktor, Daniel

References

Badeck, F.W., Bondeau, A., Boettcher, K., Doktor, D., Lucht, W., Schaber, J. and Sitch, S. (2004). Responses of spring phenology to climate change. New Phytologist, 162, 295-309.

Doktor, D., Bondeau, A., Koslowski, D. and Badeck, F.W. (2009). Influence of heterogeneous landscapes on computed green-up dates based on daily AVHRR NDVI observations. Remote Sensing of Environment, 113, 2618-2632

Fischer, Alberte (1994). A Model for the Seasonal Variations of Vegetation Indices in Coarse Resolution Data and Its Inversion to Extract Crop Parameters. Remote Sensing of Environment, 48, 220-230.

Press, W.H. (1992). Numerical recipes in C: The Art of Scientific Computing, vol. 1. Cambridge University Press, Cambridge, 2nd edn.

Richter, O., Spickermann, U. and Lenz, F. (1991). A new model for plant-growth. Gartenbauwissenschaft, 56, 99-106.

Viovy, N., Arino, O. and Belward, A.S. (1992). The Best Index Slope Extraction (BISE) - a method for reducing noise in NDVI time-series. International Journal of Remote Sensing, 13, 1585-1590.

Zhang, X.Y., Friedl, M.A., Schaaf, C.B., Strahler, A.H., Hodges, J.C.F., Gao, F., Reed, B.C. and Huete, A. (2003). Monitoring vegetation phenology using MODIS. Remote Sensing of Environment, 84, 471-475.

See Also

bise, runningAvg, modelNDVI, phenoPhase

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
	 ##first example
	# load data
	data(avhrr)
	data(modis)

	# create NDVI object
	ndvi1 <- new("NDVI", values=avhrr.ndvi/10000, year=as.integer(1995))
	ndvi2 <- new("NDVI", values=modis.ndvi/10000, year=as.integer(1995))

	# correct values (bise)
	ndvi1.bise <- bise(ndvi1)
	ndvi2.bise <- bise(ndvi2)

	# or running Average
	ndvi1.ravg <- runningAvg(ndvi1)
	ndvi2.ravg <- runningAvg(ndvi2)

	# model Values
	res1 <- modelValues(ndvi1.bise, method="LinIP")
	res2 <- modelValues(ndvi1.ravg, method="FFT", filter.threshold=7)
	res3 <- modelValues(ndvi2.bise, method="LinIP")
	res4 <- modelValues(ndvi2.bise, method="FFT", filter.threshold=7)

	# plot Values
	plot(res1)
	plot(res2)
	plot(res3)
	plot(res4)

	# extract greenup date
	greenup <- phenoPhase(res1, phase="greenup", method="local", threshold=0.55, n=1000)
	# extract date with highest ndvi
	max.ndvi <- phenoPhase(res1, phase="max", n=1000)

	## or simpler
	data(avhrr)
	data(modis)
	
	# create NDVI objects, correct and model values
	ndvi.list1 <- modelNDVI(ndvi.values=cbind(avhrr.ndvi/10000, modis.ndvi/10000),
			year.int=1995, correction="bise", method="LinIP", MARGIN=2,
			doParallel=FALSE, slidingperiod=40)
	ndvi.list2 <- modelNDVI(ndvi.values=cbind(avhrr.ndvi/10000, modis.ndvi/10000),
			year.int=1995, correction="ravg", method="FFT", MARGIN=2,
			doParallel=FALSE, filter.threshold=7)

	# plot Values
	for (ndvi.ob in ndvi.list1){ plot(ndvi.ob) }
	for (ndvi.ob in ndvi.list2){ plot(ndvi.ob) }
	
	# extract greenup date
	greenup <- phenoPhase(ndvi.list1[[1]], phase="greenup", 
			method="local", threshold=0.55, n=1000)
	# extract senescence date
	senescence <- phenoPhase(ndvi.list1[[1]], phase="senescence", 
			method="local", threshold=0.55, n=1000)
	# extract date with highest NDVI
	max.ndvi <- phenoPhase(ndvi.list1[[1]], phase="max", n=1000)

	# calculate green season integrated vegetation index
	gsivi <- integrateTimeserie(ndvi.list1[[1]], start=greenup, end=senescence, n=1000)

Example output



phenex documentation built on May 1, 2019, 10:56 p.m.

Related to NDVI-class in phenex...