US coastal water levels and tides via NWLON; ~200 long-term stations. No coverage outside US territories.
Verified 6-minute and monthly means; datum-controlled.
About
The Water Atlas is an instrument, not a dashboard. Its whole design serves one rule: a number does not get to appear on screen without saying where it came from, how it was produced, and how much you should trust it. This page is that rule, written out, with the registry printed in full including the parts that are not finished.
Those figures are computed from the catalog as this page renders, so they cannot drift from what the product actually contains. Note the last one: of 20 registered sources, 3 are ingested today. The rest have adapters written against their real endpoints and are waiting on network access. That gap is the honest state of the project and it is printed here rather than rounded away.
wa-demo in the store, the chart, the drawer and the API response. It is never presented as a measurement. This is the single most important boundary in the codebase.| Component | Points | Rule |
|---|---|---|
| Best source rank | 40 / 25 / 10 | primary / secondary / inferred |
| Source independence | 20 | two or more organisationally distinct sources |
| Agreement | 20 | independent readings fall within tolerance |
| Record length | 10 | scaled by the span of the record |
| Recency | 10 | scaled by how stale the last update is |
75 and above reads as high, 50 as medium, 25 as low, and anything below that is reported as unknown rather than dressed up. A high score is a statement about the evidence, not a promise about the world: a single primary source with a long record can score well and still be wrong.
| Layer of the product | Status |
|---|---|
| Feature catalog: names, coordinates, dates, operators, capacities | Real hand curated from published agency material |
| 20 historical records, including Lake Mead from 1935 and Brest from 1807 | Real transcribed from published records |
| Global mean sea level, CSIRO reconstruction 1880 to 2013 | Real the one series fetched from a live open mirror |
| 38 documented events on the timeline | Real hand curated with descriptions |
| Time series for features with no curated table | Illustrative deterministic seeded signal, labeled everywhere it appears |
| Basin bed morphology in the section view | Illustrative pool and dead-pool elevations are real, the bed shape is not |
| Live agency ingestion | Not yet adapters written, waiting on network access |
The atlas does not claim to cover every water body on Earth, and it never will. 130 curated features is a considered selection, not a census. Where the record is missing, you get a coverage note explaining what is absent and which adapter would fix it, rather than a plausible curve.
20 sources: 13 primary, 5 secondary, 2 inferred. Rank is about the distance from the measurement, not about quality of the institution. A primary source operates the instrument or publishes the authoritative record. An inferred source is a useful cross-check that should never stand alone.
US coastal water levels and tides via NWLON; ~200 long-term stations. No coverage outside US territories.
Verified 6-minute and monthly means; datum-controlled.
Global monthly/annual mean sea level from ~1,500 tide gauges; some records reach the 1800s. Sparse in Africa and polar regions.
RLR datum-reduced records preferred over metric records.
Near-real-time sea level from ~1,000 global stations.
Research-quality hourly/daily tide gauge data, global.
Global mean and gridded sea surface height from satellite altimetry, 1993–present. No coverage before the altimetry era.
US river stage, discharge, lake levels and groundwater; ~13,000 active gauges. US only.
Elevations and storage for federal reservoirs in the US West (Mead, Powell, Shasta, …), some records from the 1930s.
Curated annual values used in this build are approximate readings of published USBR elevation records, labeled derived, not observed.
California reservoir storage, snowpack and river stage.
Modeled global river discharge reanalysis, 1979–present. Modeled, not gauged, always labeled as such.
Model output; verify against national gauge networks where possible.
Satellite-altimetry water levels for ~10,000 lakes and river reaches, 1992–present. Virtual stations only where satellite tracks cross.
Global 30 m water surface extent and change, 1984–present, from Landsat. Extent, not level, derived metric.
~7,300 large dams and reservoirs with attributes and geometry.
Harmonized global dam/barrier records (GRanD + GOODD + FHReD).
~38,000 dam points digitized from satellite imagery. Location only.
~92,000 US dams with engineering attributes. US only.
Country-level water statistics and a global dam register.
Commissioning dates and capacities for major plants, curated from operator and government publications.
Great Lakes water levels since 1918 (coordinated US/Canada record).
Fallback geometry only. Never used as primary truth for measurements.
Community-maintained; verify before use.
Deterministic illustrative series used to exercise the timeline and charts while real adapters are wired up. Clearly labeled everywhere it appears; never mixed with agency data.
Not a measurement. Replaced per-feature as ingestion lands.
An npm workspaces monorepo in TypeScript. schemas holds the canonical entities and the provenance types, and everything depends on it. data holds the source registry, the feature catalog, the curated records, the series engine and the verification engine. ingestion holds the adapter contract and six scaffolded adapters. globe is a custom Three.js engine. charts and ui are the drawing and the tokens. The dependency direction is strictly one way, which is what lets the whole app compile into a single self-contained HTML file.
The globe paints its Earth from Natural Earth vectors onto a canvas texture rather than pulling map tiles, so it works with no tile server at all, and overlays NASA GIBS satellite imagery when it can reach it. Zooming re-renders the visible window at high resolution so coastlines stay crisp, camera damping is frame-rate independent, and distance interpolates in log space so a descent from orbit feels linear. The plan map is d3-geo painted to canvas with the same treatment. Both take two-finger pinch.
There is deliberately no database. The honest state of the project is a curated catalog plus scaffolded ingestion, and a database would imply a liveness the feeds do not have yet. The catalog is TypeScript: type-checked at build, diffable in review, impossible to drift silently. When the adapters go live they write to storage and the data package reads from it, and none of the schemas change.
The site-wide total is blank because no counter endpoint is configured. It is left empty rather than estimated, for the same reason no water level here is estimated.
The argument is in the instrument, not on this page.