Written 2026-11-14 with SI assistance (Claude, Anthropic). Every step below is a script in pipeline/ that you can re-run. Full provenance table: research/data-sources.md.
Click a spot on the map and press “Download CSV” for one place. For everything else:
| File | What is in it |
|---|---|
| River statistics | Every 500 m of the flood path and four control rivers, for all eight 12-day periods: mean change and share of pixels changed by more than 3 dB. |
| River paths | The traced flood path, the control rivers and the kilometre marks. |
| Radar series, description | Grid, dates and how to turn pixel values into decibels for the ten images hh-YYYYMMDD.png in the same folder (for example /data/series/hh-20260819.png). |
| Glacier table | Median echo per height band and date, and the share of ice more than 3 dB below its 20 June value. |
| Glacial lakes | The 12 lakes of NASA's HMA_GLI inventory (2015 to 2018) inside the study box. |
| Terrain layers, description | How flowdir.png (flow directions) and lowground.png (low ground) are laid out. |
| Map layers | Every change and radar tile layer with its source files and colour scale. |
| Mission | NISAR, the NASA and ISRO L-band radar satellite |
| Product | Level 2 GCOV (geocoded polarimetric covariance), which is radar backscatter already placed on a map grid |
| NASA collection | NISAR_L2_GCOV_PROVISIONAL_V1, CMR id C2854338529-ASF, processing version P05023 |
| Archive | Alaska Satellite Facility DAAC (a NASA data centre) |
| Layers used | HHHH and HVHV backscatter (gamma-0 power) and the validity mask, frequency A |
| Maturity | "Provisional": calibrated, not yet fully validated. We say this on the site. |
Scenes used:
| Track | Dates (2026) | Why |
|---|---|---|
| 98 ascending, frame 16 | 20 Jun, 2 Jul, 14 Jul, 26 Jul, 19 Aug, 31 Aug, 12 Sep, 24 Sep, 6 Oct, 18 Oct | Main series. Same radar mode on every date, so the dates are comparable. All numbers come from this track. |
| 48 descending, frames 74 and 75 | 16 Aug, 28 Aug | Second look at the flood from another direction |
| 149 descending, frame 74 | 23 Aug, 4 Sep | Third look |
There is a gap in the series between 26 July and 19 August, so that step is not used.
pipeline/fetch_gcov_subsets.py.data/raw/gcov/ and data/raw/gcov_source/. Each Harmony job id is logged in manifest.json in those folders..env and never committed.Script: pipeline/fetch_gcov_subsets.py
For each pair of consecutive dates on the same track:
data/work/change/.0 dB means no change. +3 dB means the echo doubled, −3 dB means it halved.
Script: pipeline/change_detection.py
| Share of riverside pixels changed by more than 3 dB (HH) | |
|---|---|
| Flood path, 19 to 31 Aug | 20.69% of 129,965 pixels |
| Flood path, seven ordinary periods | 0.76% to 3.83% |
| Control rivers, 19 to 31 Aug | 0.19%, 3.84%, 0.25%, 0.73% (each inside its own ordinary range) |
Script: pipeline/river_stats.py. Output: site/public/data/river_stats.json.
pipeline/make_tiles.py reprojects the change rasters to web map tiles and colours them: red where the echo rose, blue where it fell, transparent below 1.5 dB.pipeline/make_series.py puts the HH backscatter of all ten track 98 dates on one grid of about 50 m and saves one small greyscale image per date. Averaging 10 m pixels to 50 m also reduces the radar grain.The same change calculation as in section 3, for all eight 12-day pairs on track 98. The Over time tab shows them in date order. Share of riverside ground changed by more than 3 dB, per period: 1.42%, 1.25%, 1.01% (June and July), 20.69% (19 to 31 August), 3.67%, 1.07%, 3.83%, 0.76% (September and October). There is no pair between 26 July and 19 August in the data we used.
pipeline/glacier_season.py takes the 50 m series, keeps only pixels inside glacier outlines, and for each date subtracts the 20 June value. Blue = echo fell, red = echo rose.HMA_GLI, NSIDC DAAC), period 2015 to 2018. 12 lakes fall inside the study box.pipeline/terrain_context.py fills pits and depressions, then gives every cell a pointer to its steepest downhill neighbour (D8 flow direction, pysheds library).| Used for | Source | NASA? |
|---|---|---|
| All measurements, maps of change, all numbers | NISAR L2 GCOV via ASF DAAC and Harmony | Yes |
| Downhill routes, low ground, glacier height bands | NASADEM v1 via LP DAAC | Yes |
| Glacial lakes | HMA_GLI v1 via NSIDC DAAC | Yes |
| River lines, place names, peak position, glacier outlines | OpenStreetMap | No (open data, credited) |
| Background map | OpenFreeMap | No (open data, credited) |
| 3D terrain and hillshade | Mapzen Terrain Tiles on AWS | No. Could be replaced with NASADEM (NASA). |
| Flood timeline | ICIMOD web page | No (quoted and cited) |
The Space Apps rules require at least one NASA data source and a full list of everything else. Non-NASA data is allowed if it is listed.
python -m venv .venv && .venv\Scripts\activate
pip install -r pipeline/requirements.txt
python pipeline/fetch_gcov_subsets.py # needs EARTHDATA_TOKEN in .env
python pipeline/fetch_gcov_subsets.py --aoi source
python pipeline/change_detection.py
python pipeline/change_detection.py --raw data/raw/gcov_source
node pipeline/fetch_osm.mjs
python pipeline/river_stats.py
python pipeline/make_tiles.py
python pipeline/make_series.py
python pipeline/fetch_nasa_context.py # NASADEM and the glacial lake inventory
python pipeline/terrain_context.py
python pipeline/glacier_season.py
python pipeline/build_research_page.py # turns this file into site/public/research.html