Skip to main content

Easy-EO

Easy-EO logo

CI codecov PyPI Python versions Documentation Status License: MIT

Easy-EO is a lightweight, extensible Python library for raster-based Earth Observation (EO) analysis which allows for chainable raster processing, algebra, and visualization. It provides high-level abstractions over libraries such as Rasterio, NumPy, and Matplotlib, enabling users to perform common earth-observation analyses and visualization tasks efficiently, without dealing with the underlying complexity.


Features

  • Raster operations with spatial awareness
  • Algebraic operations (add, subtract, multiply, divide)
  • Spectral index library (ndvi, ndwi, ndmi, ndbi, evi, savi)
  • Resampling, reprojection, and alignment
  • Clip rasters using vectors or bounding boxes
  • Normalization (min-max, percentile, z-score)
  • Named bands - address bands by name anywhere an index is accepted
  • STAC data access - search and load Sentinel-2/Landsat scenes, reading only the area of interest
  • xarray interoperability (to_xarray() / from_xarray())
  • Hosted sample dataset, one call away (eeo.datasets.load_sample_dataset())
  • Visualization helpers (bands, composites, histograms)
  • Backend-aware design (currently NumPy and Rasterio)

Installation

conda create -n env_name python=3.10
conda activate env_name
pip install easy-eo

Quick Example

from eeo import load_raster

ds_nir = load_raster("path/to/nir.tif")
ds_red = load_raster("path/to/red.tif")

# Chainable example: clip -> resample -> compute NDVI -> multiply
result = (
    ds_nir.clip_raster_with_bbox((0, 0, 1000, 1000))
    .resample(scale_factor=2)
    .normalized_difference(ds_red)
    .multiply(100)
)

Or try with a hosted sample data

from eeo.datasets import load_sample_dataset
from eeo import load_raster

sd = load_sample_dataset()

scene = load_raster(sd.sentinel2_cog_stacked)  # red, green, blue, nir bands

ndvi = scene.ndvi(red="red", nir="nir")
ndvi.plot_raster()

Tutorials

Sixteen runnable notebooks live in examples/, from first install through to complete analyses (flood mapping, drought stress, land cover, terrain). Each one opens in Colab with no local setup — the first cell installs Easy-EO when it detects Colab:

Quickstart: NDVI — open a scene, compute an index, plot it Colab
Search and load from STAC — find real scenes, read them over HTTP Colab
Flood mapping with NDWI — Pakistan 2022, before/after, area affected Colab

The full index, including what each notebook covers, is in examples/README.md and in the tutorials page of the documentation.

Supported Backends

Backend Description
NumPy Fast, in-memory arrays without I/O
Rasterio Full geospatial support (CRS, transform, resampling)

Documentation

📚 Full documentation is available at:

👉 Easy-EO Documentation

Project Status

🚧 Active development The API is stabilizing but may change before v1.0.

Contributing

Contributions are welcome!

  • Bug reports
  • Feature requests
  • Documentation improvements

Please open an issue or pull request on GitHub.

License

MIT License © 2025 Thomas Burns Botchwey

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

easy_eo-0.2.0.tar.gz (73.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

easy_eo-0.2.0-py3-none-any.whl (88.2 kB view details)

Uploaded Python 3

File details

Details for the file easy_eo-0.2.0.tar.gz.

File metadata

  • Download URL: easy_eo-0.2.0.tar.gz
  • Upload date:
  • Size: 73.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for easy_eo-0.2.0.tar.gz
Algorithm Hash digest
SHA256 331c8bed961f61f75e421729c7a3a525ac5fc45bdb81f39e2536d0109216a933
MD5 e824089fcffce7c1685dabb4fba5e049
BLAKE2b-256 c5ff9786c29e33f09a929b1ddcd1af983c75e62211d0406654d1dc52e0f38021

See more details on using hashes here.

Provenance

The following attestation bundles were made for easy_eo-0.2.0.tar.gz:

Publisher: release.yml on Tommy-Burns/easy-eo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file easy_eo-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: easy_eo-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 88.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for easy_eo-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8a82011d1b954217d64141cdb37d09c32851ba461bc071375c6b35f5daa42221
MD5 77f20c0577e0be9ff06f9e62e5855dd0
BLAKE2b-256 56f620885bfc9eb46e7889248a49f01e6b538b976748832ca0cdb21c25414ab6

See more details on using hashes here.

Provenance

The following attestation bundles were made for easy_eo-0.2.0-py3-none-any.whl:

Publisher: release.yml on Tommy-Burns/easy-eo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.4.0

2 files

0.3.1

2 files

0.3.0

2 files

This release

0.2.0 This release

2 files

0.1.0

2 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