Code, notebooks and data for the Easy-EO video series.
Library: Tommy-Burns/easy-eo · Docs: easy-eo.readthedocs.io · Channel: @Tommy's Codebase
If you have never touched a GeoTIFF, watch Episode 1 and run this:
import eeo
from eeo.datasets import load_sample_dataset
sd = load_sample_dataset() # downloads + caches a hosted Sentinel-2 subset
scene = eeo.load_raster(sd.sentinel2_cog_stacked) # red, green, blue, nir
scene.ndvi(red="red", nir="nir").plot_raster(cmap="RdYlGn")That is a real NDVI map of a real Sentinel-2 scene, in five lines, with no GDAL setup and no downloads to manage by hand.
Pick one package manager and stay with it. Mixing pip and conda in the same
environment can break geospatial stacks.
I recommend installing it into an environment created with conda conda create -n eeo-env python=3.12 (easy-eo requires Python 3.10+) instead of using a regular Python environment python -m venv .venv.
After creating the conda environment, proceed to install easy-eo
conda (recommended for GDAL-based stacks):
conda activate eeo-env
conda install -c conda-forge easy-eo jupyterlab
# easy-eo provides a STAC extra, install it via:
conda install -c conda-forge pystac-client planetary-computer
# easy-eo provides an xarray extra, install it via:
conda install -c conda-forge easy-eo xarray rioxarraypip:
Using pip in a conda environment
conda activate eeo-env
pip install easy-eo jupyterlab
# easy-eo provides a STAC extra, install it via:
pip install "easy-eo[stac]"
# easy-eo provides an xarray extra, install it via:
pip install "easy-eo[xarray]"
# or install both extras with
pip install "easy-eo[stac,xarray]"easy-eo requires Python 3.10+. Verify installation with:
import eeo; eeo.show_versions()- Pause on the code cells. Every cell in the notebook is the cell in the video, in the same order, so you can catch up without scrubbing.
- Stuck? Open an issue here with the episode number and the full traceback.
- Bug in the library itself? That belongs on easy-eo/issues. I read both.
- Want an episode on something? Open a Discussion.
Easy-EO is a lightweight, extensible Python library for raster Earth Observation:
chainable processing, band algebra, spectral indices and visualization, without
the GDAL boilerplate. It applies one written-down nodata and dtype contract to
every operation, ships type hints (py.typed), and is tested on Python 3.10–3.14
across Linux, macOS and Windows.
If the series is useful, ⭐ the library repo.
- Notebooks and code in this repo: MIT (see LICENSE).
- Satellite imagery belongs to its providers:
- Sentinel-2 data is © Copernicus / ESA, and
- Copernicus DEM is © ESA / Airbus.
Attribution notes are in each notebook.