Cisokan Land Cover Classification

OBIA Pipeline — PlanetScope, SAR & Canopy Height

Author

Firman Hadi

Published

January 1, 2026

Preface

This book documents the end-to-end land-cover classification pipeline built for the Cisokan watershed, West Java, Indonesia. The pipeline combines multi-temporal PlanetScope satellite imagery with C-band Sentinel-1 SAR, L-band PALSAR-2, and high-resolution canopy height data to produce a 9-class hierarchical land-cover map at 3 m resolution.

What this pipeline does

The pipeline uses Object-Based Image Analysis (OBIA): rather than classifying individual pixels, it first groups neighbouring pixels into spatially homogeneous segments (objects), then trains a Random Forest classifier on segment-level features. This avoids the salt-and-pepper noise common in pixel-based classifiers and produces clean, polygon-like output that reads naturally in QGIS.

Classification is hierarchical — two Random Forest models stacked in sequence:

  • L1 classifies all segments into 7 land-cover types including a broad “Dense Vegetation” class.
  • L2 re-classifies Dense Vegetation segments into 3 forest subtypes: Natural Forest, Production Forest, and Agroforest.
PlanetScope (10 epochs, 3 m)  ─┐
Sentinel-1 SAR (30 m)          ├─► 591 features per segment ─► L1 Random Forest (7 classes)
PALSAR-2 (30 m)                │                                      │
Canopy height (ETH + Meta)    ─┘                              Dense Veg segments only
                                                                       │
                                                              L2 Random Forest (3 subtypes)
                                                                       │
                                                              Final 9-class map

Key results

Verified on 2026-05-03 with 316,209 fine LSMS segments:

Level Holdout OA Kappa 5-fold CV OA
L1 (7 classes, Bareland dropped) 89.5% 0.875 92.0% ± 1.6%
L2 (3 forest subtypes) 57.5% 0.324 64.9% ± 7.6%

The L1 model is robust. The L2 model is limited by sample count — specifically Production Forest, which is confused with Natural Forest. Adding 30–50 more unambiguous Production stands is the highest-value next step.

Final class scheme

ID Class Source
1 Waterbody L1
2 Paddy L1
3 Built-up L1
4 Others L1
5 Natural Forest L2 within Dense Vegetation
6 Production Forest L2 within Dense Vegetation
7 Agroforest L2 within Dense Vegetation
8 Sparse Vegetation L1
9 Crops L1

AOI pixel distribution (2026-05-03 run)

Class % of AOI
Waterbody 0.3%
Paddy 14.3%
Built-up 7.7%
Others 1.2%
Natural Forest 15.1%
Production Forest 7.2%
Agroforest 3.0%
Sparse Vegetation 45.9%
Crops 5.3%

Software

Component Version
Python 3.14.4 (Homebrew)
OTB (segmentation) 8.1.2
scikit-learn latest
rasterio ≥ 1.5
Earth Engine API latest