Skip to content

barbacbd/nautical

Repository files navigation


Nautical
Real-time ocean data from NOAA buoys — Python & Go

Python Tests

PyPI version fury.io GitHub latest commit Python Code Coverage

Go Go Reference Go Code Coverage

Nautical is a library for scraping and parsing real-time and historical oceanographic data from NOAA's National Data Buoy Center. It supports both Python and Go, and was built for research, data logging, and monitoring — but there are many more possibilities to discover.

Installation

Python (requires 3.9+):

pip install nautical

Go (requires 1.18+):

go get github.com/barbacbd/nautical

Quick Start

from nautical.io.buoy import create_buoy

# Fetch live data for a buoy station
buoy = create_buoy("44099")

if buoy and buoy.valid:
    # Iterate over all available measurements
    for name, value in buoy.data:
        print(f"{name}: {value}")
buoy, err := noaa.CreateBuoy("44099")
if err != nil {
    log.Fatal(err)
}
fmt.Println(buoy)

Features

Buoy Data

A buoy may contain any of the following measurements:

Data Abbreviation Units
Wind Speed wspd Knots
Gust gst Knots
Wave Height wvht Feet
Dominant Wave Period dpd Seconds
Average Wave Period apd Seconds
Pressure pres PSI
Pressure Tendency ptdy PSI
Air Temperature atmp Fahrenheit
Water Temperature wtmp Fahrenheit
Dew Point dewp Fahrenheit
Salinity sal PSU
Visibility vis Nautical Miles
Tide tide Feet
Swell Height swh Feet
Swell Wave Period swp Seconds
Wind Wave Height wwh Feet
Wind Wave Period wwp Seconds
Ocean Temperature otmp Fahrenheit
Wind Speed 10m wspd10m Knots
Wind Speed 20m wspd20m Knots
Depth depth Feet

Sources

A source is a group of buoys organized by sponsor or owner. Use sources to discover available buoys by category.

from nautical.io.sources import get_buoy_sources

sources = get_buoy_sources()
for name, source in sources.items():
    print(f"{name}: {len(source)} buoys")

Data Caching

Save and reload buoy data locally. NOAA refreshes data roughly every 30 minutes — the cache lets you avoid redundant network calls.

from nautical.cache import dumps, load

# Save current data
dumps(data)

# Load it back later
cached = load()

Documentation

Development

make setup         # install + activate pre-commit hooks
make test          # run Python and Go tests
make lint          # pylint
make format        # auto-fix formatting (ruff + gofmt)
make docs          # build Sphinx API docs locally
make clean         # remove build artifacts

Contributing

See CONTRIBUTING.md for guidelines and commit message conventions.

License

Copyright © 2022–2026, Brent Barbachem. Released under the MIT License.

About

No description or website provided.

Topics

Resources

License

Contributing

Stars

7 stars

Watchers

1 watching

Forks

Packages

 
 
 

Contributors

Languages