Measuring forest loss & water-body change for carbon credits (MRV)
This project builds a reproducible pipeline in Google Earth Engine API (JavaScript & Python/Colab) to detect and quantify
deforestation and water surface dynamics across South Africa. It includes tree cover monitoring, water body analysis, carbon stock estimation, and carbon emissions tracking to support afforestation and carbon credit initiatives. Outputs feed ArcGIS Online maps & dashboards and support carbon credit monitoring, reporting, and verification (MRV).
Tech stack
- Google Earth Python API
- GeoTIFF/COG →ArcGIS Online
Workflow Diagram
The following diagram outlines the overall project workflow, data sources, and outputs:
flowchart TD
subgraph Data["Data Sources"]
S1["Sentinel-1 SAR (VV/VH)"]
S2["Sentinel-2 SR (NDVI/NDWI)"]
L5["Landsat 5 (Temperature)"]
OSM["OpenStreetMap (Rivers & Dams)"]
DW["Dynamic World (Trees prob.)"]
HAN["Hansen GFC (baseline & loss)"]
GAUL["FAO GAUL (province boundary)"]
end
subgraph EE["Earth Engine Processing"]
A["Ingest & Preprocess
(cloud mask, SAR prep, clip)"]
B["Annual Composites 2015–2024
(NDVI/NDWI, DW Trees mean)"]
C["Change Detection
(NDVI/DW transitions, SAR cues)"]
D["Post-process & Vectorize
(min-area filters, cleaning)"]
E["Summaries & QA/QC sample points"]
end
subgraph Exports["Exports"]
R1["COG/GeoTIFF rasters"]
V1["GeoJSON/Shapefile vectors"]
T1["CSV time series"]
M1["EE Tile Service / titiler"]
end
subgraph Tools["Apps"]
QG["QGIS\nvisualize/edit/validate"]
AG["ArcGIS Online\nhost layers & dashboard"]
end
Data --> A
A --> B --> C --> D --> E
E --> R1
E --> V1
E --> T1
B --> M1
R1 --> QG
R1 --> AG
V1 --> AG
T1 --> AG
M1 --> AG
Why
Reliable measurement of forest cover change and water body extent is critical for nature‑based carbon projects and environmental stewardship. This work packages scalable EO methods so results are auditable and easy to operationalize.
Datasets
The project utilizes the following datasets, all integrated via Google Earth Engine for efficient processing where applicable:
- Sentinel-2 Imagery: Provides RGB and multispectral data for detailed land cover analysis. Freely available through ESA Copernicus, justified for its high spatial and temporal resolution.
- Sentinel-1 SAR Data: Radar imagery for cloud-penetrating observations. Freely available, essential for consistent monitoring in regions with frequent cloud cover.
- Hansen Global Forest Change: Tracks forest loss and gain globally. Freely available, used as a baseline for identifying deforested areas.
- Google Dynamic World: Offers dynamic land use classifications. Freely available, enables real-time change detection.
- ESA WorldCover: Annual global land cover maps. Freely available, supports forest classification and validation.
- FAO GAUL: Global Administrative Unit Layers providing standardized sub-national administrative boundaries. Freely available from FAO, justified for regional analysis in deforestation monitoring.
- Landsat 5 TM: Multispectral time series data for forest dynamics. Freely available from USGS/NASA, justified for long-term deforestation tracking and change detection algorithms.
- HydroSHEDS: Geo-referenced datasets including stream networks and watershed boundaries for hydro-ecological applications. Freely available, justified for mapping water bodies and assessing deforestation impacts on watersheds.
- OSM (OpenStreetMap): Crowd-sourced geospatial data for features like dams and infrastructure. Freely available under OpenDatabase License, justified for locating water-based infrastructure.
- Landsat 8/9 Temperatures: Thermal infrared data for surface temperature measurements. Freely available from USGS, justified for global energy balance studies and carbon emissions MRV.
Methodology
- CInitialization and Boundaries: Authenticate Google Earth Engine and define South Africa’s boundaries using FAO GAUL for standardized administrative units.
- Data Retrieval: Load Sentinel-1, Sentinel-2, Landsat 5 TM, and Landsat 8/9 (thermal bands) imagery, along with Hansen, Google Dynamic World, ESA WorldCover, HydroSHEDS (rivers), and OSM (dams).
-
Processing and Analysis:
- Tree Cover Monitoring: Compute NDVI (Normalized Difference Vegetation Index) from multispectral bands, apply normalization and thresholding for forest health and loss detection (MRV). Calculate forest cover differences using Hansen data.
- Water Monitoring: Compute MNDWI (Modified Normalized Difference Water Index) to track water body changes. Retrieve river networks from HydroSHEDS and dam locations from OSM. Perform time-series analysis of water body evolution.
- Carbon Stock Analysis: Estimate carbon stocks using biomass models and forest cover data. Train a Random Forest classifier to predict Above-Ground Biomass Density (AGBD) using NDVI, EVI (Enhanced Vegetation Index), MNDWI, NDBI (Normalized Difference Built-up Index), BSI (Bare Soil Index), DEM, and slope.
- Emissions Analysis: Process methane emissions (from atmospheric data) and surface temperatures from Landsat 8/9 thermal bands for carbon emission MRV, correlating with deforestation patterns.
-
Visualization and UI: Create interactive maps with geemap and folium. The Colab notebook features UI elements including:
- Layer toggles for datasets (e.g., forest loss, water indices, emissions).
- Interactive sliders for selecting date ranges.
- Dropdowns for selecting regions or indices, enabling non-technical users to explore data easily.
- Download buttons for raster and vector data exports.
Vectorization of deforested patches with area thresholding (ha).
Impact
This project supports afforestation, carbon credit programs, and water resource management in South Africa. It provides actionable insights for policymakers, environmentalists, and carbon market participants through detailed deforestation, water, and carbon analyses.
Technologies Used
- Google Earth Engine API: For data access and processing.
- Python Libraries: geemap, ee, folium (mapping and UI), scikit-learn (Random Forest), and others.
- Environment: Colab with interactive UI elements.
Notes
This page summarises a living project. Selected live maps/dashboards may be embedded later via ArcGIS or Earth Engine tile URLs.