A set of radiative transfer models to quantitatively describe the absorption, reflectance and transmission of solar energy in vegatation, and model remotely sensed spectral signatures of vegetation at distinct spatial scales. The main principle behind ccrtm is that many radiative transfer models can form a coupled chain, basically models that feed into each other in a linked chain (from leaf, to canopy, to stand, to atmosphere). Included models are prospect family, and 2 stream and 4 stream models for canopies, with planned inclusion atmospheric models.
The package will slowly be extended as more models are added, and tested, and optimized. Please send requests and bug reports.
Currently the following models are implemented:
- PROSPECT5
- PROSPECT5B
- PROSPECTD
- 4SAIL
- 4SAIL2 (leaf angles fixed for each layer; sensu Verhoef and Bach 2007)
- 4SAIL2B (leaf angles differ for each layer; sensu Zhang et al 2005)
- FLIM
- PROSAIL (5/5B/D)
- PROSAIL2(b) (5/5B/D)
- INFORM (5/5B/D) - only lower level implementation as of yet
Implementation planned in the near future:
- SMAC
- PROCOSINE
- LIBERTY
- SOILSPECT
A "10 minute" quickstart guide is will be implemented in due time.
The pacakge is on CRAN. Newer developmental versions will first be available from github and can be downloaded as zip or tar ball. To install decompress these and run R CMD INSTALL on the contents of the archives, or use the devtools package to install the current development version from R.
## devtools is required
require(devtools)
install_github("MarcoDVisser/ccrtm")
ccrtm depends on the pracma and expint packages (for now).
The basic functionality of ccrtm, and the coupled chain nature of the forward modelling components is shown below. Backward modelling will be included in later stages.
require(ccrtm)
## setup graphics for plots
par(mfrow=c(3,2))
## get reflectance for a leaf
ref <- fRTM(rho~prospect5)
plot(ref,main="Prospect 5")
## get reflectance and transmission for a leaf
reftrans <- fRTM(rho+tau~prospect5)
plot(reftrans,main="Prospect 5")
## get reflectance for a single layered canopy
ref <- fRTM(rho~prospect5+foursail)
plot(ref,main="Prospect 5 + 4SAIL")
## get reflectance for a 2 layered canopy with two leaf types
ref <- fRTM(rho~prospectd+prospect5+foursail2)
plot(ref,main="Prospect D + Prospect 5 + 4SAIL2")
## edit the parameters: sparse vegatation LAI
parlist<- list(prospect5=NULL,prospectd=NULL,foursail2=c(LAI=0.05))
## update reflectance
ref <- fRTM(rho~prospect5+prospectd+foursail2,parlist)
plot(ref,main="LAI=0.05")
## change leaf area index to dense vegetation
parlist$foursail2["LAI"]<-8.5
## update reflectance
ref <- fRTM(rho~prospect5+prospectd+foursail2,parlist)
plot(ref,main="LAI=8.5")
The package provdes some standard plots, the output from the above example code for instance is:
Printing any ccrtm object will return basic information:
ref <- fRTM(rho~prospect5+prospectd+foursail2)
ref
RTM predicted spectra: reflectance
Generating model(s): prospect5, prospectd, foursail2
Wavelength range 400-2500 (nm)
- Add liberty, and procosine
- Add 2 stream model
- Add inform model to fRTM
- Add GEOSAIL model
Special thanks to Matteo Detto for all the suggestions while I was developing this package. Special thanks to (in no particular order) Zavud Baghirov and Martina Schmirl. Their comments helped improve documentation and remove bugs.
0.01 Initial package with everything in R 0.1 Basic tests complete, basic optimization, and refactoring in c++. 0.1.1 Documentation update, more code refactored in c++ 0.1.1 Documentation update, more code refactored in c++ 0.1.4 refactored code now running via Rcpp, tested against fortran 0.1.5 Documentation updated, code reviewed and CRAN tests passed. 0.1.6 CRAN new package review issues fixed. 0.1.7 fixed bugs identified by Zavud, and improved documentation for leaf angle model 0.2.0 Start of major overhual of fRTM using model aliases, and inclusion of lower-level implementation of INFORM