CoolFace
Datasetpublic

Rekin226/aquascope-gauges

AquaScope gauges The station catalog of every water-observation source AquaScope can reach, harvested on a schedule and published as GeoParquet. Last run 2026-09-23T23:27:06+00:00 with aquascope 0.18.0: 75,721 stations from 11 of 11 sources. Files: stations.parquet: GeoParquet 1.0 (WKB point geometry, WGS84). One row per station: source, station_id, site_id, name, latitude, longitude, variables, period_start, period_end, url (deep link to the agency page), river, country… See the full description on the dataset page: https://huggingface.co/datasets/Rekin226/aquascope-gauges.

sourceHugging Faceotherupdated 1d agoView on Hugging Face
0likes2.6kdownloads
Dataset Card

AquaScope gauges

The station catalog of every water-observation source AquaScope can reach, harvested on a schedule and published as GeoParquet. Last run 2026-09-23T23:27:06+00:00 with aquascope 0.18.0: 75,721 stations from 11 of 11 sources.

Files:

  • —stations.parquet: GeoParquet 1.0 (WKB point geometry, WGS84). One row per station: source, station_id, site_id, name, latitude, longitude, variables, period_start, period_end, url (deep link to the agency page), river, country, agency, license, redistributable, extra.
  • —stations.geojson: the same rows as GeoJSON for tools that don't read parquet.
  • —health.json: per-source status of the last run (station count, seconds, error if any).
  • —signatures.parquet: flow signatures of every mirrored discharge station (source, station_id, record span and completeness, mean flow, Q5/Q50/Q95, baseflow index, Mann-Kendall p and Sen slope of the annual maxima with amax_trend rising/falling/none, GEV L-moments Q100, mean day of the annual maximum, and notes saying why a value is empty). Join on (source, station_id).

site_id identifies a physical site within a source and defaults to station_id. Group by (source, site_id) to associate sub-stations while preserving every station record.

Query it in place

DuckDB reads the parquet over HTTPS without downloading it:

sql
INSTALL httpfs; LOAD httpfs;
SELECT source, count(*) FROM
  'https://huggingface.co/datasets/Rekin226/aquascope-gauges/resolve/main/stations.parquet'
GROUP BY source ORDER BY 2 DESC;

Or from Python: pandas.read_parquet("hf://datasets/Rekin226/aquascope-gauges/stations.parquet").

Sources and terms

Only sources whose terms allow redistribution will have their observations mirrored (Phase 1 of #188); every source appears in the catalog with a link back to the agency. Attribution for each source is in the AquaScope registry (aquascope.registry.SOURCES[key].attribution).

keysourcecountryvariableslicencemirror observationslast run
bomBOM Water Data OnlineAUSdischarge, waterlevel, reservoirstorage, groundwaterlevel, precipitation, waterqualityCC-BY-3.0-AUyes16,673 stations
brazil_anaANA HidrowebBRAdischarge, water_level, precipitationunknowncatalog only11,406 stations
greece_hydroscopeGreece HydroscopeGRCwater_level, discharge, precipitationunknowncatalog only704 stations
greece_openhiGreece OpenHi.netGRCdischarge, waterlevel, precipitation, climate, waterquality, evapotranspirationCC-BY-SA-4.0yes65 stations
hubeau_hydrometrieHub'Eau hydrométrieFRAdischarge, water_leveletalab-2.0yes4,158 stations
ireland_opwIreland OPWIRLwater_levelCC-BY-4.0yes465 stations
pegelonlinePEGELONLINEDEUwater_level, dischargeDL-DE-BY-2.0yes729 stations
poland_imgwPoland IMGW-PIBPOLdischarge, waterlevel, waterqualityIMGW-PIB-open-datayes911 stations
taiwan_cwaTaiwan CWA climate stationsTWNclimate, precipitationOGDL-Taiwan-1.0yes1,265 stations
uk_eaEnvironment Agency (England)GBRdischarge, waterlevel, precipitation, groundwaterlevelOGL-UK-3.0yes9,536 stations
usgsUSGS Water ServicesUSAdischarge, waterlevel, waterqualityUS-PDyes29,809 stations

Observations (filling up week by week)

Daily values per station as obs/<variable>/<source>/<station_id>.csv.gz (date,value; discharge in m3/s, water and groundwater level in m, precipitation in mm/day), only for sources whose terms allow mirroring, plus one Parquet bundle per variable and source, obs/<variable>/<source>.parquet (station_id, date, value; join station_id to stations.parquet). obs/manifest.json lists every harvested station with its period, count and unit, and every bundle. Read one station:

python
pd.read_csv("hf://datasets/Rekin226/aquascope-gauges/obs/discharge/usgs/USGS-01646500.csv.gz")

a whole source in one go:

python
pd.read_parquet("hf://datasets/Rekin226/aquascope-gauges/obs/discharge/hubeau_hydrometrie.parquet")

or with DuckDB, joined to the catalog:

sql
SELECT s.name, o.date, o.value
FROM 'hf://datasets/Rekin226/aquascope-gauges/obs/discharge/uk_ea.parquet' o
JOIN 'hf://datasets/Rekin226/aquascope-gauges/stations.parquet' s USING (station_id)
WHERE s.name ILIKE '%thames%'
sourcevariablestations harvestedbundlelicence
greece_openhidischarge6obs/discharge/greece_openhi.parquet (11,570 rows)CC-BY-SA-4.0
greece_openhiprecipitation30obs/precipitation/greece_openhi.parquet (73,039 rows)CC-BY-SA-4.0
greece_openhiwater_level40obs/water_level/greece_openhi.parquet (66,140 rows)CC-BY-SA-4.0
hubeau_hydrometriedischarge510obs/discharge/hubeau_hydrometrie.parquet (4,412,883 rows)etalab-2.0
poland_imgwdischarge4obs/discharge/poland_imgw.parquet (80,636 rows)IMGW-PIB-open-data
poland_imgwwater_level5obs/water_level/poland_imgw.parquet (108,395 rows)IMGW-PIB-open-data
taiwan_cwaprecipitation35obs/precipitation/taiwan_cwa.parquet (99,860 rows)OGDL-Taiwan-1.0
uk_eadischarge660obs/discharge/uk_ea.parquet (9,749,604 rows)OGL-UK-3.0
uk_eagroundwater_level213obs/groundwater_level/uk_ea.parquet (210,129 rows)OGL-UK-3.0
uk_eaprecipitation201obs/precipitation/uk_ea.parquet (1,975,618 rows)OGL-UK-3.0
uk_eawater_level223obs/water_level/uk_ea.parquet (1,702,513 rows)OGL-UK-3.0
usgsdischarge591obs/discharge/usgs.parquet (5,463,958 rows)US-PD
usgswater_level102obs/water_level/usgs.parquet (574,852 rows)US-PD

Catchments (BasinATLAS, basins/)

The level-12 sub-basins of HydroATLAS v1.0 / BasinATLAS (Linke et al. 2019, CC BY 4.0) with their routing and attributes, so any point on land can be placed in its catchment and described: basins/lev12.fgb (simplified polygons, spatially indexed; point lookups over HTTPS read a few kilobytes), basins/lev12_topology.parquet (hybas_id, next_down, main_bas, sub_area, up_area, ... plus a representative point), basins/lev12_attributes.parquet (every BasinATLAS attribute per sub-basin, incl. the upstream-aggregated *_u* fields), and basins/lev12.pmtiles / basins/lev06.pmtiles for maps. Built by basins.yml; aquascope basins at LAT LON and the MCP tool describe_catchment read them. Cite: Linke, S., Lehner, B., Ouellet Dallaire, C., et al. (2019). Global hydro-environmental sub-basin and river reach characteristics at high spatial resolution. Scientific Data 6: 283. https://doi.org/10.1038/s41597-019-0300-6

How it is built

aquascope harvest stations --out archive --publish Rekin226/aquascope-gauges runs weekly from GitHub Actions. Every collector answers stations() from its own agency API; nothing is hand-edited. Add a source to AquaScope and it appears here on the next run.

Citation

Cite the AquaScope software (Zenodo concept DOI in the repository README) and the agency of any source you use, as listed in the table above.