End-to-end burn scar mapping workflow using Sentinel-2 L2A imagery and the differenced Normalized Burn Ratio (dNBR) methodology. All processing is performed directly on the Copernicus Data Space Ecosystem (CDSE) S3 storage using windowed reads — no full scene downloads required.
Getting started: only edit Cell 1a (User Input). All other cells run automatically.
The workflow is demonstrated on the Corbières wildfire (August 2025), which burned approximately 16,000 ha in the Corbières massif, southern France — the largest wildfire in France since 1949.
Second example demonstrating the workflow on a wildfire in New South Wales, Australia — validating southern hemisphere UTM zone detection (EPSG:327XX).
Each run creates a subfolder under outputs/{event_title}/ containing:
{event_title}_severity_classes.tif— classified burn severity raster (GeoTIFF, uint8){event_title}_burn_perimeter.geojson— vectorized burn perimeter (WGS84){event_title}_overview.png— three-panel figure: pre/post RGB + severity map{event_title}_static_map.png— cartographic map with OSM basemap, scale bar, north arrow{event_title}_severity_overlay.png— severity PNG for interactive folium map- Interactive folium map (displayed inline in notebook)
- Free CDSE account with S3 credentials
- AOI GeoJSON exported from Copernicus Browser
- Two cloud-free Sentinel-2 L2A scenes (cloud cover < 10%) for pre- and post-event dates
- Sentinel-2 tile ID covering your AOI (verify in Copernicus Browser)
Note: AOI must fall entirely within a single Sentinel-2 tile.
- Clone the repository:
git clone https://github.com/AlexVollstaedt/burn_scar_analysis.git
cd burn_scar_analysis- Create a conda environment and install dependencies:
conda create -n burnscar python=3.10
conda activate burnscar
pip install -r requirements.txt- Create a
.envfile in the project root: CDSE_ACCESS_KEY=your_access_key CDSE_SECRET_KEY=your_secret_key - Open the notebook in JupyterLab:
jupyter lab burn_scar_mapping.ipynb-
Edit Cell 1a with your AOI, dates, tile ID and event title
-
Run all cells: Kernel → Restart & Run All
- Define AOI and search timeframe
- Search CDSE OData catalogue for matching Sentinel-2 L2A scenes
- List S3 bucket structure to locate band file paths
- Windowed read of bands directly from CDSE S3
- Compute NBR and dNBR
- Classify dNBR into burn severity classes (USGS schema)
- Vectorize burn perimeter and save as GeoJSON
- Save classified severity raster as GeoTIFF
- Generate visualizations and save as PNG
- Interactive burn scar map (folium, inline)
- AOI must fall entirely within a single Sentinel-2 tile — multi-tile support planned
- Southern hemisphere fully supported via automatic UTM zone detection (EPSG:327XX)
Alexander Vollstädt, 2026

