







Above-ground biomass & carbon, county by county.
Carbon-Eye estimates above-ground biomass and carbon stock across Kenya’s 47 counties - fusing Sentinel radar and optical data, terrain, climate and soils with a machine-learning ensemble in Google Earth Engine.
Sentinel-1 / Sentinel-2 · Random Forest · Gradient Boosting · SVM
Above-ground biomass density (t/ha). Illustrative demo data.
Drag to rotate · pinch or the +/− buttons to zoom · click a country to open it in the explorer.
Built on open Earth-observation data
Why estimate carbon & biomass
Forests and vegetation store carbon in their biomass
Mapping where it is - and how it changes - makes carbon and biomass screening more accessible, transparent and usable.
How Carbon-Eye works
Inputs → predictor stack → models → validated maps
Five steps, all inside Google Earth Engine, from a county boundary to carbon maps, statistics and downloads.
- 01
Select area & year
Choose one or more Kenyan counties, or draw a custom boundary, and an ESA CCI AGB reference year (or a range, averaged across every snapshot in it).
- 02
Build predictor stack
Earth Engine assembles a cloud-filtered, multi-source stack of optical, radar, terrain, climate and soil layers.
- 03
Sample & split
Reference carbon points are sampled from the stack and split into training and testing sets.
- 04
Train models
Random Forest, Gradient Tree Boosting and SVM each learn the link between predictors and carbon.
- 05
Map & validate
Estimates are mapped in carbon or biomass units, checked against held-out data (RMSE, MAE, R²), and summarised by county alongside tree-cover loss.
Cached runs and on-demand diagnostics keep it responsive for non-specialist users.
Data
Nine Earth-observation datasets, one stack
All accessed and processed through Google Earth Engine - no downloads, no local pre-processing.
Reference target
ESA CCI Above-Ground Biomass v6.0
Optical imagery
Sentinel-2 Surface Reflectance (Copernicus)
Radar
Sentinel-1 GRD & JAXA ALOS PALSAR
Land cover
Google Dynamic World
Terrain
SRTM DEM
Climate
WorldClim BIO
Soils
OpenLandMap Soil Organic Carbon
Structure & temperature
Meta Canopy Height & MODIS LST
Boundaries
geoBoundaries ADM1
Predictors
What the models actually look at
Predictors capturing vegetation condition, structure and the environment that governs how much biomass a place can hold.
Vegetation greenness & moisture
Spectral indices describing how green, dense and hydrated the canopy is.
Vegetation structure
Radar and canopy-height signals describing the physical structure and volume of vegetation.
Site conditions
Terrain and climate context that shapes where and how much biomass can accumulate.
Models
A three-model ensemble, then an average
Each model learns carbon from the predictor stack; the output is the mean of the three maps, so no single method dominates.
Random Forest
Bagged decision-tree ensemble
Gradient Tree Boosting
Sequentially boosted trees
Support Vector Machine
Kernel regression
Ensemble - unweighted average of the three predicted carbon maps.
- Training target
- ESA CCI AGB v6.0, converted to carbon stock
- Conversion factor
- 0.47 Mg C / Mg dry biomass (IPCC default)
- Output units
- t C/ha - AGB layer also available
- 0
- Kenyan counties
- 0 m
- Sentinel-2 resolution
- 0
- Models in the ensemble
- 0
- Earth-observation datasets
In the app
Explore, compare, validate, export
Everything is interactive - pick a model, read the county numbers, check the error metrics and download the results.
How uncertainty is handled
Every estimate comes with a check on itself
No single model, no single number - the app shows you the spread and the held-out error alongside the map.
Three-model spread
The disagreement between Random Forest, Gradient Boosting and SVM is mapped as a spatial uncertainty proxy - wide where the models don’t agree.
Held-out validation
RMSE, MAE, R² and actual-vs-predicted plots on data the models never saw.
A difference map shows exactly where the two tree models diverge.
Change between years
Re-run a county for another reference year and difference the carbon maps - gain, loss and net change.
Validation
Checked against data the models never saw
Every run holds out held-out reference points, reports the error against ESA CCI AGB v6.0, and plots predicted vs. observed. Figures here are placeholders until a held-out run is loaded.
Also per run: the three-model spread as spatial uncertainty, and Random-Forest / boosting feature importance. Illustrative values.
Reproducible
The whole pipeline is code
The Earth Engine script and a Python (geemap) equivalent build the predictor stack, run the ensemble and reduce to county statistics.
- Runs entirely in Google Earth Engine - no data downloads
- Reference target: ESA CCI AGB v6.0, converted to carbon
- Predictor stack from optical, radar, terrain, climate and soil
- Reproducible: same county + year gives the same maps
// Carbon-Eye predictor stack for one county + year
var county = ee.FeatureCollection('projects/carbon-eye/kenya_adm1')
.filter(ee.Filter.eq('county', 'Nyeri'));
var optical = require('users/carboneye/lib:optical').composite(county, 2021); // NDVI, EVI, NDRE...
var radar = require('users/carboneye/lib:radar').composite(county, 2021); // S1 VH, texture
var site = require('users/carboneye/lib:site').stack(county); // DEM, WorldClim, SOC
var stack = optical.addBands(radar).addBands(site);
var carbon = require('users/carboneye/lib:model').ensemble(stack); // mean of RF + GTB + SVM
Map.addLayer(carbon, {min: 0, max: 150,
palette: ['ffffe5', '78c679', '006837']}, 'Carbon t C/ha');Who it's for
Built for non-specialists and technical users alike
County environment & forestry teams
Conservation & restoration organisations
Researchers & students
Carbon-project teams (early screening)
Land-use planners & NGOs
Designed with Kenya Forest Service · KEFRI · NGOs · Students & academic researchers in mind.
In context
How Carbon-Eye compares
| Carbon-Eye | Field inventory | Single-index map | |
|---|---|---|---|
| Wall-to-wall coverage | |||
| Time to results | Minutes | Months | Minutes |
| Multi-source predictors | n/a | ||
| Model ensemble + spread | |||
| Held-out validation (R², RMSE) | |||
| County statistics & CSV | Manual | ||
| Certification-grade result |
Responsible interpretation
A screening tool - not a verified inventory
Use Carbon-Eye to screen, compare and target areas. Results are model estimates, not field inventories, verified carbon stocks or certification decisions.
- Validate with local field data
- Assess uncertainty
- Check land tenure and baselines
- Check leakage and permanence
- Follow the relevant methodology
Roadmap
Where Carbon-Eye is going
The ensemble and the reach are both growing - with transformer models and language-model support next.
Transformer & deep-learning models
Attention-based models over multi-temporal Sentinel stacks, added alongside RF / GTB / SVM in the ensemble.
LLM-assisted interpretation
A language-model guide that explains maps, metrics and county results in plain language and drafts reports.
Beyond Kenya
Other countries, counties and states, using the same Earth Engine pipeline.
Deeper validation
Local field-plot data for calibration and independent accuracy assessment.
Questions
Frequently asked
Use & cite
Open for research and monitoring
Maps and county statistics from Carbon-Eye are released under CC BY 4.0 free to use and redistribute with attribution. Source imagery keeps its providers’ own licences.
Suggested citation
Carbon-Eye (2026). Above-ground biomass & carbon stock across Kenyan counties - a geospatial decision-support system. Kabarak University.
BibTeX
@misc{carbon-eye,
title = {Carbon-Eye: Above-ground biomass and carbon stock across Kenyan counties},
author = {{Carbon-Eye}},
year = {2026},
note = {Geospatial decision-support system, Google Earth Engine},
howpublished = {\url{https://carbon-eye-landing.vercel.app}}
}Try Carbon-Eye for your county
Open the live Earth Engine app, or leave your email for a walkthrough, methodology note and updates.