Skip to content

Latest commit

 

History

History
executable file
·
284 lines (193 loc) · 9.02 KB

index.rst

File metadata and controls

executable file
·
284 lines (193 loc) · 9.02 KB

Welcome to eemont!

A Python package that extends Google Earth Engine

images/eemont.png

.. toctree::
   :maxdepth: 2
   :caption: Extended Classes
   :hidden:

   classes/eefeature
   classes/eefeaturecollection
   classes/eegeometry
   classes/eeimage
   classes/eeimagecollection
   classes/pddataframe

.. toctree::
   :maxdepth: 2
   :caption: Modules
   :hidden:

   modules/common

.. toctree::
   :maxdepth: 2
   :caption: User Guide
   :hidden:

   guide/closestImage
   guide/constructors
   guide/dataConversion
   guide/imageScaling
   guide/maskingClouds
   guide/overloadedOperators
   guide/spectralIndices
   guide/timeSeries

.. toctree::
   :maxdepth: 2
   :caption: Other Languages
   :hidden:

   guide/eemontR

.. toctree::
   :maxdepth: 2
   :caption: What's new?
   :hidden:

   changelog

Overview

Google Earth Engine is a cloud-based service for geospatial processing of vector and raster data. The Earth Engine platform has a JavaScript and a Python API with different methods to process geospatial objects. Google Earth Engine also provides a HUGE PETABYTE-SCALE CATALOG of raster and vector data that users can process online (e.g. Landsat Missions Image Collections, Sentinel Missions Image Collections, MODIS Products Image Collections, World Database of Protected Areas, etc.). The eemont package extends the Google Earth Engine Python API with pre-processing and processing tools for the most used satellite platforms by adding utility methods for different Earth Engine Objects that are friendly with the Python method chaining.

How does it work?

The eemont python package extends the following Earth Engine classes:

New utility methods and constructors are added to above-mentioned classes in order to create a more fluid code by being friendly with the Python method chaining. These methods are mandatory for some pre-processing and processing tasks (e.g. clouds masking, shadows masking, image scaling, spectral indices computation, etc.), and they are presented as simple functions that give researchers, students and analysts the chance to analyze data with far fewer lines of code.

Look at this simple example where a Sentinel-2 Surface Reflectance Image Collection is pre-processed and processed in just one step:

import ee, eemont

ee.Authenticate()
ee.Initialize()

point = ee.Geometry.PointFromQuery('Cali, Colombia',user_agent = 'eemont-example') # Extended constructor

S2 = (ee.ImageCollection('COPERNICUS/S2_SR')
    .filterBounds(point)
    .closest('2020-10-15') # Extended (pre-processing)
    .maskClouds(prob = 70) # Extended (pre-processing)
    .scale() # Extended (pre-processing)
    .index(['NDVI','NDWI','BAIS2'])) # Extended (processing)

And just like that, the collection was pre-processed, processed and ready to be analyzed!

Installation

Install the latest eemont version from PyPI by running:

pip install eemont

Features

The following features are extended through eemont:

point = ee.Geometry.Point([-76.21, 3.45]) # Example ROI
  • Overloaded operators (+, -, *, /, //, %, **, <<, >>, &, |, <, <=, ==, !=, >, >=, -, ~):
S2 = (ee.ImageCollection('COPERNICUS/S2_SR')
    .filterBounds(point)
    .sort('CLOUDY_PIXEL_PERCENTAGE')
    .first()
    .maskClouds()
    .scale())

N = S2.select('B8')
R = S2.select('B4')
B = S2.select('B2')

EVI = 2.5 * (N - R) / (N + 6.0 * R - 7.5 * B + 1.0) # Overloaded operators
  • Clouds and shadows masking:
S2 = (ee.ImageCollection('COPERNICUS/S2_SR')
    .maskClouds(prob = 65, cdi = -0.5, buffer = 300) # Clouds and shadows masking
    .first())
  • Image scaling:
MOD13Q1 = ee.ImageCollection('MODIS/006/MOD13Q1').scale() # Image scaling
  • Spectral indices computation (vegetation, burn, water, snow, drought and kernel indices):
L8 = (ee.ImageCollection('LANDSAT/LC08/C01/T1_SR')
    .filterBounds(point)
    .maskClouds()
    .scale()
    .index(['GNDVI','NDWI','BAI','NDSI','kNDVI'])) # Indices computation

indices = eemont.indices()
indices.BAIS2.formula # check info about spectral indices
indices.BAIS2.reference

eemont.listIndices() # Check all available indices
  • Closest image to a specific date:
S5NO2 = (ee.ImageCollection('COPERNICUS/S5P/OFFL/L3_NO2')
    .filterBounds(point)
    .closest('2020-10-15')) # Closest image to a date
  • Time series by region (or regions):
f1 = ee.Feature(ee.Geometry.Point([3.984770,48.767221]).buffer(50),{'ID':'A'})
f2 = ee.Feature(ee.Geometry.Point([4.101367,48.748076]).buffer(50),{'ID':'B'})
fc = ee.FeatureCollection([f1,f2])

S2 = (ee.ImageCollection('COPERNICUS/S2_SR')
   .filterBounds(fc)
   .filterDate('2020-01-01','2021-01-01')
   .maskClouds()
   .scale()
   .index(['EVI','NDVI']))

# By Region
ts = S2.getTimeSeriesByRegion(reducer = [ee.Reducer.mean(),ee.Reducer.median()],
                              geometry = fc,
                              bands = ['EVI','NDVI'],
                              scale = 10)

# By Regions
ts = S2.getTimeSeriesByRegions(reducer = [ee.Reducer.mean(),ee.Reducer.median()],
                               collection = fc,
                               bands = ['EVI','NDVI'],
                               scale = 10)
  • New Geometry, Feature and Feature Collection constructors:
seattle_bbox = ee.Geometry.BBoxFromQuery('Seattle',user_agent = 'my-eemont-query-example')
cali_coords = ee.Feature.PointFromQuery('Cali, Colombia',user_agent = 'my-eemont-query-example')
amazonas_river = ee.FeatureCollection.MultiPointFromQuery('Río Amazonas',user_agent = 'my-eemont-query-example')

Methods

The above-mentioned features extend the following Earth Engine classes:

ee.Feature

.. currentmodule:: eemont.feature

.. autosummary::

   BBoxFromQuery
   PointFromQuery

ee.FeatureCollection

.. currentmodule:: eemont.featurecollection

.. autosummary::

   MultiPointFromQuery

ee.Geometry

.. currentmodule:: eemont.geometry

.. autosummary::

   BBoxFromQuery
   PointFromQuery
   MultiPointFromQuery

ee.Image

.. currentmodule:: eemont.image

.. autosummary::

   index
   maskClouds
   scale

ee.ImageCollection

.. currentmodule:: eemont.imagecollection
.. autosummary::

   closest
   getTimeSeriesByRegion
   getTimeSeriesByRegions
   index
   maskClouds
   scale

Non-Earth Engine classes such as pd.DataFrame are also extended:

pd.DataFrame

.. currentmodule:: eemont.dataframe
.. autosummary::

   toEEFeatureCollection

Supported Platforms

The Supported Platforms for each method can be found in the eemont documentation.

  • Masking clouds and shadows supports Sentinel Missions (Sentinel-2 SR and Sentinel-3), Landsat Missions (SR products) and some MODIS Products. Check all details in User Guide > Masking Clouds and Shadows > Supported Platforms.
  • Image scaling supports Sentinel Missions (Sentinel-2 and Sentinel-3), Landsat Missions and most MODIS Products. Check all details in User Guide > Image Scaling > Supported Platforms.
  • Spectral indices computation supports Sentinel-2 and Landsat Missions. Check all details in User Guide > Spectral Indices > Supported Platforms.
  • Getting the closest image to a specific date and time series supports all image collections with the system:time_start property.

License

The project is licensed under the MIT license.