The crop water requirement is a key factor in the agricultural process. It is usually estimated throughout actual evapotranspiration (
The crop water requirement is a key factor in the agricultural process.
It is usually estimated throughout actual evapotranspiration (
Traditional methods to estimate
However, new physical methods to estimate
METRIC has been widely applied to estimate
The current implementations of SEBAL and METRIC imply the need to use more than one software to run the model (Allen, T. M., R. Trezza, and J. Kjaersgaard 2010) and they involve multiple steps. There are many different sub-models published for the estimation of some parameters (e.g. leaf area index, momentum roughness length, land surface temperature) that are not integrated into the current implementation of METRIC. (Allen, B. Burnett, W. Kramber, J. Huntington, J. Kjaersgaard, A. Kilic, C. Kelly, and R. Trezza 2013) proposed a methodology for an automation procedure by using statistical conditions and expert knowledge. This technique reduced the effect of human criteria helping to increase the model robustness. However, a software tool for the automatic selection of anchor pixels has not been published yet.
As mentioned above, METRIC estimates
where
where
After
where
Finally, the daily ET is computed pixel by pixel as:
where
As (Allen, M. Tasumi, and R. Trezza 2007) mentioned, the computation of latent heat flux (
One of the weaknesses of METRIC model reported in the literature is the
selection of the anchor pixels. (Long and V. P. Singh 2013) and
(Morton 2013) indicated that the selection of anchor pixels is
subjective and depends on the ability of the operator to search and
isolate the most appropriates hot and cold pixels. This process produces
important biases in the estimation of
Crop | Validation tool | Source | |||||
---|---|---|---|---|---|---|---|
grass | lysimeter | nr | nr | nr | nr | ( |
|
sugar beet | lysimeter | nr | nr | nr | nr | ( |
|
soybean | lysimeter | nr | nr | ||||
corn, soybean | EC | nr | nr | ||||
olive | EC | nr | nr | nr | nr | ||
vineyard | EC |
The objective of this article is to propose an open implementation of a land surface energy balance model (LSEB) as an R package that integrates most of the METRIC sub-models and allows automatic selection of the anchor pixels. In this version of the package, specific functions for METRIC model (Allen, M. Tasumi, and R. Trezza 2007) are provided. Apart from the previous features, this package: i) is written in R, one of the most used scientific programming languages; ii) can be automated for batch processing of many satellite images; iii) provides functions for loading and processing satellite images; iv) provides functions and a new class object to manage weather station data; and v) is a free and open software.
The water package is developed in R to estimate actual
evapotranspiration (
Functions in water package are arranged in three groups: i) general functions to estimate sub-components of LSEB (e.g. leaf area index, albedo, land surface temperature, momentum roughness length); ii) specific functions to estimate the components of LSEB; iii) internal functions and methods to handle data from a weather station using a new proposed S3 class and functions to control global options such as saving results to disk, overwrite files, etc.
The first group of functions consist of models and equations to estimate
the sub-components, which generally are controlled by the argument
method
. Most of the models available here are presented in the
Appendix. In the second group, there are three functions: i)
METRIC.Rn()
; ii) METRIC.G()
and iii) METRIC.EB()
. The first one
estimates net radiation using METRIC model. The second one estimates
soil heat flux, and the third one estimate all the components of energy
balance:
Three example datasets are provided with the water package: i) a subset of a Landsat 7 scene path 223, row 85 from 15th February 2013, bands 1 to 7; ii) data from a weather station from the same Landsat subset in CSV file format (comma separated values); iii) a subset of NASA SRTM digital elevation model, with the same spatial extent as the example image. These datasets are used in examples in Sections 3.2 and 3.3, and also in the vignettes included with the package.
The water package is available on The Comprehensive R Archive Network
at
https://CRAN.R-project.org/package=water. This software is made freely
available under the terms and conditions of the GNU General Public
License.
The key functions included in the package are:
read.WSdata()
This function allows to import weather station data from a table in
comma-separate values (CSV) format. The result is a new object of
class "waterWeatherStation"
. The main input arguments are the CSV
file and a vector with the order of the needed variables (radiation,
temperature, wind speed and relative humidity) called columns
. An
optional argument is a Landsat metadata file (MTL). When this
function is used with the CSV and the MTL files, it will interpolate
the weather conditions to the moment of the satellite overpass.
METRIC.EB()
This is the main function of water package. It runs each of the
sub-models needed to get all the components of the LSEB (equation
(1)), from satellite and weather station data. The input
arguments are: a satellite scene and a "waterWeatherStation"
object. The arguments alb.coeff
, LAI.method
, Zom.method
and
anchors.method
allow choosing between the different sub-models or
coefficients used. More information about the sub-models available
in water is presented in the Appendix. An optional logical
argument is plain
, which allows to use a digital elevation model
or to consider that the surface is flat. When using a digital
elevation model, the net radiation estimation and the land surface
temperature are corrected using the elevation, slope and aspect of
the surface. The output of this function is a raster layer object
(from raster package)
with 4 different layers: net radition, soil heat flux, sensible heat
flux and surface temperature.
ET24h()
This function estimates the "waterWeatherStation"
object. The argument ET
allows to select
between two ET="ETo"
, is the method for short
crops, similar to clipped, cool-season grass and ET="ETr"
, is the
method for tall crops, similar to 0.5 m tall full-cover alfalfa. By
default, it will use ET="ETr"
, but the user should choose
according to the conditions of the weather station. The output of
this function is a raster layer object (from raster package) with
the 24-hour
METRIC.EB()
uses many different steps to estimate the parameters
needed to calculate the components of the LSEB. These steps are
available as individual functions like:
albedo()
This function is used to calculate the broadband albedo from
narrowband satellite data. This process involves applying a
weighting function with empirical coefficients. water includes
models and coefficients described by (Tasumi, R. G. Allen, and R. Trezza 2008) and
(Liang 2001), as well as new coefficients for Landsat 8 estimated by
The Simple Model of the Atmospheric Radiative Transfer of Sunshine
(SMARTS2) version 2.9.5 (Gueymard 1995). coeff="Olmedo"
computes
clear sky spectral irradiances for the spectral range of each
Landsat 8 OLI band (see Appendix, Section 6.1). The
output of this function is a raster layer object (from raster
package) with the albedo.
LAI()
This function estimates the leaf area index (LAI) from Landsat data. water includes many different models to estimate LAI (see Appendix, Section 6.2). In the Examples Section of this article, the METRIC 2010 method (Allen, T. M., R. Trezza, and J. Kjaersgaard 2010) will be used. This method estimates LAI from SAVI (Huete 1988), as follows:
where L=0.5
, although
(Allen, M. Tasumi, and R. Trezza 2007) suggested a value of L=0.1
in METRIC applications
for western USA. This value varies by the amount or coverage of
green vegetation: in very high coverage vegetation regions, L=0
and SAVI = NDVI; in areas with no green vegetation, L=1
. Then SAVI
is used to estimate LAI as follows:
The output of this function is a raster layer object (from raster
package) with the estimated
As it was mentioned before, the critical part in the estimation of the
LSEB is the sensible heat flux estimation. The key functions used to
estimate this are: momentumRoughnessLength()
; calcAnchors()
and
calcH()
.
momentumRoughnessLength()
This function estimates the Momentum Roughness Length (water
includes several methods to estimate method="short-crops"
(Allen, M. Tasumi, and R. Trezza 2007)
And if mountainous=TRUE
, this value of
The output of this function is a raster layer object with the
estimated
calcAnchors()
This function automatically select anchor pixels that represent the
dry and wet ends of the ET spectrum within the satellite scene using
information of land surface characteristics (LAI, albedo,
The criteria to select “hot” and “cold” pixels were adapted from (Allen, A. Irmak, R. Trezza, J. M. H. Hendrickx, W. Bastiaanssen, and J. Kjaersgaard 2011), (Tasumi 2003) and shown in Table 2. The methodology searches for image-specific pixels with the lowest and highest temperature values that match with these criteria. The output of this function is a data frame with the coordinates of the selected anchor pixels.
Variable | Cold pixel | Hot pixel |
---|---|---|
albedo |
0.18 - 0.25 | 0.13 - 0.15 |
NDVI |
0.76 - 0.84 | 0.10 - 0.28 |
LAI ( |
3 - 6 | - |
0.03 - 0.08 |
* dimensionless |
calcH()
This function applies the CIMEC self-calibration method in order
to generate an iterative process for the “hot” and “cold” pixels and
absorb all biases in the computation of verbose
to control how much information
about the iterative process is shown in the output. The output of
this function is a raster layer object with the estimated soil heat
flux.
METRIC uses two sources to estimate the LSEB: a satellite image and a weather station with hourly data.
METRIC can be run using different satellite sensors. Currently, the coefficients needed for Landsat 7 and 5 are available in Allen, M. Tasumi, and R. Trezza (2007). Those coefficients can also be applied to Landsat 8 data. In the Appendix Section 6.1, we propose specific coefficients for the estimation of albedo using this satellite sensor. Other coefficients to run METRIC using MODIS images are available in (Allen, M. Tasumi, and R. Trezza 2007), and will be included in future versions of water package.
The weather station data should include near-surface air temperature,
wind speed, relative humidity and solar radiation. The water package
uses the function read.WSdata()
to convert the weather station data
from a comma-separate values table to a special R object. The input data
should be on an hourly or shorter time basis. The expected units are
cf
when conversion factors are needed
to convert the variables from different units (e.g. if wind speed is in
The water package only uses one weather station to estimate
The water package uses large temporal memory in order to obtain the
results and sub products. Most of the results are "RasterLayer"
or
"RasterStack"
objects from
raster package (Hijmans 2015).
Processing an entire Landsat scene could need more than 2 gigabytes of
memory to store the temporal data. One approach to solve this is to
write products and sub-products to the disk. There is an option
writeResults=TRUE
in function waterOptions()
to force water to
store the results on the disk, instead of on temporal memory.
If water runs out of memory while processing data, it will usually stop working without a warning message. We suggest processing only a portion of a Landsat scene using an area-of-interest (aoi) polygon or storing results to disk.
Two different approaches to estimate land surface energy balance
demonstrate the features and procedures in water. The first example in
Section 3.2 is a simple procedure, and the second one in
Section 3.3 refers to an advanced procedure. Finally, the
estimation of
In Section 3 functions createAoi()
and
read.WSdata()
are summarized. Then, in Section 3.2
function METRIC.EB()
is shown. In Section 3.3 the LSEB is
estimated step by step. And later, in Section 3.4 daily
dailyET()
and ET24h()
.
waterWeatherStation
objects.To calculate METRIC Actual Evapotranspiration using water package, three sources are needed:
A raw Landsat 7-8 satellite image.
A Weather Station data (.csv file).
A polygon with our Area-of-interest (AOI) Spatial-Polygon object, to run the model using only a portion of the satellite scene.
First, AOI is created as a polygon using bottomright and topleft coordinates:
aoi <- createAoi(topleft = c(272955, 6085705),
bottomright = c(288195, 6073195), EPSG = 32719)
Then, the weather station data is loaded using the function
read.WSdata()
. This function converts the CSV file into a
"waterWeatherStation"
object. Then, if a Landsat metadata file (MTL
file) is provided, the time-specific weather conditions at the time of
satellite overpass will be calculated. This is shown on Figure
1 as a gray bar. Files apples.csv
and L7.MTL.txt
are
included in the package as raw data. In R, system.file()
is used to
call this files.
csvfile <- system.file("extdata", "apples.csv", package = "water")
MTLfile <- system.file("extdata", "L7.MTL.txt", package = "water")
WeatherStation <- read.WSdata(WSdata=csvfile,
date.format = "%d/%m/%Y",
lat = -35.42222, long = -71.38639,
elev = 201, height = 2.2,
MTL = MTLfile)
Next, the Landsat satellite image is loaded. water provides a function
to load a Landsat image (loadImage()
) from TIFF files. Landsat images
can be downloaded directly from USGS archives in Earth Explorer
(http://earthexplorer.usgs.gov/). In this article, an example dataset
will be used which comes with water package as demonstration data.
image.DN <- L7_Talca
Finally, Digital Elevation Model (DEM) will be created for the area
being processed. water provides two functions to do this:
checkSRTMgrids()
will search for the downloadable grid files in
http://earthexplorer.usgs.gov/. However, this function will only print
the links to the files. The downloading process has to be done manually.
After this, prepareSRTMdata()
can be used to mosaic and clip those
files using the same extent of the image. In this article, the example
data, provided with water package, will be loaded.
DEM <- DEM_Talca
The simple procedure is summarized on Figure 2. The
function METRIC.EB()
will be used to estimate the land surface energy
balance. This function has many parameters to choose from the different
METRIC model equations. e.g. changes can be made in:
Coefficients used to estimate broadband albedo from narrowband data.
Model to estimate Leaf Area Index (LAI) from satellite data.
Model to estimate momentum roughness length (
Automatic method for the selection of anchor pixels
Reference ET coefficient and momentum roughness length estimated for the weather station
When this function is run, the energy balance and the surface
temperature (Energy.Balance
object.
This function prints the position and characteristics of the anchor
pixels to the console. Also, a plot with the values of the aerodynamic
resistance during the iterative process is generated after every
iteration. Here, the logical argument verbose
controls how much
information is shown in the output, and the plotting of the diagnostic
graph.
Energy.Balance <- METRIC.EB(image.DN = image.DN,
plain = FALSE, DEM = DEM,
WeatherStation = WeatherStation, ETp.coef = 1.2,
MTL = MTLfile, sat = "L7",
thermalband = image.DN$thermal.low)
The results of the energy balance estimated using this function are shown in Figure 3. The console output with information related to the anchor pixels goes like this:
pixel X Y Ts LAI type
1 139253 282420 -3922830 323.1587 0.13 hot
2 121566 274710 -3921780 310.0151 4.40 cold
The advanced procedure involves running many different functions
one-by-one, this is summarized in figures 4 and
5. These functions were run inside the code of
METRIC.EB()
in the previous example. Running water with this
procedure allows to have more control in the different arguments used.
In order to calculate the incSWradiation()
is used to calculate
incoming solar radiation.
surface.model <-METRICtopo(DEM)
solar.angles.r <- solarAngles(surface.model = surface.model,
WeatherStation = WeatherStation, MTL = MTLfile)
Rs.inc <- incSWradiation(surface.model = surface.model,
solar.angles = solar.angles.r,
WeatherStation = WeatherStation)
After this, reflectances are calculated at the top-of-atmosphere (TOA), and surface reflectance derived from the Landsat image as:
image.TOAr <- calcTOAr(image.DN = image.DN, sat = "L7", MTL = MTLfile,
incidence.rel = solar.angles.r\$incidence.rel)
image.SR <- calcSR(image.TOAr = image.TOAr, sat = "L7",
surface.model = surface.model,
incidence.hor = solar.angles.r\$incidence.hor,
WeatherStation = WeatherStation, ESPA = FALSE)
Following this, broadband albedo is calculated as the sum of visible to
near infrared narrowband satellite bands and coefficients related to
atmospheric transmittance of global solar beam radiation. In this
example coeff="Tasumi"
was used.
albedo <- albedo(image.SR=image.SR, coeff="Tasumi")
Later on, Leaf Area Index (LAI) is calculated using the satellite data.
In this example method=metric2010
is used:
LAI <- LAI(method="metric2010", image=image.TOAr, L=0.1)
Land surface temperature (
Ts <- surfaceTemperature(LAI = LAI, sat = "L7",
thermalband = image.DN\$thermal.low,
WeatherStation = WeatherStation)
Rl.out <- outLWradiation(LAI = LAI, Ts = Ts)
Rl.inc <- incLWradiation(WeatherStation, DEM = surface.model\$DEM,
solar.angles = solar.angles.r, Ts = Ts)
Finally, Net Radiation (
Rn <- netRadiation(LAI, albedo, Rs.inc, Rl.inc, Rl.out)
Soil heat flux is estimated
G <- soilHeatFlux(image = image.SR, Ts = Ts, albedo = albedo,
Rn = Rn, LAI = LAI)
To estimate the sensible heat fluxes derived from the Landsat satellite
data, first, the calculation of the momentum roughness length (
Z.om <- momentumRoughnessLength(LAI = LAI, mountainous = TRUE,
method = "short.crops",
surface.model = surface.model)
Then, calcAnchors()
is used to search for the anchor pixels within the
Landsat scene. And finally, calcH()
is used to run the CIMEC process
and estimate the sensible heat flux:
hot.and.cold <- calcAnchors(image = image.TOAr, Ts = Ts,
LAI = LAI, plots = FALSE, albedo = albedo,
Z.om = Z.om, n = 1,
anchors.method = "CITRA-MCB",
deltaTemp = 5, verbose = FALSE)
H <- calcH(anchors = hot.and.cold, Ts = Ts, Z.om = Z.om,
WeatherStation = WeatherStation, ETp.coef = 1.05,
Z.om.ws = 0.0018, DEM = DEM, Rn = Rn, G = G, verbose = TRUE)
When the function calcH()
is runnig, and verbose=TRUE
, the output
shows the intermediate values of the CIMEC process parameters. Also, the
value for the aerodynamic resistance and its change for every iteration
is plotted iteratively by this function. This plot is shown on Figure
6. In this example, the change in the value of the
aerodynamic resistance goes down after iteration #9, and in iteration
#14 is less than
To estimate the daily actual evapotranspiration from the Landsat scene,
the daily reference ET (dailyET()
. This function calculates the cumulative 24h
standardized reference evapotranspiration for the day of the image using
the ASCE standardized Penman-Monteith method (Allen, I. A. Walter, E. R., T. Howell, D. Itenfisu, and M. Jensen 2005). Finally, 24h
crop ET can be estimated for every pixel of the Landsat scene using the
function ET24h()
(Figure 7):
ET_WS <- dailyET(WeatherStation = WeatherStation, ET = "ETr")
ET.24 <- ET24h(Rn = Rn, G = G, H = H\$H,
Ts = Ts, WeatherStation = WeatherStation,
ETr.daily = ET_WS)
The water package offers a fast and reliable platform for estimating
actual evapotranspiration using the land surface energy balance. It
includes different methods for many sub-models. The simple procedure
showed in this article allows to estimate the
This work was supported by the Argentinian government through the projects INTA 1133043 and 1133042, and Universidad de Talca, Chile through the research program “Adaptation of Agriculture to Climate Change (A2C2)”. The authors wish to thank Danlu Guo and and an anonymous reviewer for their careful reading of the manuscript and their enriching comments. Finally, we thank Marcos Angelini, Rosana Vallone and Marcos Carrasco-Benavides for their valuable support and suggestions to improve this work.
coeff="Tasumi"
(Tasumi, R. G. Allen, and R. Trezza 2008)
coeff="Liang"
(Liang 2001)
coeff="Olmedo"
where
method="metric"
(Allen, M. Tasumi, and R. Trezza 2007)
where
method="metric2010"
(Pôças, T. a. Paço, M. Cunha, J. a. Andrade, J. Silvestre, A. Sousa, F. L. Santos, L. S. Pereira, and R. G. Allen 2014)
method="vineyard"
(Johnson, D. E. Roczen, S. K. Youkhana, R. R. Nemani, and D. F. Bosch 2003)
where
method="MCB"
(Carrasco-Benavides, S. Ortega-Farı́as, L. Lagos, J. Kleissl, L. Morales-Salinas, and A. Kilic 2014)
method="turner"
(Turner, W. B. Cohen, R. E. Kennedy, K. S. Fassnacht, and J. M. Briggs 1999)
where
method="metric"
(Allen, M. Tasumi, and R. Trezza 2007) (Landsat 7)
and
where
method="SC"
(Jimenez-Munoz, J. Cristobal, J. A. Sobrino, G. S??ria, M. Ninyerola, and X. Pons 2009), (Jimenez-Munoz, J. A. Sobrino, D. Skokovic, C. Mattar, and J. Cristobal 2014) (Landsat 8)
where
where
where
method="SW"
(Jimenez-Munoz, J. A. Sobrino, D. Skokovic, C. Mattar, and J. Cristobal 2014) (Landsat 8)
$$
$$
where
method="short-crops"
(Allen, M. Tasumi, and R. Trezza 2007)
method="custom"
(Allen, M. Tasumi, and R. Trezza 2007)
where
method="Perrier"
(Santos, I. J. Lorite, R. G. Allen, and M. Tasumi 2012), (Pôças, T. a. Paço, M. Cunha, J. a. Andrade, J. Silvestre, A. Sousa, F. L. Santos, L. S. Pereira, and R. G. Allen 2014)
where
when
when
This article is converted from a Legacy LaTeX article using the texor package. The pdf version is the official version. To report a problem with the html, refer to CONTRIBUTE on the R Journal homepage.
Text and figures are licensed under Creative Commons Attribution CC BY 4.0. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: "Figure from ...".
For attribution, please cite this work as
Olmedo, et al., "water: Tools and Functions to Estimate Actual Evapotranspiration Using Land Surface Energy Balance Models in R", The R Journal, 2016
BibTeX citation
@article{RJ-2016-051, author = {Olmedo, Guillermo Federico and Ortega-Farías, Samuel and Fuente-Sáiz, Daniel de la and Fonseca-Luengo, David and Fuentes-Peñailillo, Fernando}, title = {water: Tools and Functions to Estimate Actual Evapotranspiration Using Land Surface Energy Balance Models in R}, journal = {The R Journal}, year = {2016}, note = {https://rjournal.github.io/}, volume = {8}, issue = {2}, issn = {2073-4859}, pages = {352-369} }