Skip to content
sertitPublic

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.

Topics

Resources

Code of conduct

Contributing

Stars

352 stars

Watchers

8 watching

Forks

Latest commit

ย 

History

1,994 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

pypi Conda Apache DOI stars Conda

eoreader_logo EOReader

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

Important

๐Ÿ’ก The goal of this library is to manage one satellite product at a time.
To handle more complicated sets of products (such as mosaics, pairs or time series), please consider using EOSets.

๐Ÿ›ฐ๏ธ Managed constellations

Optical

Sentinel-2 SAFE and Theia Sentinel-3 OLCI and SLSTR Venus Landsat 1 to 9 Harmonized Landsat-Sentinel PlanetScope, SkySat and RapidEye, Satellogic (Aleph-1), Pleiades and Pleiades-Neo SPOT-6/7 and 4/5 Vision-1 Vantor/Maxar (WorldViews, GeoEye) SuperView-1 GEOSAT-2

SAR

Sentinel-1 COSMO-Skymed 1st and 2nd Generation TerraSAR-X, TanDEM-X and PAZ SAR RADARSAT-2 and RADARSAT-Constellation ICEYE SAOCOM Capella

๐Ÿ”ฎ Features

EOReader implements sensor-agnostic features:

EOReader works mainly with:

EOReader allows you to create internal STAC catalogs directly from raw data.

Note

๐Ÿ’ก EOReader handles data from the past!
Legacy formats are mostly supported and if not, they can be requested by creating an issue with the legacy_format label.
This is super useful if you need to create an internal STAC catalog with old data.

๐Ÿ›  Installation

Pip

You can install EOReader via pip:

pip install eoreader

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

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

โšก๏ธ Quickstart

Optical

EOReader allows you to load and stack spectral bands, spectral indices, DEM and cloud bands agnostically from every handled optical constellation:

from eoreader.reader import Reader
from eoreader.bands import RED, GREEN, BLUE, NDVI, CLOUDS

# 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")

EOReader aligns spectral bands from every handled sensor to make any call to a band generic:
Optical Band Mapping

SAR

In the same way, you can import and stack radar bands from any handled SAR constellation, with the same pattern.

from eoreader.reader import Reader
from eoreader.bands import VV, VH, VV_DSPK, VH_DSPK

# 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")

Warning

โš ๏ธ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.

๐Ÿ“– Documentation

The API documentation can be found here.

๐Ÿ”— Examples

Available notebooks provided as examples:

Basics

  • Basic tutorial: first steps: open a product, load and stack bands
  • Optical data: spectral bands, indices, and cloud bands from optical constellations
  • SAR data: radar bands with SNAP orthorectification
  • VHR data: very high resolution sensors (Pleiades, WorldView, ...)
  • Remove clouds: cloud masking from brightness temperature measurements

Advanced

Experimental

  • Dask: lazy computation with dask-backed arrays
  • STAC: create SpatioTemporal Asset Catalog items from products

๐Ÿ“š Context

EOReader was created by SERTIT to support Copernicus Emergency Management Service rapid mapping. See CONTEXT.md for the full story.

๐ŸŽค Communication

Talks

  • GeoPython 2022 [ PDF ] [ YouTube ]
  • Mentioned in [Live+]SIG 2022 by ESRI France (in French): Enrichir ArcgisPro grรขce ร  des processus personnalisรฉs d'observation de la Terre [ PDF ]
  • Mentioned in GeoPython 2023 - FLORIA, a custom python pipeline for urban flood extraction from SAR multi-sensors, supported by U-Net convolutional network.
  • Mentioned in EGU 2023 - Cutting-edge developments in rapid mapping
  • FOSS4G 2023 [ PDF ] [ YouTube ]

Press Release

Articles

Blog

๐Ÿš€ Contributing

EOReader welcomes contributions, human-written or carefully reviewed AI-assisted:

๐Ÿ“ License

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

๐Ÿ–‹๏ธ Authors

EOReader has been created by ICube-SERTIT.

๐Ÿค 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.

Topics

Resources

Code of conduct

Contributing

Stars

352 stars

Watchers

8 watching

Forks

Releases

Used by

Contributors

Languages