Skip to content

v0.1.0

Choose a tag to compare

@clarkbw clarkbw released this 19 Jul 18:26
· 23 commits to main since this release

First release.

NOAA CO-OPS tidal-current station data — the extractor, the schema, the validation
method, and a write-up of how the API actually behaves.

currents.json (attached) is the prebuilt US bundle: 856 harmonic + 1,705
subordinate stations
, 0 unresolved references. Vendor it, or extract your own subset
with the CLI.

npm install @sailingnaturali/current-stations
npx current-stations extract mine.json --stations PUG1717,PUG1701

What's in here

  • Extractor for NOAA's station list, harmonic constituents, and subordinate offsets
  • Live predictions client (currents_predictions)
  • current-stations check — one request, fails when NOAA's station list drifts from
    the pinned lock (runs weekly here)
  • current-stations golden — captures constituents plus NOAA's own predictions into
    one fixture, so a prediction engine can be validated offline
  • JSON Schema for the bundle, and TypeScript types

The parts that cost us days

Documented in docs/noaa-api.md:

  • harcon.json returns an empty list at any bin except the station's currbin
    which reads as "NOAA doesn't publish current constituents." It does, for 856 stations.
  • Z₀ (majorMeanSpeed) is a DC offset on the velocity curve, and slack is where that
    curve crosses zero. Omitting it measured 15.6 min mean error; including it, 7.4.
  • A reference is a (station, bin) pair, not a station — 14 subordinates in US waters
    reduce against a non-primary bin.
  • A type: S station is not necessarily offset-reduced; 1 of 1,706 carries its own
    harcon, and predicting it the other way is 89 minutes wrong.

Zero dependencies. Code MIT; NOAA data is public domain. Derived predictions are
unofficial — not for navigation.