# Hydrohistorian data release: Colorado Water Division 1

Built 2026-10-27T16:07:42-06:00 from HydroBase snapshot `HydroBase_CO_20260707` plus the site's daily DWR/USGS refreshes (code `7df7c92`).
Water districts: 1, 2, 3, 4, 5, 6, 7, 8, 9, 23, 48, 49, 64, 65, 76, 80.

Every table ships as Parquet; the smaller ones also as one CSV, the two daily tables as one gzipped CSV per water district (some exceed a spreadsheet's 1,048,576-row limit). `streamflow_daily_wide.csv` is one row per day and one column per gage, sized for a spreadsheet. `riverware.zip` holds a RiverWare control-file DMI: one data file per gage and per structure's daily diversion, a `control.ctl` whose object/slot names you rename to your model's, and `network.csv` + `streams.csv` (every structure, gage and confluence in downstream order, from DWR's stream network). `manifest.json` lists every file with its row count and SHA-256.

## What was changed from the published record

- DWR publishes -999 as 'no data' with no flag. This release drops those days; gages.sentinel_days_dropped counts them. A missing day is missing, never zero.
- DWR pre-stamps the rest of the water year with 0.0 diversion rows. Rows dated after the build are dropped.
- diversions_daily holds DWR's 'Total (Diversion)' and 'Total (Release)' rollups only. The per-water-class rows decompose those totals and are not included.
- Diversion records publish roughly a year in arrears. A recent gap is usually DWR's schedule, not a structure that stopped.
- net_apex_* amounts are alternate points of diversion or exchanges of the same water. Adding them to net_absolute double-counts.
- A DWR gage and the USGS gage it mirrors are both shipped under their own ids; gages.same_site_as pairs them. Do not add them together.
- Identifiers are text. Read site_id, usgs_site_id and wdid as strings: a CSV reader that guesses numbers turns USGS 09361500 into 9361500 and WDID 0700553 into 700553. The Parquet files already carry them as text.
- USGS's own estimated values are kept as USGS publishes them and flagged in qualifier (e = estimated; also ice, dry, lessthan and others).
- Not in this release, and not found in a public machine-readable form: NIIP and San Juan-Chama Project diversion records, CRMMS/24-Month Study model inputs, and published area-capacity tables for reservoirs other than those in area_capacity.
- Nothing is gap-filled, interpolated or unit-converted. Values are as the source published them, minus the removals above.
- network.stream_mile is DWR's stream mile, counted UPSTREAM from the mouth (or from the state line). A gage whose mile is 'estimated' borrowed it from the nearest structure on the stream its name names, placement_km away; gages further than 3 km from any such structure are left unplaced rather than guessed.
- Diversions, rights, calls, structures and the stream network are Colorado's (DWR). Streamflow also carries the USGS gages of the San Juan basin in New Mexico, Utah and Arizona (Archuleta, Farmington, Shiprock, Four Corners, Bluff and others). Those are on DWR's network only where DWR's own stream miles reach them: the San Juan's miles run through New Mexico, so Archuleta and Farmington are placed; every other river's network stops at the state line, where DWR counts everything below it as mile 0 (network.tie_order marks those).
- These are public DWR and USGS records assembled by Hydrohistorian. DWR's HydroBase and USGS NWIS remain the authority.
- 629,227 timestamp(s) in 215 source file(s) were within an hour of midnight rather than on it (a daylight-time midnight stored in standard time) and were taken as the day of the nearest midnight.

## Tables

### gages

Every stream gage with a daily record in the division, both sources. 1,100 rows.

| column | meaning |
|---|---|
| `source` | DWR or USGS -- whose record this is |
| `site_id` | DWR station abbrev (e.g. ANIDURCO) or USGS site number |
| `name` | Station name as the source publishes it |
| `usgs_site_id` | USGS site number, where DWR records one for the station |
| `same_site_as` | The other source's id for the same physical gage, if both are shipped |
| `state` | State the gage sits in, from its coordinates (publishers code some state-line gages by their office, e.g. DWR lists Animas near Cedar Hill, NM as CO) |
| `water_district` | Colorado water district the station sits in; empty outside Colorado |
| `latitude` | Decimal degrees (NAD83) |
| `longitude` | Decimal degrees (NAD83) |
| `first_date` | First day with a value in this release |
| `last_date` | Last day with a value in this release |
| `n_days` | Days with a value (sentinels already dropped) |
| `sentinel_days_dropped` | Days DWR published as -999 (no data) that this release removed |

### streamflow_daily

Daily mean flow, one row per gage per day. 7,736,540 rows (1881-07-01 to 2026-10-26).

| column | meaning |
|---|---|
| `source` | DWR or USGS |
| `site_id` | Joins gages.site_id (with source) |
| `date` | The day the mean flow describes (local) |
| `flow_cfs` | Mean daily discharge, cubic feet per second, as published |
| `qualifier` | USGS codes: A approved / P provisional, then any qualifiers (e = estimated; also ice, dry, lessthan, ratingdev ...); empty for DWR |

### structures

Every structure DWR lists in the division. 59,685 rows.

| column | meaning |
|---|---|
| `wdid` | Seven-digit Colorado water district id |
| `name` | Structure name |
| `structure_type` | DWR structure type code |
| `ciu_code` | DWR currently-in-use code (A active, H historical, ...) |
| `water_source` | Stream or source the structure diverts from |
| `gnis_id` | GNIS id of that stream; joins streams.gnis_id |
| `water_district` | Water district |
| `stream_mile` | DWR stream mile: miles UPSTREAM from the stream's mouth, or from the state line where it leaves Colorado |
| `county` | County |
| `latitude` | Decimal degrees |
| `longitude` | Decimal degrees |
| `n_diversion_days` | Days with a Total (Diversion) record in diversions_daily |

### diversions_daily

Daily diversion and release totals per structure. 9,591,216 rows (1908-09-01 to 2026-10-27).

| column | meaning |
|---|---|
| `wdid` | Joins structures.wdid |
| `date` | The day the record describes |
| `record` | Which DWR total: Diversion or Release |
| `value` | Recorded amount for the day |
| `units` | Units as published: CFS (mean daily rate); AF (volume) where DWR records a volume |
| `obs_code` | DWR observation code |
| `approval_status` | DWR approval status |

### reservoir_storage

Reservoir measurements DWR holds (storage, fill, release, evaporation). 554,787 rows (1919-11-23 to 2025-10-31).

| column | meaning |
|---|---|
| `wdid` | Reservoir WDID; joins structures.wdid |
| `date` | Measurement day |
| `gage_height_ft` | Gage height, feet |
| `storage_af` | Storage, acre-feet |
| `fill_af` | Fill since last reading, acre-feet |
| `release_af` | Release, acre-feet |
| `evap_loss_af` | Evaporation loss, acre-feet |

### reservoirs

Reclamation reservoirs in the basin and the daily series each publishes. 0 rows.

| column | meaning |
|---|---|
| `reservoir` | Reservoir |
| `riverware_object` | The object name riverware.zip uses for it (a placeholder to rename) |
| `hydrodata_site` | Reclamation HydroData site id |
| `rise_location_id` | Reclamation RISE location id |
| `series` | Daily series published (semicolon-separated) |
| `first_date` | First day of any series |
| `last_date` | Last day of any series |
| `operator_note` | Project / operator |

### reservoir_daily

Reclamation's daily reservoir record: storage, elevation, release, inflow, evaporation. 0 rows.

| column | meaning |
|---|---|
| `reservoir` | Joins reservoirs.reservoir |
| `date` | Day (Reclamation's operating day) |
| `series` | storage, pool_elevation, total_release, inflow, evaporation, surface_area, unregulated_inflow, modified_unregulated_inflow |
| `value` | As published (flagged values are kept, never altered) |
| `units` | acre-ft, ft, cfs, acre-ft/day or acres |
| `flag` | 'implausible' when the value lies further outside this series' own 0.1-99.9 percentile range than that range is wide (e.g. a 7,792,360 ft pool elevation); empty otherwise |

### area_capacity

Published elevation-area-capacity tables (sedimentation surveys). 0 rows.

| column | meaning |
|---|---|
| `reservoir` | Reservoir |
| `survey_year` | Year of the sedimentation survey the table comes from |
| `elevation_ft` | Elevation (datum in the datum column) |
| `volume_af` | Capacity at that elevation, acre-feet |
| `area_ac` | Surface area, acres |
| `coef_c` | Reclamation's C: capacity between whole feet is V + A*(e-base) + C*(e-base)^M |
| `exp_m` | Reclamation's M |
| `datum` | Vertical datum |

### water_rights

Every decreed right, net amounts and priority. 57,024 rows.

| column | meaning |
|---|---|
| `wdid` | Structure the right is decreed to |
| `structure_name` | Structure name |
| `admin_number` | Priority administration number (lower is senior) |
| `order_number` | Tie-break within an admin number |
| `appropriation_date` | Appropriation date |
| `adjudication_date` | Adjudication date |
| `prior_adjudication_date` | Previous adjudication date |
| `net_absolute` | Net absolute amount |
| `net_conditional` | Net conditional amount |
| `net_apex_absolute` | Alternate-point/exchange absolute amount -- NOT additive with net_absolute |
| `net_apex_conditional` | Alternate-point/exchange conditional amount -- NOT additive |
| `units` | C = cfs, A = acre-feet |
| `uses` | Decreed uses, decoded |
| `case_numbers` | Associated water-court case numbers |

### calls

The division's administrative call record. 11,892 rows.

| column | meaning |
|---|---|
| `call_type` | CALL or other DWR administrative record type |
| `set_at` | When the call was set (Mountain time) |
| `released_at` | When it was released (Mountain time); empty if still on or unrecorded |
| `water_source` | Stream the call is on |
| `location_wdid` | Structure placing the call |
| `location_name` | Its name |
| `priority_wdid` | Structure whose right is calling |
| `priority_name` | Its name |
| `priority_admin_number` | Admin number of the calling right |
| `priority_date` | Its priority date |
| `bounding_wdid` | Upstream bound of the call, where DWR records one |
| `set_comment` | DWR's comment when setting |
| `release_comment` | DWR's comment when releasing |
| `location_stream_mile` | DWR stream mile of the calling location, from the mouth; a call reaches only upstream of it (Division 1 REST record only; the mirror carries none) |
| `call_number` | DWR's stable id for the call (Division 1 REST record only) |

### streams

DWR's stream network: each stream, the stream it joins and the mile where it joins. 1,151 rows.

| column | meaning |
|---|---|
| `gnis_id` | GNIS id of the stream |
| `name` | Stream name |
| `water_districts` | Water districts it runs through (semicolon-separated) |
| `length_mi` | DWR stream length, miles |
| `parent_gnis_id` | Stream it flows into; empty where it leaves Colorado or ends the network |
| `parent_name` | Its name |
| `joins_parent_at_mile` | Stream mile ON THE PARENT where this stream enters |
| `level` | 0 = leaves Colorado or ends the network; 1 = tributary of a level-0 stream; ... |
| `route` | Streams from this one to the network's end, e.g. 'Florida River > Animas River' |

### network

Every structure and gage placed on that network, linked to the next node downstream. 9,298 rows.

| column | meaning |
|---|---|
| `node_id` | WDID (structure), 'DWR <abbrev>'/'USGS <site>' (gage), or 'CONF:<gnis_id>' (a confluence) |
| `node_type` | structure, gage or confluence |
| `name` | Name |
| `gnis_id` | Stream the node sits on; joins streams.gnis_id |
| `stream` | Its name |
| `stream_mile` | Position on that stream, DWR stream miles (upstream from the mouth) |
| `mile_source` | DWR (published stream mile), structure <wdid> (gage at a structure), or estimated (see placement_km) |
| `placement_km` | For an estimated gage: distance to the structure whose stream mile it borrowed |
| `downstream_node_id` | The next node downstream; a tributary's lowest node points at its confluence |
| `riverware_object` | The object name riverware.zip's control.ctl uses for this node (structures and gages) |
| `tie_order` | Set when several nodes share one stream mile (e.g. mile 0 below a state line): their order comes from their coordinates along the stream, not from DWR |
| `route` | Stream and mile from this node to the end of Colorado's network |

### wells

DWR monitoring wells. 23,278 rows.

| column | meaning |
|---|---|
| `well_id` | DWR monitoring well id |
| `name` | Well name |
| `wdid` | WDID, where the well has one |
| `permit` | Permit number, where recorded |
| `water_district` | Water district |
| `latitude` | Decimal degrees |
| `longitude` | Decimal degrees |
| `elevation_ft` | Land-surface elevation, feet |
| `well_depth_ft` | Well depth, feet |
| `aquifer` | Primary aquifer, as recorded |

### well_levels

Water-level measurements for those wells. 693,332 rows (1882-12-31 to 2026-09-25).

| column | meaning |
|---|---|
| `well_id` | Joins wells.well_id |
| `date` | Measurement day |
| `depth_to_water_ft` | Depth to water below land surface, feet |
| `water_level_elevation_ft` | Water-level elevation, feet |

### documents

The documents and datasets a RiverWare build of this basin rests on, with link status. 0 rows.

| column | meaning |
|---|---|
| `category` | CDSS/StateMod, RiverWare, SJRIP, Reclamation, Compacts & law, Forecasts & climate, CO DWR |
| `title` | Title |
| `publisher` | Publisher |
| `year` | Year or 'current' |
| `url` | Where the publisher serves it (we link; we do not re-host) |
| `format` | PDF, ZIP, XLSX, HTML ... |
| `why` | What a model build uses it for |
| `verified_on` | When a person first confirmed the document at this URL |
| `last_checked` | Date of the latest automated check |
| `last_status` | ok, refused automated check, dead, or error |
