Python Remote Sensing & Raster Processing Pipelines
This site is a technical documentation hub for Python-based Earth observation and geospatial data engineering.
It covers the complete raster processing stack — from low-level pixel I/O with rasterio
to multi-dimensional analysis with xarray, lazy cloud-native reads from COGs, and
end-to-end satellite processing pipelines.
Whether you work with Sentinel-2, Landsat, or custom aerial imagery, the patterns here are designed for production environments — distributed Dask clusters, cloud object storage, and fully reproducible analytical workflows. All code examples use the canonical Python remote sensing stack and are validated for correctness.
The content is organised into five main sections. Core Raster Fundamentals & STAC Mapping covers the architectural foundations: raster data models, CRS transformations, COG internals and authoring, STAC catalog querying with CQL2, band math, data types and numerical precision, Zarr datacubes, and joining rasters to vector geometries for zonal statistics. Satellite Processing Workflows & Index Pipelines takes you end-to-end — atmospheric correction, terrain analysis, clipping, masking, mosaicking, spectral index derivation, temporal aggregation, and defensible change detection. Cloud Execution & Orchestration scales those pipelines to production with Dask, Prefect, reproducible container images, cloud clusters on Coiled and AWS Batch, and the monitoring that keeps them healthy. Raster Machine Learning & Inference turns imagery into predictions — training datasets, pixel features, tiled inference, accuracy assessment, and serving outputs. Visualization, Tiling & Web Delivery shows the results — publication-quality figures, dynamic tile servers, interactive notebooks, and web-ready rasters.
Explore the Documentation
Core Raster Fundamentals & STAC Mapping
Raster data models, COG internals, CRS transformations, STAC querying, band math, pixel resolution and scaling — the architectural bedrock of every raster pipeline.
- Cloud-Optimized GeoTIFF structure
- CRS transformations with rasterio
- Band math operations with xarray
- STAC catalog queries with pystac-client
- Raster metadata extraction & drift audits
- Writing and validating COGs
- Zonal statistics & vector–raster joins
- Zarr & cloud-native datacubes
- Raster dtypes, scaling & precision
Satellite Processing Workflows & Index Pipelines
End-to-end satellite processing — clipping, cloud masking, resampling, mosaicking, spectral index calculation, and temporal aggregation at continental scale.
- Automated image clipping & cropping
- Cloud & shadow masking (FMask, s2cloudless)
- Spectral index (NDVI, EVI, NDWI) pipelines
- Seamless mosaicking with feathering
- Advanced resampling & cross-mission grids
- Temporal aggregation & time series
- Change detection & differencing
- Atmospheric correction & surface reflectance
- Terrain analysis & DEM products
Cloud Execution & Orchestration
Take local pipeline code to production — Dask clustering, Prefect orchestration, Coiled and AWS Batch, and cost-aware execution for continental-scale raster workloads.
- Scaling raster processing with Dask
- Orchestrating pipelines with Prefect
- Distributed compute on Coiled & AWS Batch
- Tuning Dask chunk sizes for raster cubes
- Optimizing pipeline cost & performance
- Containerizing geospatial environments
- Benchmarking COG read throughput
- Monitoring & observability for pipelines
Raster Machine Learning & Inference
From labelled polygons to published predictions — building training data, engineering pixel features, running models over huge rasters, and measuring accuracy honestly.
- Training datasets from satellite imagery
- Feature engineering for pixel models
- Tiled inference over large rasters
- Accuracy assessment & confusion matrices
- Exporting & serving model outputs
Visualization, Tiling & Web Delivery
Put rasters in front of people — Matplotlib figures, dynamic tiles with TiTiler, interactive exploration in Jupyter, and rasters prepared for the web.
- Rendering rasters with Matplotlib
- Serving raster tiles with TiTiler
- Interactive exploration in Jupyter
- Preparing rasters for the web