Evapotranspiration (ET) models for use in python and with integration into Google Earth Engine.
geeet provides hybrid evapotranspiration (ET) models that run with numerical values and with Google Earth Engine images.
geeet is a Python package providing a common set of building blocks for estimating evapotranspiration (ET) from remote sensing observations. It also features complete ET models such as PT-JPL and TSEB. All modules in geeet are designed to work with the input data provided in two formats: (1) as numpy ndarrays and (2) as Google Earth Engine (GEE) images. GEE is a cloud-based platform dedicated to Earth observation research that offers a multi-petabyte catalogue of geospatial data. Importantly, GEE offers cloud computing capabilities, which means that a user can interact with this geospatial data directly without having to download or process any data on premises. Access to these cloud-based services requires signing up for a GEE account. The geeet Python package was created to offer ET modeling tools that work for any user, whether they have a GEE account or not. For this reason, numpy is the only requirement for geeet.
geeet is available on the Python Package Index (pip). To install geeet using pip, run this command:
pip install geeet
If you want to install the latest development version hosted on github, run this command:
pip install git+https://github.com/kaust-halo/geeet
geeet is alsao available on conda-forge. To install geeet using conda, run this command:
conda install -c conda-forge geeet
The only requirement is a modern python installation (e.g. >3.6) and numpy. However, to test any of the GEE capabilities of geeet you will need to install the Python earthengine API (available through pip and conda), and have a GEE account.
If you have a GEE account and the earthengine API installed, we recommend first taking a look at this notebook demonstrating the basic use of the hybrid ET models with a simple toy example. In a nutshell, running one of the pre-built models can be done in two lines of code, e.g.:
from geeet.tseb import import tseb_series
et_tseb = tseb_series(img = sample_tseb_inputs)
where sample_tseb_inputs
is a ee.Image
containing all the necessary inputs for the TSEB model. You can use the same function to run the same model with numpy arrays:
et_tseb_out = tseb_series(\
Tr = Tr, Alb = albedo, NDVI = NDVI, P = P, Ta = Ta, U = U, \
Sdn = Sdn, Ldn = Ldn, doy = doy, time = Time, Vza = Vza,\
longitude = lon, latitude = lat, zU = zU, zT = zT)
where in this case you supply all the inputs as numpy arrays through keyword arguments.
The keyword argument
img
is reserved only for GEE images. Ifimg
is supplied and is an instance ofee.Image
, all other keyword arguments are ignored (with exceptions for some scalar parameters. Check the docstrings for each model).
geeet models can also be mapped to an ee.ImageCollection
, e.g.:
from geeet.ptjpl import ptjpl_arid
et_outputs = et_inputs.map(ptjpl_arid)
where et_inputs
is an ee.ImageCollection
with the required inputs.
For a simple on-premises test of this PT-JPL model, run:
from geeet.ptjpl import ptjpl_arid
ptjpl_arid(Ta=25+273, P = 95500, NDVI = 0.75, F_aparmax=0.73, Rn=487.87, RH=25, doy=1, time=11, longitude=38.25)
The second notebook example is a self-contained, more realistic example that demonstrates the use of real GEE datasets with this PT-JPL model.
You can preview a pre-processed output of this example here (requires a GEE account).
geeet includes a two-source energy balance model mostly based on the original parameterizations of Norman et al., 1995. Specifically, it initializes the estimates of the temperatures of the soil and the canopy layers using a Priestley-Taylor equation. It then iteratively updates the temperatures, energy fluxes, and resistance values using the in-series resistance network parameterization.
For a simple on-premises test of this TSEB model, run:
from geeet.tseb import tseb_series
tseb_series(Tr = 26+273, Alb = 0.22, NDVI = 0.75, P=95500, Ta = 25+273, U=2, Sdn=745, Ldn=345, doy=1, time=11, Vza=0, longitude=38.25, latitude=30.25, zU=10, zT=2)
For a more realistic example using GEE data, see the following:
References for each model are found in REFERENCES.txt. The source code for each module contains references for each function as well. Finally, each model contains two functions to display the references: cite()
shows the main citation for the model, while cite_all()
shows all the references for that model.
If you use this package for research, please cite the relevant model references.
Contributions are welcome. Please open an issue to:
You can also submit a pull request if you have another working ET model - at least with numpy arrays as inputs.
This package was created with Cookiecutter and the giswqs/pypackage project template.