Skip to content

Remote-sensing opensource python library reading optical and SAR sensors, loading and stacking bands, clouds, DEM and spectral indices in a sensor-agnostic way.

License

Notifications You must be signed in to change notification settings

Zhenkun-Lei/eoreader

 
 

Repository files navigation

pypi Conda Tests Gitter Apache DOI stars Conda Twitter

eoreader_logo EOReader

EOReader is a remote-sensing opensource python library reading optical and SAR constellations, loading and stacking bands, clouds, DEM and spectral indices in a sensor-agnostic way.

Optical SAR
Sentinel-2 and Sentinel-2 Theia
Sentinel-3 OLCI and SLSTR
Landsat 1 to 9
PlanetScope, SkySat and RapidEye
Pleiades and Pleiades-Neo
SPOT-6/7
SPOT-4/5
Vision-1
Maxar (WorldViews, GeoEye)
SuperView-1
Sentinel-1
COSMO-Skymed 1st and 2nd Generation
TerraSAR-X, TanDEM-X and PAZ SAR
RADARSAT-2 and RADARSAT-Constellation
ICEYE
SAOCOM

It also implements additional sensor-agnostic features:

EOReader works with xarrays.DataArray and geopandas.GeoDataFrames

Python Quickstart

Optical

from eoreader.reader import Reader
from eoreader.bands import *

# Sentinel-2 path
s2_path = "S2B_MSIL1C_20181126T022319_N0207_R103_T51PWM_20181126T050025.SAFE"

# Create the reader object and open satellite data
reader = Reader()

# The reader will recognize the constellation from its product structure
s2_prod = reader.open(s2_path)

# Load some bands and index
bands = s2_prod.load([NDVI, GREEN, CLOUDS])

# Create a stack with some bands
stack = s2_prod.stack([RED, GREEN, BLUE], stack_path="s2_rgb_stack.tif")

SAR

from eoreader.reader import Reader
from eoreader.bands import *

# Sentinel-1 GRD path
s1_path = "S1B_EW_GRDM_1SDH_20200422T080459_20200422T080559_021254_028559_784D.zip"

# Create the reader object and open satellite data
reader = Reader()

# The reader will recognize the constellation from its product structure
s1_prod = reader.open(s1_path)

# Load some bands and index
bands = s1_prod.load([VV, VH])

# Create a stack with some bands
stack = s1_prod.stack([VV_DSPK, VH_DSPK], stack_path="s1_stack.tif")

⚠️SNAP and SAR

SAR products need ESA SNAP free software to be orthorectified and calibrated. Ensure that you have the folder containing your gpt executable in your PATH. If you are using SNAP 8.0, be sure to have your software up-to-date (SNAP version >= 8.0).

Documentation

The API documentation can be found here.

Examples

Available notebooks provided as examples:

Installation

Pip

You can install EOReader via pip:

pip install eoreader

EOReader mainly relies on geopandas and rasterio (through rioxarray).

On Windows and with pip, you may face installation issues due to GDAL. The well known workaround of installing from Gohlke's wheels also applies here. Please look at the rasterio page to learn more about that.

Conda

You can install EOReader via conda:

conda config --env --set channel_priority strict
conda install -c conda-forge eoreader

Context

SERTIT is part of the Copernicus Emergency Management Service rapid mapping and risk and recovery teams.

In these activations, we need to deliver information (such as flood or fire delineations, landslides mapping, etc.) based on various constellations (more than 10 optical and 5 SAR). As every minute counts in production, it seemed crucial to harmonize the ground on which are built our production tools, in order to make them as sensor-agnostic as possible.

Thus, thanks to EOReader, these tools are made independent to the constellation:

  • the algorithm (and its developer) can focus on its core tasks (such as extraction) without taking into account the constellation characteristics (how to load a band, which band correspond to which band number, which band to use for this index...)
  • the addition of a new constellation is done effortlessly (if existing in EOReader) and without any modification of the algorithm
  • the maintenance is simplified and the code is way more readable (no more ifs regarding the sensor type!)
  • the testing is also simplified as the sensor-related parts are tested in this library

However, keep in mind that the support of all the constellations used in CEMS is done in the best effort mode, especially for commercial data. Indeed, we may not have faced every product type, sensor mode or order configuration, so some details may be missing. If this happens to you, do not hesitate to make a PR or write an issue about that !

Talks

  • GeoPython 2022 [ PDF ] [ YouTube ]
  • Mentionned in [Live ]SIG 2022 by ESRI France (in French): Enrichir ArcgisPro grâce à des processus personnalisés d'observation de la Terre [ PDF ]

Press Release

Articles

License

EOReader is licensed under Apache License v2.0. See LICENSE file for details.

Authors

EOReader has been created by ICube-SERTIT. Follow us on Twitter

Credits

EOReader is built on top of amazing libs, without which it couldn't have been coded:

About

Remote-sensing opensource python library reading optical and SAR sensors, loading and stacking bands, clouds, DEM and spectral indices in a sensor-agnostic way.

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%