Skip to main content

pypi Conda Apache DOI stars Conda

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.

🛰️ 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 allow you to create internal STAC catalogs directly from raw data.

⚡️ Quickstart

Optical

EOReader allows you ta 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")

📖 Documentation

The API documentation can be found here.

🔗 Examples

Available notebooks provided as examples:

Basics

Advanced

Experimental

🛠 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

📚 Context

As one of the Copernicus Emergency Management Service Rapid Mapping and Risk and Recovery Mapping operators, SERTIT needs to deliver geoinformation (such as flood or fire delineation, landslides mapping, etc.) based on multiple EO constellations.

In rapid mapping, it is always important to have access to various sensor types, resolutions, and satellites. Indeed, SAR sensors are able to detect through clouds and during nighttime (which is particularly useful during flood and storm events), while optical sensors benefit from of multi spectral bands to better analyze and classify the crisis information.

As every minute counts in the production of geoinformation in an emergency mode, it seemed crucial to harmonize the ground on which are built our production tools, in order to make them as sensor-agnostic as possible.

This is why SERTIT decided to decouple the sensor handling from the extraction algorithms: the latter should be able to ingest semantic bands (i.e. RED or VV) without worrying about how to load the specific sensor band or in what unit it is.
The assumption was made that all the spectral bands from optical sensors could be mapped between each other, in addition to the natural mapping between SAR bands.

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 sensor characteristics (how to load a band, which band correspond to which band number, …)
✅ new sensor addition is effortless (if existing in EOReader) and requires no algorithm modification
✅ maintenance is simplified and the code quality is significantly improved
✅ testing is also simplified as the sensor-related parts are tested in EOReader 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!

🎤 Communication

Talks

Press Release

Articles

Blog

📝 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:

Metadata

Release files for eoreader 0.24.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for eoreader 0.24.3
File Size Uploaded
eoreader-0.24.3.tar.gz 352.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for eoreader 0.24.3
File Interpreter ABI Platform
eoreader-0.24.3-py3-none-any.whl Python 3 none any Details

Total release size: 728.2 kB

Release files / eoreader-0.24.3.tar.gz

Download URL eoreader-0.24.3.tar.gz
Size 352.8 kB
Tags Source
SHA-256 checksum
How to use checksums
284acdb6c0ec8bf7463a22f52a72ea2b45faf6d875658598a56a7ba4cb72646c
BLAKE2b-256 checksum
How to use checksums
31bf2b8838e0024b1654c6819c0c144a8a2e38f499245dc9e0a2d2d2582b36d3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 7, 2026.

Transparency log

Release files / eoreader-0.24.3-py3-none-any.whl

Download URL eoreader-0.24.3-py3-none-any.whl
Size 375.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e39063f19f908af47693c61dbba3d2a5b8996cb05e9d19bd420aab6ba5f6200b
BLAKE2b-256 checksum
How to use checksums
f92091286a17ce568ac6f31ee55e3f2de66deb77c563b87332a1b0dcd9f985da
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 7, 2026.

Transparency log

Release history Release notifications | RSS feed

0.24.4

2 release files

This release

0.24.3 This release

2 release files

0.24.2

2 release files

0.24.1

2 release files

0.22.2

2 release files

0.22.0

2 release files

0.21.9

2 release files

0.21.8

2 release files

0.21.6

2 release files

0.21.5

2 release files

0.21.2

2 release files

0.20.4

2 release files

0.20.3

2 release files

0.20.2

2 release files

0.20.1

2 release files

0.20.0

2 release files

0.19.4

2 release files

0.19.3

2 release files

0.19.2

2 release files

0.19.1

2 release files

0.17.0

2 release files

0.15.0

2 release files

0.14.0

2 release files

0.11.2

2 release files

0.11.1

2 release files

0.11.0

2 release files

0.9.5

2 release files

0.9.4

2 release files

0.9.3

2 release files

0.9.2

2 release files

0.9.1

2 release files

0.9.0

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.4

2 release files

0.6.3

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.8

2 release files

0.4.7

2 release files

0.4.6

2 release files

0.4.5

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.2

2 release files

0.2.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page