About

How this works, and where every number comes from.

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.

What is in here right now

130
Curated features
20
Real historical records
20
Registered sources
38
Documented events
16
Feature kinds
12
Map layers
57
Countries represented
3
Sources ingested today

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.

How a number gets on screen

  1. A source is registered. Every source in the table below has a rank, an agency, a link, and a written coverage note saying what it does not cover. Nothing can be cited that is not registered first.
  2. A feature is curated. Name, coordinates, commissioning date, operator, capacity, unit, metric, and the list of sources that support it. If the record is thin, the feature also carries a coverage note, which the interface shows at the point of use.
  3. A series is resolved. If the feature has a curated historical table, that is what you see. If it does not, the series engine emits a deterministic seeded signal so the interface has something to draw, and it is labeled 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.
  4. A value class is attached. Every value is one of four things, and they are never blended: observed (somebody measured it), modeled (a model produced it), interpolated (filled between real readings), or derived (computed from other values, such as a unit conversion or a difference between two years).
  5. Confidence is scored. The verification engine produces a number out of 100 from the components below, and the drawer will show you the arithmetic under “Why am I seeing this?”
  6. Disagreement is shown, not resolved. When two independent sources report different values, the atlas shows both, the magnitude of the gap, the timestamps, and which one it prefers and why. It does not average them into a number neither of them reported.

How confidence is scored

ComponentPointsRule
Best source rank40 / 25 / 10primary / secondary / inferred
Source independence20two or more organisationally distinct sources
Agreement20independent readings fall within tolerance
Record length10scaled by the span of the record
Recency10scaled 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.

What is real, and what is not

Layer of the productStatus
Feature catalog: names, coordinates, dates, operators, capacitiesReal hand curated from published agency material
20 historical records, including Lake Mead from 1935 and Brest from 1807Real transcribed from published records
Global mean sea level, CSIRO reconstruction 1880 to 2013Real the one series fetched from a live open mirror
38 documented events on the timelineReal hand curated with descriptions
Time series for features with no curated tableIllustrative deterministic seeded signal, labeled everywhere it appears
Basin bed morphology in the section viewIllustrative pool and dead-pool elevations are real, the bed shape is not
Live agency ingestionNot 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.

The source registry

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.

NOAA CO-OPSPrimaryAdapter scaffolded
NOAA Center for Operational Oceanographic Products and Services
NOAA (US)

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.

PSMSLPrimaryAdapter scaffolded
Permanent Service for Mean Sea Level
NOC Liverpool (UK)

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.

GLOSS/IOCPrimaryAdapter scaffolded
GLOSS / IOC Sea Level Station Monitoring Facility
IOC-UNESCO

Near-real-time sea level from ~1,000 global stations.

UHSLCPrimaryAdapter scaffolded
University of Hawaii Sea Level Center
UH Manoa (US)

Research-quality hourly/daily tide gauge data, global.

NASAPrimaryAdapter scaffolded
NASA Sea Level Change Portal (altimetry)
NASA (US)

Global mean and gridded sea surface height from satellite altimetry, 1993–present. No coverage before the altimetry era.

USGS NWISPrimaryAdapter scaffolded
USGS National Water Information System
USGS (US)

US river stage, discharge, lake levels and groundwater; ~13,000 active gauges. US only.

USBRPrimaryHand curated
US Bureau of Reclamation Hydromet / RISE
USBR (US)

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.

CDECPrimaryAdapter scaffolded
California Data Exchange Center
CA DWR (US)

California reservoir storage, snowpack and river stage.

CopernicusSecondaryAdapter scaffolded
Copernicus Global Flood Awareness System / river discharge
ECMWF (EU)

Modeled global river discharge reanalysis, 1979–present. Modeled, not gauged, always labeled as such.

Model output; verify against national gauge networks where possible.

HydrowebSecondaryAdapter scaffolded
Hydroweb / Copernicus lake & river water level (satellite altimetry)
CNES / Copernicus (EU)

Satellite-altimetry water levels for ~10,000 lakes and river reaches, 1992–present. Virtual stations only where satellite tracks cross.

JRC GSWSecondaryAdapter scaffolded
JRC Global Surface Water (Landsat-derived extent)
EC JRC / Google

Global 30 m water surface extent and change, 1984–present, from Landsat. Extent, not level, derived metric.

GRanDPrimaryAdapter scaffolded
Global Reservoir and Dam Database
GWSP / McGill

~7,300 large dams and reservoirs with attributes and geometry.

GDWPrimaryAdapter scaffolded
Global Dam Watch integrated database
Global Dam Watch

Harmonized global dam/barrier records (GRanD + GOODD + FHReD).

GOODDSecondaryAdapter scaffolded
GlObal geOreferenced Database of Dams
King's College London

~38,000 dam points digitized from satellite imagery. Location only.

NIDPrimaryAdapter scaffolded
US National Inventory of Dams
USACE (US)

~92,000 US dams with engineering attributes. US only.

AQUASTATSecondaryAdapter scaffolded
FAO AQUASTAT dams and water resources
FAO (UN)

Country-level water statistics and a global dam register.

Utility recordsPrimaryHand curated
Official desalination registries & utility disclosures
Various national utilities

Commissioning dates and capacities for major plants, curated from operator and government publications.

NOAA GLERLPrimaryAdapter scaffolded
NOAA Great Lakes Environmental Research Laboratory
NOAA (US)

Great Lakes water levels since 1918 (coordinated US/Canada record).

OSMInferredAdapter scaffolded
OpenStreetMap
OSM contributors

Fallback geometry only. Never used as primary truth for measurements.

Community-maintained; verify before use.

Demo signalInferredHand curated
Water Atlas illustrative demo signal
Water Atlas

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.

How it is built

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.

Visits

—
Visits from this browser
—
Site-wide views
—
You first opened the atlas

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.

Go look

The argument is in the instrument, not on this page.