← Science Validation Home
SCIENCE · METHODOLOGY

CanopySat Methodology

How CanopySat processes satellite data to produce accurate and reliable forest intelligence.

1. Satellite Data Sources

CanopySat combines 6 complementary satellite sources, all processed via Google Earth Engine with a dedicated ESA/Google service account.

Satellite Resolution Primary use Period
ESA Sentinel-210mNDVI, forest cover, vegetation indices2015–present
ESA Sentinel-110mSAR radar backscatter — forest structure2014–present
NASA Landsat 8/930mHistorical trend — last 10 years2013–present
NASA Landsat 4/530mLong-term trend since 19841984–2013
NASA FIRMS/VIIRS375mActive fire detection2012–present
NASA GEDI LiDAR25mCanopy height from ISS2019–present

2. Processing Pipeline

STEP 1
Zone selection
The user defines a circular GPS zone (1-100km radius). CanopySat creates a geospatial buffer and sends it to Google Earth Engine.
STEP 2
Cloud-free composite
CanopySat generates a median composite of Sentinel-2 images from the last 12 months, excluding cloudy pixels (QA60 filter). This ensures analysis based on the most recent available data.
STEP 3
Index calculation
NDVI (Normalized Difference Vegetation Index) = (NIR - RED) / (NIR + RED). Values between -1 and 1, where >0.5 indicates dense healthy vegetation. Sentinel-1 VV/VH backscatter for forest structure under cloud cover.
STEP 4
Historical trend
CanopySat calculates NDVI trend over 3 years, 10 years and 40 years (since 1984) using Landsat 4/5/8/9. A positive trend indicates forest regeneration, a negative trend indicates degradation.
STEP 5
GEDI canopy height
NASA GEDI LiDAR (Global Ecosystem Dynamics Investigation) measures forest canopy height from the International Space Station at 25m resolution. CanopySat extracts the mean height for the analyzed zone.
STEP 6
Forest Integrity Score calculation
All indicators are combined into a single 0-100 score. See the Forest Integrity Score page for algorithm details.
All analyses are processed via Google Earth Engine with a dedicated service account. Satellite data is publicly available (ESA Copernicus, NASA EOSDIS).
Forest Integrity Score → Validation Report → Limitations →

4. Biomass & Carbon Calculation

CanopySat calculates above-ground biomass (AGB) using NASA GEDI LiDAR canopy height with biome-specific allometric equations, validated against GFW/WHRC, FAO FRA 2020 and ESA CCI Biomass (mean error 0.8%).

# Biome-specific allometric formula (Chave 2014 + Potapov 2021)
AGB (t/ha) = k × H²

# Validated coefficients k:
Tropical (Amazon, Congo): k = 0.68
Tropical SE Asia (Borneo): k = 1.17
Subtropical: k = 0.75
Temperate: k = 0.88
Boreal: k = 0.90

# IPCC 2006/2019 Tier 1 carbon calculation:
BGB = AGB × 0.26 # root-to-shoot ratio
Carbon (t C/ha) = (AGB + BGB) × 0.47
CO2 (t CO2/ha) = Carbon × 3.67
Forest zone CanopySat (t/ha) GFW/WHRC FAO FRA ESA CCI Error%
Amazon Rainforest 118.5 120.0 115.0 118.0 0.7%
Congo Basin 133.3 135.0 128.0 131.0 1.5%
Black Forest 91.6 95.0 88.0 92.0 0.1%
Borneo 141.6 145.0 138.0 142.0 0.0%
Boreal Canada 50.8 55.0 48.0 52.0 1.7%
Mean absolute error 0.8%

Full validation report available in the CanopySat Library.

5. Species Climate Suitability — BEA Method

Bioclimatic Envelope Assessment (BEA)

CanopySat uses a Bioclimatic Envelope Assessment (BEA) approach to predict climate suitability of forest species in 2050. This method is consistent with full MaxEnt model results for general trends (cf. published studies on Ceiba pentandra, SSP2-4.5, Frontiers in Forests 2026).

Data sources

Source Usage Licence
GBIF API Species occurrences in zone + global distribution CC BY 4.0
WorldClim V1 Current bioclimatic variables (BIO01, BIO12) CC BY 4.0
NASA GDDP-CMIP6 2050 climate projections — 5-model CMIP6 ensemble (ACCESS-CM2, MIROC6, MPI-ESM1-2-HR, GFDL-ESM4, BCC-CSM2-MR), SSP2-4.5 scenario Open
ESA Sentinel-2 Forest context of analyzed zone Open

Suitability score calculation

score = 1.0
# Temperature estimated from GBIF latitude :
temp_from_lat(lat) = 27 - |lat| × 0.52 (°C)

# Penalties :
if temp_2050 > temp_max_species: score -= min(0.7, (temp_2050 - temp_max) × 0.15)
if temp_2050 < temp_min_species: score -= min(0.7, (temp_min - temp_2050) × 0.10)
if |temp_2050 - temp_mean| > 3°C: score -= min(0.3, (diff - 3) × 0.05)

Classification thresholds

Suitable
Score ≥ 0.70
Species should maintain its presence in the zone in 2050
Moderate risk
Score 0.40–0.69
Species under climate pressure — possible decline
At risk
Score < 0.40
2050 climate conditions outside species tolerance range
Important limitations