What the Sentinel-1 archive actually delivered over An Giang
Retrieved 7 September 2026. This is the one part of the LuaZero prototype backed by data we pulled rather than by arithmetic or a synthetic sample. It is a measurement of data availability, not a detection of anything happening in a field.
What we did
We queried the public Sentinel-1 archive for a 17 km by 17 km box over An Giang province in the Mekong Delta, took every scene on a single relative orbit across two crop seasons, and read a small window of real backscatter pixels from each one. No account, licence or payment was involved at any step.
| Setting | Value |
|---|---|
| Catalogue | Microsoft Planetary Computer STAC, collection `sentinel-1-rtc` |
| Product | Sentinel-1 GRD, radiometrically terrain corrected, VV polarisation, gamma0 |
| Area | An Giang, Mekong Delta. Bounding box 105.10–105.25 E, 10.35–10.50 N |
| Track | Relative orbit 18, descending, on its own |
| Window | 1 November 2025 to 31 May 2026 |
| Sample | Five points, 70 m by 70 m each, mean of the enclosed pixels |
| Access | Anonymous SAS token, then HTTP range reads against the cloud-optimised GeoTIFF |
Only a few kilobytes moved per scene, because a windowed read fetches the tiles it needs rather than the whole image.
What we found
30 distinct acquisition dates in seven months on one track. The gaps between consecutive passes:
| Gap between passes | Times observed |
|---|---|
| 1 day | 2 |
| 6 days | 19 |
| 11 days | 1 |
| 12 days | 7 |
Median gap 6 days; mean 7.28 days.
Three satellites appear in the record — Sentinel-1A on 16 dates, Sentinel-1C on 12 and Sentinel-1D on 2 — which is the constellation reconfiguration of 2026 visible in the data itself.
The search returned 41 granules on this track but only 30 acquisition dates. The 11 extra granules are neighbouring slices of the same pass whose footprint does not cover our sample points. No acquisition date was lost.
VV backscatter at the five sample points spanned 7.8 to 16.2 dB between its lowest and highest value over the period. Four points sat in the −20 to −5 dB range with large seasonal swings; the fifth stayed near −2 dB throughout, which is the signature of a permanently bright scatterer such as built-up ground rather than a flooded and replanted paddy.
What this measures, and what it does not
The observed median gap was 6 days, consistent with the ideal two-satellite repeat. However, 7 of 29 intervals were 12 days. This historical sample does not support a guaranteed observation every six days and does not guarantee future archive availability. Pilot planning needs to account for missing and irregular acquisitions.
It does not prove anything about drainage. We have no ground truth, no field boundaries and no land-cover check, so none of these pixels is confirmed to be a rice paddy — the fifth point almost certainly is not one. Backscatter variation is not a drainage event, a classification accuracy, or an emissions result. Establishing that link is the entire purpose of the proposed pilot, and it needs the water-level loggers and the agronomist-defined labels described in the validation protocol.
We also used a single orbit direction on purpose. Ascending and descending passes are flown at different incidence angles and times of day, so pooling them without checking first would inflate the apparent revisit. The second pass below tests that assumption against data, and the answer turned out to be more interesting than we expected.
Reproducing it
The retrieval script is `tools/fetch-observed-revisit.py` in the project repository, and its condensed output is published at `/observed-revisit.json` on the site. It needs `rasterio` and a network connection, nothing else. Re-running it against a different bounding box, track or date range is a one-line change, and we expect anyone assessing this application to be able to check the numbers rather than take them on trust.
Second pass: cropland-screened, both tracks
Retrieved 8 September 2026. The first pass had an obvious weakness — nothing confirmed that a sampled pixel was farmland, and one of the five points turned out not to be. So we screened the area first.
The screen. ESA WorldCover 10 m (v200, 2021) over the same box: 92.4% cropland, 3.6% tree cover, 1.9% built-up, 1.5% permanent water. In that map, original points 1 to 4 are classified as cropland and point 5 as built-up. We kept only pixels where mapped cropland extends 60 m in every direction around the centre of a 70 m sampling window. This reduces overlap with mapped non-cropland; it does not identify individual field boundaries or prevent a window from spanning neighbouring fields. The 2021 map also does not confirm land use in 2025–2026 or identify rice. The screen left 2.49 million of 3.00 million cropland pixels. Twelve points were drawn from them, at least 300 m apart.
What both tracks returned, 1 November 2025 to 31 May 2026:
| Track 18 descending | Track 26 ascending | |
|---|---|---|
| Acquisition dates | 30 | 33 |
| Median gap | 6 days | 6 days |
| Gaps of 12 days | 7 | 4 |
| Median VV | −10.61 dB | −10.03 dB |
| Seasonal swing of the median curve | 9.86 dB | 8.48 dB |
A swing close to 10 dB across a season is the range you would expect where fields flood, drain and grow a canopy. It is not proof that they did.
Two findings worth carrying into the pilot.
The first concerns pooling tracks. The two same-day pairs have a mean signed difference of 0.02 dB (track 18 descending minus track 26 ascending), with a population standard deviation of 0.22 dB. A signed mean can conceal differences of opposite signs; it is not a mean absolute difference. Across 27 nearest-date pairs up to two days apart, signed differences ranged from −2.37 to +2.38 dB. These comparisons cannot separate ground changes from viewing geometry, calibration or time-of-day effects. Two same-day pairs do not establish track agreement or justify a constant-offset correction. Testing these effects against logger records belongs in season one.
The second concerns the revisit figure published on the site. Pooling both tracks gives 61 dates at a median gap of 5 days, but they arrive in clusters: 26 gaps of a single day, 24 of five. The two tracks image about a day apart and then nothing follows for five. A mean revisit figure implies an even grid that the archive does not deliver, so the pooled row in the detectability chart is a best case in a second sense — not only does it need per-track calibration, it also assumes a spacing that does not exist.
What is still missing is unchanged and is the whole point of the pilot: no water-level logger, farmer record or crop calendar stands behind any of these numbers. Cropland is not rice. Backscatter variation is not a drainage detection, a classification accuracy or an emissions result.
Scripts: `tools/screen-landcover.py`, `tools/fetch-season-backscatter.py`, `tools/summarise-season.py`. Raw output in `tools/season-backscatter-raw.json`; the published summary is `/season-backscatter.json`.