smooth.spline.raster | R Documentation |
This function uses the stats::smooth.spline()
function to filter a
vegetation index time series of satellite data.
smooth.spline.raster( x, w = NULL, t = NULL, groupYears = TRUE, timeInfo = orgTime(x), df = 6, outDirPath = "./", ... )
x |
|
w |
|
t |
In case of MODIS composite, the corresponding
'composite_day_of_the_year' |
groupYears |
|
timeInfo |
Result from |
df |
|
outDirPath |
Output path, defaults to the current working directory. |
... |
Arguments passed to |
numeric
values of 'df' (e.g., df = 6
) are treated as yearly degrees of
freedom. Here, the length of the input time series is not relevant since df
is adapted to it with: df * ('length of _input_ timeserie in days' / 365)
.
The input length can differ from the output because of the 'pillow' argument
in orgTime()
.
character
values of 'df' (e.g., df = "6"
), on the other hand, are not
adopted to the length of the input time series.
Currently tested on MODIS and Landsat data. With M*D13 data, it is also possible to use the 'composite_day_of_the_year' layer and the 'VI_Quality' layer.
The filtered data and a text file with the dates of the output layers.
Matteo Mattiuzzi
whittaker.raster()
, raster::raster()
.
## Not run: # The full capacity of the following functions is currently available only # with M*D13 data. # !! The function is very new, double check the result!! # You need to extract the: 'vegetation index', 'VI_Quality layer', # and 'composite day of the year' layer. # runGdal(product="MOD13A2",begin="2004340",extent="sicily",end="2006070", # job="fullCapa",SDSstring="101000000010") # Afterward extract it to: options("MODIS_outDirPath") # the only obligatory dataset is "x" (vegetatino index), get the 'vi' data on # the source directory: path <- paste0(options("MODIS_outDirPath"),"/fullCapa") vi <- preStack(path=path, pattern="*_NDVI.tif$") # `orgTime()` detects timing information of the input data and generates # based on the arguments the output date information. For spline functions # (in general) the start and end of the time series is always problematic. # So there is the argument "pillow" (default 75 days) that adds # (if available) some more layers on the two endings. timeInfo <- orgTime(vi,nDays=16,begin="2005001",end="2005365",pillow=40) # now re-run "preStack" with two differences, 'files' (output of the first # `preStack()` call) and the 'timeInfo'. # Here only the data needed for the filtering is extracted: vi <- preStack(files=vi,timeInfo=timeInfo) smooth.spline.raster(x=vi,timeInfo=timeInfo) # Filter with weighting and time information: # if the files are M*D13 you can use also use quality layers and the # composite day of the year: w <- stack(preStack(path=path, pattern="*_VI_Quality.tif$", timeInfo=timeInfo)) w <- makeWeights(w,bitShift=2,bitMask=15,threshold=6) # you can also pass only the names t <- preStack(path=path, pattern="*_composite_day_of_the_year.tif$", timeInfo=timeInfo) smooth.spline.raster(x=vi,w=w,t=t,timeInfo=timeInfo) ## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.