Introduction

GeoCARET provides a Python interface for Google Earth Engine (GEE): A planetary-scale platform for Earth science data & analysis.

Functionality

GeoCARET was created to provide the following functionalities:

  • To allow scheduling large jobs on Google Earth Engine from within the Python programming language. By large jobs we mean computations larger than what can be put into single scripts within the Google Earth Engine’s scripting window and involving several consecutive calculations where the outputs from the previous calculation steps are required as inputs in the next calculation steps.

  • To Automate the process of uploading inputs and downloading outputs between local machines and Google Earth Engine’s servers. This step eliminates manual steps associated with data handling.

  • To enable executing computations on Google Earth Engine from Command Line.

Architecture

A high-level architecture of GeoCARET and its functional interconnections with Google Earth Engine and Google Drive, is illustrated in Figure 1. GeoCARET uses Google Earth Engine (GEE) for geospatial computation on publicly available assets accessible openly from within the GEE platform as well as the private assets stored in the users’ project folders. The computations and data storage are handled on the Google’s dedicated servers. GeoCARET communicates with GEE via the Earth Engine Python API. Data exchange between the user’s local computer and GEE is facilitated via Google Drive linked to the user’s Google account. The communication is facilitated via the designated Python API and with the help of the Google Drive Downloader gdown.


GeoCARET overview

Figure 1 Functional diagram illustrating connections between GeoCARET, Google Earth Engine and Google Drive for uploading inputs, scheduling calculations and saving outputs to Google Drive and local folders.

The usage of GeoCARET follows the following steps: (1) Uploading input data from the local folder to GEE, (2) Running Calculations on GEE, (3) Fetching Outputs from Google Drive to the local folder.

Origins

GeoCARET originated from a research project aimed at automating the estimation of greenhouse gas (GHG) emissions from reservoirs. Automation was essential to facilitate the analysis of emissions from multiple reservoirs, which preclude all the time-consuming manual operations that had been previously required for estimating reservoir emissions. GeoCARET provides inputs to the state-of-the-art reservoir emission model G-Res, which is utilized in our open-source software RE-Emission.

G-Res requires a significant amount of input data, including environmental and climatic properties of reservoir catchments, as well as the morphology and characteristics of the inundated areas associated with reservoir creation. Initially, obtaining this data was time-consuming because it required manual delineation of the catchment and reservoir contours for each reservoir being analyzed, followed by calculations of the various properties of the catchment and reservoir, respectively.

GeoCARET was developed to automate the process of calculating input data for G-Res (and Re-Emission) by streamlining the delineation of reservoirs and catchments and the calculation of their parameters. This automation leverages global geospatial data layers related to hydrological, geomorphological, climatic, and land characteristics.

Note

GeoCARET is currently used solely for its intended initial purpose, albeit it is undergoing active (re)development to enable more applications - see Vision.

Vision

GeoCARET is under active development. We are working towards changing GeoCARET from being a specialized tool serving a single purpose to being a more generic framework for running and formulating various calculation jobs related to reservoir and catchment analysis.

Our vision for the software is to make it into a collection of classes for building and orchestrating task pipelines which can achieve various tasks defined by the user. In this manner it can be used to facilitate different computations related to reservoirs and catchments that could be of use to the water community.

Some of the examples of such new applications can be:

  • Calculation of bathymetric tables for new (proposed) reservoirs.

  • Detection of reservoirs from land cover maps and/or other remote sensing layers.

  • Calculation of other reservoir and catchment metrics, such as e.g. displaced population by reservoir creation.

What follows, this documentation is expected to undergo many changes as the software architecture evolves to incorporate new features.