Hydrological & Boating Methodology

How WaterLakeLevel selects monitoring stations, calculates historical percentiles, handles missing telemetry, and evaluates boating safety thresholds.

Methodology Version: 1.0 • Updated: October 11, 2026

1. Station Verification & Matching Rules

A monitoring station is verified and connected to a lake entity in our registry only when each of the following strict criteria is fulfilled:

  • Physical Basin Match: The station must be located directly on or immediately adjacent to the dam or main pool of the lake. We never select the nearest river gauge as a stand-in for a lake without manual confirmation.
  • Parameter Verification: We confirm that the station records true water surface elevation (USGS code 62614, 72020) or verified gauge height (code 00065). Elevation is never conflated with water depth.
  • Datum Confirmation: The vertical geodetic datum (NGVD29, NAVD88, or IGLD85) is explicitly identified and preserved in the data model.
  • Authoritative Sign-Off: Every record in data/lakes.json requires verified: true and the initials of our editor, Keshav Chouhan.

2. Historical Percentile Calculation Method

To determine whether today's water level is statistically normal, high, or low, we follow an objective non-parametric percentile ranking method:

  1. We take the current daily reading and compare it against all daily readings in the historical record falling within a ±3 day calendar window across every recorded year.
  2. We mandate a minimum threshold of at least 10 full years of verified daily records. If fewer than 10 years exist, our software explicitly displays "Not enough history" rather than generating misleading percentiles.
  3. The middle 50% band represents values between the 25th percentile (P25) and 75th percentile (P75). The 50th percentile (P50) is the historical median.
  4. In accordance with scientific standards, we never use the word "normal" without explicitly naming the percentile band (25th to 75th percentile) that defines it.

3. Data Freshness & Missing Data Handling

Automated telemetry systems can experience sensor failures or data outages:

  • Fresh Readings (< 24h old): Displayed with the official agency status (Approved or Provisional).
  • Delayed Readings (24h to 48h old): Tagged with an explicit timestamp warning.
  • Stale Telemetry (> 48h old): Labeled with a prominent "Stale Data" alert badge to prevent users from acting on expired numbers.
  • Missing Data: When a gauge is offline, we output "Data unavailable" with an honest, plain-English reason. We never invent synthetic readings, trends, or fake acreage.

4. Boating Safety Thresholds (Version 1.0)

Our Boating Go / No-Go Checker utilizes craft-specific wind and gust limits configured in data/boating-rules.json:

  • Kayaks & Paddleboards: Go limit: 8 mph. Caution: 9-12 mph. No-Go gust: >16 mph.
  • Jon Boats & Small Utilities: Go limit: 10 mph. Caution: 11-15 mph. No-Go gust: >20 mph.
  • Bass Boats: Go limit: 14 mph. Caution: 15-20 mph. No-Go gust: >25 mph.
  • Pontoon Boats: Go limit: 13 mph. Caution: 14-18 mph. No-Go gust: >24 mph.
  • Sailboats: Go limit: 16 mph. Caution: 17-22 mph. No-Go gust: >28 mph.

Active National Weather Service advisories (Small Craft Advisory, Gale Warning, Thunderstorm Warning) immediately override any hourly number to an unconditional Caution or No-Go.