Python wrapper for NOAA Tides & Currents Data and Metadata.
Project description
noaa_coops
A Python wrapper for the NOAA CO-OPS Tides & Currents Data and Metadata APIs.
Installation
This package is distributed via PyPi and can be installed using , pip
, poetry
, etc.
# Install with pip
❯ pip install noaa_coops
# Install with poetry
❯ poetry add noaa_coops
Getting Started
Stations
Data is accessed via Station
class objects. Each station is uniquely identified by an id
. To initialize a Station
object, run:
>>> from noaa_coops import Station
>>> seattle = Station(id="9447130") # Create Station object for Seattle (ID = 9447130)
Stations and their IDs can be found using the Tides & Currents mapping interface. Alternatively, you can search for stations in a bounding box using the get_stations_from_bbox
function, which will return a list of stations found in the box (if any).
>>> from pprint import pprint
>>> from noaa_coops import Station, get_stations_from_bbox
>>> stations = get_stations_from_bbox(lat_coords=[40.389, 40.9397], lon_coords=[-74.4751, -73.7432])
>>> pprint(stations)
['8516945', '8518750', '8519483', '8531680']
>>> station_one = Station(id="8516945")
>>> pprint(station_one.name)
'Kings Point'
Metadata
Station metadata is stored in the .metadata
attribute of a Station
object. Additionally, the keys of the metadata attribute dictionary are also assigned as attributes of the station object itself.
>>> from pprint import pprint
>>> from noaa_coops import Station
>>> seattle = Station(id="9447130")
>>> pprint(list(seattle.metadata.items())[:5]) # Print first 3 items in metadata
[('tidal', True), ('greatlakes', False), ('shefcode', 'EBSW1')] # Metadata dictionary can be very long
>>> pprint(seattle.lat_lon['lat']) # Print latitude
47.601944
>>> pprint(seattle.lat_lon['lon']) # Print longitude
-122.339167
Data Inventory
A description of a Station's data products and available dates can be accessed via the .data_inventory
attribute of a Station
object.
>>> from noaa_coops import Station
>>> from pprint import pprint
>>> seattle = Station(id="9447130")
>>> pprint(seattle.data_inventory)
{'Air Temperature': {'end_date': '2019-01-02 18:36',
'start_date': '1991-11-09 01:00'},
'Barometric Pressure': {'end_date': '2019-01-02 18:36',
'start_date': '1991-11-09 00:00'},
'Preliminary 6-Minute Water Level': {'end_date': '2023-02-05 19:54',
'start_date': '2001-01-01 00:00'},
'Verified 6-Minute Water Level': {'end_date': '2022-12-31 23:54',
'start_date': '1995-06-01 00:00'},
'Verified High/Low Water Level': {'end_date': '2022-12-31 23:54',
'start_date': '1977-10-18 02:18'},
'Verified Hourly Height Water Level': {'end_date': '2022-12-31 23:00',
'start_date': '1899-01-01 00:00'},
'Verified Monthly Mean Water Level': {'end_date': '2022-12-31 23:54',
'start_date': '1898-12-01 00:00'},
'Water Temperature': {'end_date': '2019-01-02 18:36',
'start_date': '1991-11-09 00:00'},
'Wind': {'end_date': '2019-01-02 18:36', 'start_date': '1991-11-09 00:00'}}
Data Retrieval
Available data products can be found in NOAA CO-OPS Data API docs.
Station data can be fetched using the .get_data
method on a Station
object. Data is returned as a Pandas DataFrame for ease of use and analysis. DataFrame columns are named according to the NOAA CO-OPS API docs, with the t
column (timestamp) set as the DataFrame index.
The example below fetches water level data from the Seattle station (id=9447130) for a 1 month period. The corresponding web output is shown below the code as a reference.
>>> from noaa_coops import Station
>>> seattle = Station(id="9447130")
>>> df_water_levels = seattle.get_data(
... begin_date="20150101",
... end_date="20150131",
... product="water_level",
... datum="MLLW",
... units="metric",
... time_zone="gmt")
>>> df_water_levels.head()
v s f q
t
2015-01-01 00:00:00 1.799 0.023 0,0,0,0 v
2015-01-01 00:06:00 1.718 0.018 0,0,0,0 v
2015-01-01 00:12:00 1.639 0.013 0,0,0,0 v
2015-01-01 00:18:00 1.557 0.012 0,0,0,0 v
2015-01-01 00:24:00 1.473 0.014 0,0,0,0 v
Development
Requirements
This package and its dependencies are managed using poetry. To install the development environment for noaa_coops
, first install poetry, then run (inside the repo):
poetry install
TODO
Click here for a list of existing issues and to submit a new one.
Contribution
Contributions are welcome, feel free to submit a pull request.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file noaa_coops-0.4.0.tar.gz
.
File metadata
- Download URL: noaa_coops-0.4.0.tar.gz
- Upload date:
- Size: 14.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.11.9 Darwin/23.5.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9b7853cd4b2961332e930723dee05b45a8539976cbd5a2550fd3577e3c20841f |
|
MD5 | a05788c19c00169372d021d4470047ab |
|
BLAKE2b-256 | 1bd1a0617ae0bd29a3096e8de4134806d755ec83b5e737e85fec8f027acc2eb6 |
File details
Details for the file noaa_coops-0.4.0-py3-none-any.whl
.
File metadata
- Download URL: noaa_coops-0.4.0-py3-none-any.whl
- Upload date:
- Size: 13.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.11.9 Darwin/23.5.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d05f00de2f889f3e01a1b4454f57f44268dea35b322ba9cbdc532effe21e8522 |
|
MD5 | e788eec0bd533c1afad5b6caf472ae71 |
|
BLAKE2b-256 | 671c21121519247ff05b987dc5293d33302aa8fcdf68ab41626162f03becbd81 |