ETo provides basic utility functions for calculating point-based and
spatial daily reference ET. While there are many R packages that
calculate reference ET (like
Evapotranspiration
and
bigleaf),
many only provide monthly ET models, and none that we have found support
raster inputs out-of-the-box. ETo
provides a simple interface for
calculating daily reference ET and works with terra::rast
data
out-of-the-box. Currently, the Penman-Monteith (FAO-56 model) and
Hargreaves methods are implemented. Functions are also provided to
calculate all necessary intermediate variables for calculating ETo. The
only input variables needed to calculate ETo are daily average
temperature, min temperature and max temperature (for Hargreaves), or
daily average temperature, relative humidity, solar radiation and
windspeed (for Penman-Monteith).
You can install the development version of ETo from GitHub with:
# install.packages("devtools")
devtools::install_github("mt-climate-office/ETo")
Here, reference ET is calculated using the example dataset given in the FAO-56 documentation:
library(ETo)
etr_penman_monteith(
t_max = 21.5, # Daily maximum temperature in degC
t_min = 12.3, # Daily minimum temperature in degC
rh_max = 84, # Daily maximum relative humidity (%)
rh_min = 63, # Daily minimum relative humidity (%)
srad = 255.4398, # The incoming shortwave radiation in W m^-2
ws = 2.77778, # Wind speed in meters/second
lat = 50.8, # Latitude of observation in decimal degrees
days = 187, # The day of the year
wind_height = 10, # The height in meters of the wind speed observation
elev = 100, # The elevation of the observations in meters.
)
#> [1] 3.88004
It also works with vectors:
etr_penman_monteith(
t_max = c(21.5, 23), # Daily maximum temperature in degC
t_min = c(12.3, 15), # Daily minimum temperature in degC
rh_max = c(84, 80), # Daily maximum relative humidity (%)
rh_min = c(63, 50), # Daily minimum relative humidity (%)
srad = c(255.4398, 325), # The incoming shortwave radiation in W m^-2
ws = c(2.77778, 3), # Wind speed in meters/second
lat = 50.8, # Latitude of observation in decimal degrees
days = c(187, 188), # The day of the year
wind_height = 10, # The height in meters of the wind speed observation
elev = 100, # The elevation of the observations in meters.
)
#> [1] 3.880040 5.120389
And it works with terra::rast
rasters!
r <- etr_penman_monteith(
t_max = terra::rast(vals=c(21.5, 23), nrows=1, ncols=2), # Daily maximum temperature in degC
t_min = terra::rast(vals=c(12.3, 15), nrows=1, ncols=2), # Daily minimum temperature in degC
rh_max = terra::rast(vals=c(84, 80), nrows=1, ncols=2), # Daily maximum relative humidity (%)
rh_min = terra::rast(vals=c(63, 50), nrows=1, ncols=2), # Daily minimum relative humidity (%)
srad = terra::rast(vals=c(255.4398, 325), nrows=1, ncols=2), # The incoming shortwave radiation in W m^-2
ws = terra::rast(vals=c(2.77778, 3), nrows=1, ncols=2), # Wind speed in meters/second
lat = 50.8, # Latitude of observation in decimal degrees
days = terra::rast(vals=c(187, 188), nrows=1, ncols=2), # The day of the year
wind_height = 10, # The height in meters of the wind speed observation
elev = 100, # The elevation of the observations in meters.
)
terra::plot(r)