The method

NDVI, stacked, smoothed, and asked one question.

Healthy paddy has a seasonal rhythm: flooded planting, vegetative growth, mature canopy, harvest. The Normalised Difference Vegetation Index reads that rhythm as a curve. Abandoned paddy goes flat. It is the absence of the curve, not its presence, that we look for.

Sensor
Sentinel-2
L2A surface reflectance, ESA Copernicus
Resolution
10 m
Per-pixel cultivation unit
Time-series
72 mo.
Monthly MVC, six years
Scope
10 zones
All Jelapang Padi granaries
  1. 01Acquire

    Six years of satellite imagery, masked to the jelapang boundary.

    Monthly maximum-value NDVI composites are computed in Google Earth Engine from Sentinel-2 Level-2A scenes between 2019 and 2024. Each composite reduces the month down to the cleanest, highest-vegetation pixel: a robust proxy that survives Malaysia's cloud cover better than single-date imagery.

    The boundary mask is the official Jelapang Padi shapefile published by the Ministry of Agriculture. Anything outside the recognised jelapang is excluded; we are not estimating national paddy, we are measuring designated national rice infrastructure.

    Source
    COPERNICUS/S2_SR_HARMONIZED
    Reducer
    Monthly maximum NDVI
    Cloud handling
    SCL + QA60 bit-mask
    Boundary
    MoA Jelapang recognised polygons
  2. 02Reduce

    One curve per cultivation unit, gap-filled and smoothed.

    The seventy-two composites collapse into a per-pixel time-series. Cloud gaps are filled with Savitzky–Golay smoothing across the temporal axis, which preserves the shape of the curve without inventing growth where none existed.

    The output of this stage is not a map. It is a vector for every pixel: a small EKG that says this is what this hectare looked like over six years. Maps come later; rhythm comes first.

    Smoothing
    Savitzky-Golay, window 5
    Gap-fill
    Temporal interpolation
    Output
    72-dim vector per pixel
    Storage
    Cloud-Optimised GeoTIFF
  3. 03Classify

    K-Means separates the flat from the seasonal.

    Unsupervised K-Means clustering with k=2 is run on the per-pixel time-series. The classifier is given no prior labels; it is asked only to find the two natural shapes inside the data. The result is consistent: one cluster has the expected seasonal rhythm of active paddy, the other does not.

    The boundary between the two clusters is where policy lives. A pixel that drifts from active to inactive across the six-year window is the signal that triggers field validation.

    Algorithm
    K-Means, k=2, scikit-learn
    Distance
    Euclidean on z-normalised curves
    Cross-check
    Silhouette + Davies-Bouldin
    Stability
    Seed-averaged across 20 runs
  4. 04Validate

    Field photos close the loop. Two-way by design.

    The web platform that hosts these maps is also a collection tool. MADA, KADA, and IADA officers, accredited enumerators, and trained farmers can submit geo-tagged photographs of any pixel the model flags. Each submission carries GPS, timestamp, observation type, and an optional camera bearing that becomes a directional arrow on the map.

    Validations enter an admin queue, are reviewed for quality, and are then fed back into the model as ground truth for the next iteration. The classifier is never finished; it learns from every visit.

    Frontend
    Leaflet + PMTiles, mobile-first
    Validators
    MADA · KADA · IADA · enumerators
    Quality gate
    Admin review queue
    Feedback loop
    Quarterly retraining

Want to see the curve, not just read about it?

The interactive NDVI chart shows seventy-two months of jelapang rhythm in one view. Toggle active versus inactive trends, hover any month, and watch the seasonal signature of Malaysian rice production play back in front of you.

Open the chart