Where is surface water, and how is it changing over time?
Draw a rectangle to pick your area of interest, then see what NASA data covers it (live, here in your browser) or download a ready-to-run notebook with your AOI pre-filled. The notebook runs in any Python environment — it needs a free Earthdata Login to fetch the data.
60.5, 44 → 62.5, 46.5 (Aral Sea (Kazakhstan/Uzbekistan))Where is surface water, and how is it changing over time?
This is the persistent surface-water question, not the storm-flood question (see q13). Here we ask: where does open water sit, and is the extent shrinking (drying lakes), expanding (filling reservoirs), or pulsing seasonally (wetlands, floodplains) across months and years?
What you can answer
- Open-water extent maps at 30 m, all-weather, from OPERA DSWx-S1 (radar) — no cloud gaps
- Optical surface-water classification (open water + partial-surface water) from OPERA DSWx-HLS
- Multi-year extent change — area time series to flag shrinking lakes or filling reservoirs
- Seasonal wetland pulsing — wet-season vs dry-season extent from dense radar revisit
- Comparison to a long-term baseline by joining the JRC/Pekel occurrence layer (1984–present)
- Radar-optical cross-validation — DSWx-S1 vs DSWx-HLS agreement on cloud-free dates
What you can NOT answer with these alone
- Water volume or depth — extent is a 2-D footprint; volume needs DSWx area × DEM/bathymetry or altimetry (SWOT/ICESat-2, see q06)
- Water-surface elevation / level — DSWx is a binary-ish water mask, not a height product
- Why it changed — attribution (irrigation withdrawal vs drought vs dam operation) needs GRACE-FO, IMERG, and land-use context
- Water quality (turbidity, algae, salinity) — that’s an optical-reflectance/HAB problem (see q14), not a water mask
- Sub-30 m features — narrow streams, small ponds, and field-scale irrigation are below product resolution
- Daily flood peaks — for fast storm events use q13’s near-real-time SAR workflow
Code template (Python, cloud-direct)
import earthaccess
import numpy as np
earthaccess.login(strategy="netrc")
# Aral Sea — the textbook shrinking-lake case, eastern basin nearly gone
aoi = (60.5, 44.0, 62.5, 46.5)
window = ("2023-04-01", "2025-09-30")
# 1. OPERA DSWx-S1 — radar surface water, all-weather, the workhorse here
dswx_s1 = earthaccess.search_data(
short_name="OPERA_L3_DSWX-S1_V1",
bounding_box=aoi,
temporal=window,
)
# Open the WTR (water classification) band per granule as a COG.
# Class values (DSWx convention):
# 0 = not water, 1 = open water, 252/253/254/255 = fill/cloud/no-data masks.
# Build a boolean mask: water = (WTR == 1)
# Area per scene = water.sum() * 30 * 30 m² → km² → append to a time series.
# 2. OPERA DSWx-HLS — optical cross-check on cloud-free dates
dswx_hls = earthaccess.search_data(
short_name="OPERA_L3_DSWX-HLS_V1",
bounding_box=aoi,
temporal=window,
)
# DSWx-HLS WTR adds partial-surface-water classes (open vs partial vs snow/ice);
# treat open water = 1, optionally fold in partial water = 2 for a wetland-inclusive count.
# Only trust scenes where the cloud/no-data fraction over the AOI is low.
# 3. Sentinel-1 GRD fallback if you need a custom threshold or earlier (pre-2023) record
s1 = earthaccess.search_data(
short_name="SENTINEL-1A_SLC", # or GRD product per ASF catalog
bounding_box=aoi,
temporal=("2014-10-01", window[0]),
)
# For GRD: VV backscatter < ~-20 dB → smooth open water. Requires RTC/calibration
# (use OPERA RTC-S1 to avoid raw SAR processing). Lets you backfill years before DSWx.
# 4. Optional external baseline: JRC/Pekel Global Surface Water occurrence (1984–present)
# Not on Earthdata — pull from the JRC dataset (Earth Engine / Google Cloud / direct
# GeoTIFF tiles). Reproject to the DSWx grid, then compare current extent vs the
# long-term water-occurrence climatology to quantify gain/loss.
# 5. Build the change product:
# - Extent time series: km² of water per acquisition date (DSWx-S1 primary)
# - Trend: linear fit / seasonal decomposition over the window
# - Loss/gain map: pixels that flipped water→land (or land→water) vs the baseline
Expected output
- Extent time series: surface-water area (km²) per date, radar (DSWx-S1) as the backbone with optical (DSWx-HLS) points overlaid on cloud-free dates
- Trend summary: net area change over the window + seasonal amplitude for wetlands
- Change map: water-loss (red) and water-gain (blue) pixels vs the JRC/Pekel baseline
- Latest all-weather water mask for the AOI
Caveats
- DSWx-S1 is radar — roughness, not depth. Wind-roughened open water can read as land; smooth wet soil or tarmac can false-positive. Class flags (cloud/no-data) must be respected.
- DSWx-HLS is cloud-limited. Persistent cloud means sparse optical coverage — lean on DSWx-S1 for the continuous record and use HLS as a cross-check.
- OPERA DSWx is operational from ~2023, so the native record is short. Backfill earlier years with Sentinel-1 GRD/RTC-S1 (from 2014) or the JRC/Pekel baseline (from 1984).
- 30 m resolution misses narrow channels, small ponds, and sub-pixel mixing along shorelines; reported area has shoreline-pixel uncertainty.
- Layover/shadow in terrain corrupts radar water detection in steep areas; DSWx flags these but interpret mountain lakes carefully.
- JRC/Pekel is external (not Earthdata) and on its own grid — reproject before any pixel-wise comparison.
- Extent ≠ volume. A lake can hold steady area while losing depth; pair with altimetry (q06) to track storage.
Cross-DAAC composition
ASF DAAC (OPERA DSWx-S1, Sentinel-1, RTC-S1) + LP DAAC (OPERA DSWx-HLS, HLS) — two DAACs, one Earthdata Login. JRC/Pekel is an external join (see r01 for cross-source patterns).
Sources
- OPERA DSWx-S1 product: https://www.jpl.nasa.gov/go/opera/products/dswx-product
- OPERA DSWx-S1 in Earthdata Search: https://search.earthdata.nasa.gov/search?q=OPERA_L3_DSWX-S1_V1
- OPERA DSWx-HLS in Earthdata Search: https://search.earthdata.nasa.gov/search?q=OPERA_L3_DSWX-HLS_V1
- ASF OPERA DSWx guide: https://hyp3-docs.asf.alaska.edu/guides/opera/
- JRC Global Surface Water (Pekel et al. 2016, Nature): https://global-surface-water.appspot.com/
- Aral Sea change (NASA Earth Observatory): https://earthobservatory.nasa.gov/world-of-change/AralSea
📚 Problem Finder KB
1 matching entry in the Knowledge Base: