Skip to main content

The open marina for maritime data — one clean Python interface over fragmented US public marine data (NDBC, tides & currents, and more).

Project description

openmarina

Clean marine data in one line — no parsers, no unit conversions, no agency quirks.

import openmarina

cf = openmarina.load("ndbc:41122")     # a buoy off Florida, last 24h
df = cf.to_wide()                       # one clean column per variable

The problem it solves

You want recent wave height and wind near a spot on the water. Simple — until you try.

One agency hands you whitespace-delimited text with a cryptic header. The next wants an API key and returns JSON. Pressure is in hectopascals here, millibars there. Wind direction means "coming from" in one feed and "going to" in another. Timestamps arrive in three different time zones. So you write a parser — and patch it again next month when the format quietly changes. Then you need a second agency, and you start over.

Public ocean data is free, but using it costs you days.

openmarina does that work once, so you don't. One call returns a clean, normalized table — the same variable names, the same SI units, UTC, WGS84 — no matter which agency the data came from.

How it works

  • Normalized once. A wave height from a Florida buoy and one from a Maine buoy come back as the same variable, in the same units, in the same table.
  • Quality you can see. Every value carries a qc_flag (good / suspect / missing), so you know what to trust.
  • Find what's near you. nearest(lat, lon) — or nearest --zip 33139.
  • Add an agency in one PR. Each source is a small adapter behind one shared contract, verified by a built-in conformance harness. New sources don't complicate the ones you already use.

Get started

Install (Python 3.10+):

pip install openmarina        # once published
pip install -e ".[dev]"       # from a clone

From Python:

import openmarina

cf = openmarina.load("coops:8723214", start="2026-06-23", end="2026-06-24")
cf.to_wide()                                        # tidy table, one column per variable
cf.meta                                             # provenance, datum, cadence
openmarina.load_many(["ndbc:41122", "ndbc:41009"])  # several stations at once
openmarina.nearest_zip("33139")                     # nearest station to a ZIP (pip install pgeocode)

From the terminal:

openmarina pull ndbc:41122 --wide -o out.csv
openmarina nearest 25.76 -80.19
openmarina stations
# on a locked-down machine, run any command as:  python -m openmarina ...

Sources today

Source What it gives you
NDBC NOAA buoys — waves, wind, water/air temperature, pressure
CO-OPS NOAA Tides & Currents — water level, currents, met
ERDDAP one configurable adapter for 60+ global providers

New agencies are welcome — the 15-minute path is in CONTRIBUTING.md.

License

Apache-2.0 — free to use, including commercially.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

openmarina-0.0.1.tar.gz (30.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

openmarina-0.0.1-py3-none-any.whl (30.0 kB view details)

Uploaded Python 3

File details

Details for the file openmarina-0.0.1.tar.gz.

File metadata

  • Download URL: openmarina-0.0.1.tar.gz
  • Upload date:
  • Size: 30.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for openmarina-0.0.1.tar.gz
Algorithm Hash digest
SHA256 6ff9984a97c4bf5a65c55e31a8579b78f77eda274766ca0d66e2fba846db2191
MD5 679d6705c5ad28144d8979eb0c047a10
BLAKE2b-256 95b00be28042f9cb3869414a151caea066033499f3fbb91a1425826410cbedcc

See more details on using hashes here.

File details

Details for the file openmarina-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: openmarina-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 30.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for openmarina-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 de6bcfd277531cdad0fe3dd693410447b9f442a37a4415bdbc331a35fb968062
MD5 c81dd98ab09f5363c491e9744b55fa65
BLAKE2b-256 406c313e7d1dd5d8963de54f18534b593231ef4107a5b56a0326d9d2541e4a4a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page