Geospatial decision-support · Google Earth Engine

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

Biomasslow → high

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

Google Earth EngineCopernicus / ESANASAJAXAIPCC carbon fraction (0.47)

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.

Climate-action planningRestoration screeningLandscape monitoringCounty prioritisationEvidence-based conservation dialogue

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.

  1. 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).

  2. 02

    Build predictor stack

    Earth Engine assembles a cloud-filtered, multi-source stack of optical, radar, terrain, climate and soil layers.

  3. 03

    Sample & split

    Reference carbon points are sampled from the stack and split into training and testing sets.

  4. 04

    Train models

    Random Forest, Gradient Tree Boosting and SVM each learn the link between predictors and carbon.

  5. 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.

Sentinel-2 bandsNDVIEVISAVINDMINDRE

Vegetation structure

Radar and canopy-height signals describing the physical structure and volume of vegetation.

Sentinel-1 VHSAR texture (contrast)PALSAR HH/HVCanopy height

Site conditions

Terrain and climate context that shapes where and how much biomass can accumulate.

ElevationSlopeAspectTemperatureRainfallSoil organic carbonLand-surface temp

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.

Interactive map
Switch model, toggle Carbon / AGB view, and inspect any location.
Model comparison
RF-vs-GTB difference map and the three-model spread as an uncertainty proxy.
Validation
Held-out test data with RMSE, MAE, R² and actual-vs-predicted charts.
County insights
Zonal mean, min, max and total carbon per county - downloadable as CSV.
Feature importance
The most influential predictors for the Random Forest and boosting models.
Learning guide & export
A beginner-friendly guide plus reporting and export tools.

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.

RF vs GTB

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.

Observed AGB (t/ha)Predicted
R²
0.82
held-out points
RMSE
18 t/ha
above-ground biomass
MAE
12 t/ha
above-ground biomass

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-EyeField inventorySingle-index map
Wall-to-wall coverage
Time to resultsMinutesMonthsMinutes
Multi-source predictorsn/a
Model ensemble + spread
Held-out validation (R², RMSE)
County statistics & CSVManual
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.

Before any investment, crediting or certification decision
  • 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.

See the full changelog

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.

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.