Why the numbers disagree
If you read three different reports of Indonesian forest loss in the same year, you will get three different numbers — sometimes by a factor of two. That isn’t carelessness. It’s that each source draws the line in a different place.
| Source | What it measures | Why it differs |
|---|---|---|
| Hansen / UMD GFC | Tree cover taller than 5 m that disappeared, anywhere | Includes plantation harvest and tree-crop turnover |
| MapBiomas Indonesia | Annual land-cover class, pixel by pixel | Lets you distinguish natural forest from oil palm at source |
| KLHK (Ministry of Forestry) | Official “net” deforestation, with replanting subtracted | Defines forest by legal land-use category, not satellite signal |
| Auriga Nusantara | NGO estimate using GFW alerts + ground checks | Often higher than KLHK; published earlier |
The page above is built on Hansen, MapBiomas for the “what replaced it” flows in step 6, and WDPA + Wetlands International for the protected-area and peat overlays. KLHK and Auriga numbers are reproduced in the table because they are the ones quoted in the press and the parliament.
Notebooks and data
Everything on this page is built from public, mostly auth-free data. The notebooks and the
JSON shapes the components read are in github.com/tuttinator/indonesia-deforestation.
| Notebook | Source | What it does |
|---|---|---|
00_setup_and_geometries.py | GADM 4.1 + Natural Earth | Province + district polygons, simplified TopoJSON |
01_gfw_treecover_loss.py | Hansen GFC v1.11 via GEE | Annual loss zonal-stats per province + top-200 district |
02_overlays_pa_peat.py | WDPA + Wetlands International peat | Loss inside protected areas; loss on peat |
03_mapbiomas_transitions.py | MapBiomas Indonesia Coll. 2 | Forest → sink class transitions 2001–2023 |
04_export_blog_json.py | parquet → JSON | Schema-validated outputs synced into static/data/deforestation/ |
Heavy downloads cache to data/raw/. The full pipeline is uv sync && make notebooks && make sync-blog.