Package: geeet
geeetEvapotranspiration (ET) models for use in python and with integration into Google Earth Engine.geeetprovides hybrid evapotranspiration (ET) models that run with numerical values and with Google Earth Engine images.GitHub repo:https://github.com/kaust-halo/geeetPyPI:https://pypi.org/project/geeet/Conda-forge:https://anaconda.org/conda-forge/geeetFree software: MIT licenseIntroductiongeeetis 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 asPT-JPLandTSEB. All modules ingeeetare designed to work with the input data provided in two formats: (1) asnumpy ndarraysand (2) asGoogle Earth Engine(GEE)images. GEE is a cloud-based platform dedicated to Earth observation research that offers amulti-petabyte catalogueof 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 requiressigning up for a GEE account. ThegeeetPython 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 forgeeet.Installationgeeetis available on thePython Package Index (pip). To installgeeetusing pip, run this command:pip install geeetIf you want to install the latest development version hosted on github, run this command:pip install git+https://github.com/kaust-halo/geeetgeeetis alsao available onconda-forge. To installgeeetusing conda, run this command:conda install -c conda-forge geeetThe only requirement is a modern python installation (e.g. >3.6) andnumpy. However, to test any of theGEEcapabilities ofgeeetyou will need to install the Python earthengine API (available throughpipandconda), and have aGEE account.First time use: running a toy exampleIf you have a GEE account and the earthengine API installed, we recommend first taking a look atthis notebookdemonstrating 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.:fromgeeet.tsebimportimporttseb_serieset_tseb=tseb_series(img=sample_tseb_inputs)wheresample_tseb_inputsis aee.Imagecontaining 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 argumentimgis reserved only for GEE images. Ifimgis 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).geeetmodels can also be mapped to anee.ImageCollection, e.g.:fromgeeet.ptjplimportptjpl_aridet_outputs=et_inputs.map(ptjpl_arid)whereet_inputsis anee.ImageCollectionwith the required inputs.PT-JPL model for arid environments (as described inAragon et al., 2018)For a simple on-premises test of this PT-JPL model, run:fromgeeet.ptjplimportptjpl_aridptjpl_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)Thesecond notebook exampleis 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 examplehere(requires a GEE account).Two-source Energy Balance model (TSEB)geeetincludes a two-source energy balance model mostly based on the original parameterizations ofNorman 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:fromgeeet.tsebimporttseb_seriestseb_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:This notebookdemonstrates the inputs data setup usingLandsat-8 satellite imageryand meteorological data from theECMWF ERA5 reanalysis. The resulting image contains all the inputs necessary to run the TSEB model and is available as apublic GEE assetand can be visualized with thissample GEE code editor script.This notebookshows how to run the TSEB model using the sample GEE TSEB inputs asset. The resulting image contains all the inputs as well as the outputs of the TSEB model and is available as apublic GEE asset. It can also be visualized with thissample GEE code editor script.Finally,this notebookdemonstrates running the TSEB model using the same data but as numpy arrays. To do this, the sample inputs image was exported to aGeoTIFF file. It also compares the output of the "on-premises" model to the output from the GEE model run (the outputs image was also exported as aGeoTIFF file).ReferencesReferences for each model are found inREFERENCES.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, whilecite_all()shows all the references for that model.If you use this package for research, please cite the relevant model references.ContributionsContributions are welcome. Pleaseopen an issueto:suggest a relevant ET modelreport a bugreport an issueYou can also submit apull requestif you have another working ET model - at least with numpy arrays as inputs.CreditsThis package was created withCookiecutterand thegiswqs/pypackageproject template.