MODIS satellite NDVI over the Gimje-Mangyeong rice plain in Korea, mid-September 2012 against 2017, built from keyless public data.
In the 16-day composite of 13 September 2012, mean NDVI over the cropland mask was 0.645 with 91.9% of pixels clear. In the 14 September 2017 composite it was 0.696 with 94.6% clear. The difference is -0.05. Every figure comes from summary in manifest.json, and the rounded EN and KO captions are in out/captions.txt.
Why these years. 2012 is the worst year in the sibling analysis crop-risk, where payouts reached 357.1% of the risk premium against 99.3% pooled over 2012-2024. 2017 is the reference season. 2020 was rejected because the long monsoon hid July: the share of reliable pixels in composites on day 193 and day 209 was 0.09 and 0.01 (probe values from the author's notes, not stored in manifest.json), against about 0.75 in a clear composite.
This repo shows a vegetation signal beside a tail year. It does not show that one caused the other.
git clone https://github.com/Betalgeuse/trust-lab-sat && cd trust-lab-sat && uv run make_visual.pyuv installs the dependencies declared at the top of make_visual.py (Python 3.11 or newer). No API key or account is needed. Downloads are cached in cache/. The run rewrites out/ and manifest.json. The map and series labels use a Korean font when one is installed (Apple SD Gothic Neo, Noto Sans CJK KR, NanumGothic or Malgun Gothic) and show boxes for Korean text otherwise.
| Source | Use | Licence |
|---|---|---|
| MODIS MOD13Q1 v061 (tile h28v05), via the Microsoft Planetary Computer STAC | 16-day NDVI and pixel reliability, 250 m | NASA data, public domain |
| ESA WorldCover 10 m v200, 2021 | cropland mask (class 40), at least 50% of a MODIS pixel | CC BY 4.0, (c) ESA WorldCover project 2021 / Contains modified Copernicus Sentinel data (2021) processed by ESA WorldCover consortium |
| NASA POWER daily PRECTOTCORR | rain overlay, one 0.5 degree cell | NASA POWER terms (open, attribution requested) |
Item ids, URLs and sha256 hashes of the extracted windows are in manifest.json. It hashes the windows and the POWER response, not the full remote files.
- NDVI is a vegetation proxy, not a loss measure. It has no yield, no insured loss and no cause. A lower September 2012 value fits typhoon damage but also earlier senescence, planting date, variety or cloud residue.
- One region and two years. The reference year was chosen by the author, so a different year would shift the -0.05.
- Correlation with payouts is not tested. The 2012 payout figure is quoted from crop-risk and is national, while the NDVI covers one plain.
- 250 m pixels and 16-day composites. The mask is cropland, so rice is not isolated. Pixels flagged as cloud, snow or no data are removed. A composite with under 25% clear cropland pixels is interpolated before smoothing.
- The typhoon names Bolaven and Sanba in the captions come from public records recalled by the author. They were not fetched and are not in
manifest.json.
Code: MIT, see LICENSE. The data keep their own licences above.
