.. Easy-EO documentation master file, created by
sphinx-quickstart on Tue Dec 16 23:28:11 2025.
You can adapt this file completely to your liking, but it should at least
contain the root `toctree` directive.
Easy-EO documentation
=====================
Easy-EO is a Python package 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.
It supports all ``rasterio`` supported datasets since it is built on ``rasterio``.
Why Easy-EO?
------------
Working directly with libraries like Rasterio can be powerful, but they often require verbose
boilerplate code for simple operations such as raster reprojection, resampling, arithmetic
between rasters, clipping, mosaicking, or plotting. Easy-EO abstracts these routines into
**high-level, chainable methods**, allowing users to:
- Perform multiple operations in a single, readable chain.
- Persist intermediate results **in memory** without writing to disk unnecessarily.
- Automatically align rasters with differing shapes or coordinate reference systems.
- Return a consistent **EEORasterDataset** object from each operation, enabling further chaining.
- Use **terminal visualization methods** for plotting bands, composites, and histograms,
which do not return EEORasterDataset but instead display results.
Chainable Workflow
------------------
All methods in Easy-EO are designed to be chainable, except for visualization operations
which are terminal. For example:
.. code-block:: python
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)
Visualization is always done at the end of the chain:
.. code-block:: python
# Terminal operation: display raster and histogram
result.plot_raster_with_histogram(bands=[1,2], stretch=True)
Key Features
------------
- **Raster algebra:** Supports pixel-wise addition, subtraction, multiplication, division, and power operations. Operator overloading allows `+`, `-`, `*`, `/`, and `**` for concise syntax.
- **Raster indices:** Compute normalized difference indices (e.g., NDVI) or custom indices, returning either NumPy arrays or EEORasterDataset for further chaining.
- **Spatial operations:** Clip rasters using bounding boxes or vector geometries, mosaic multiple rasters, or stack rasters as new bands.
- **Standardization & normalization:** Apply z-score, min-max, or percentile-based normalization.
- **Visualization:** Plot individual bands, composites, histograms, or raster with histogram. Supports multi-band rasters and percentile-based contrast stretching.
Getting Started
---------------
See :doc:`getting_started` for step-by-step instructions on loading rasters, performing
arithmetic, computing indices, and visualizing results.
.. toctree::
:maxdepth: 2
:caption: User Guide
getting_started
user_guide/core_dataset
user_guide/ops
user_guide/preprocessing
user_guide/visualization
user_guide/statistical_locations
backends
.. toctree::
:maxdepth: 1
:caption: API Reference
modules/core
modules/adapters
modules/analysis
modules/ops
modules/preprocessing
modules/viz