Wrapper for the NOAA National Data Buoy Center
Project description
Buoyant
Buoyant is a Python wrapper for grabbing buoy data from the National Buoy Data Center. It parses CSV from the SDF endpoint and images from the BuoyCam service.
The NBDC provides a list and a map of active buoys.
Hello buoy example:
> from buoyant import Buoy
> buoy = Buoy(13010)
Construct the Buoy object with the station ID. It's an alphanumeric code. If its numeric, an integer works fine.
More examples:
> from buoyant import Buoy
> buoy = Buoy('0Y2W3')
> buoy.air_pressure_at_sea_level
Observation(1014.1, 'hPa')
```
Get buoy location.
```python
> buoy.coords
(44.794, -87.313)
```
Get the time the measurements were made. This can be some time ago!
```python
> buoy.air_pressure_at_sea_level.datetime
datetime.datetime(2015, 8, 18, 11, 40, tzinfo=<UTC>)
```
Not all stations report all data at all times. Be prepared to handle empty attributes.
```python
> buoy.wave_height
None
```
Clear the buoy object's data dictionary. This isn't very useful, since the buoys update only every hour or so.
```
> buoy.refresh()
The Observation object is numeric value (a float) with two additional attributes, unit and value. Generally unit this is an abbreviation for a metric unit or composition of units. You can use Observations just like numeric objects, and use the value or unit field when formatting:
> pressure = buoy.air_pressure_at_sea_level
Observation(1014.1, 'hPa')
> min(pressure, 1020)
Observation(1014.1, 'hPa')
> '{0.value} [{0.unit}]'.format(pressure)
'1014.1 [hPa]'
Images
Some buoys have cameras! If the buoy doesn't have an active camera, a placeholder image provided by the NBDC will be returned.
> station = Buoy(41009)
> station.image_url
'http://www.ndbc.noaa.gov/images/buoycam/Z14C_2014_11_01_2200.jpg'
Save image as a file 'out.jpg'
> station.write_image('out.jpg')
Get raw image as a BytesIO object
> station.image
<_io.BytesIO object>
> station.url
'http://www.ndbc.noaa.gov/station_page.php?station=41009'
No data
There are two ways to a buoy can be missing a certain data field. Either there's no recent observation, or that buoy doesn't observe that datum.
> buoy = Buoy('0Y2W3')
> buoy.winds
# None, because while this is usually recorded, it hasn't been lately.
> sturgeon.waves
None
Measurements included
- air_pressure_at_sea_level
- air_temperature
- currents
- sea_floor_depth_below_sea_surface
- sea_water_electrical_conductivity
- sea_water_salinity
- sea_water_temperature
- waves
- winds
Currents and Waves and Wind
Wave and wind data have multiple data points, the are returned as dicts.
Currents data is returned as a list of dicts with current information at different times/depths. It's not well-documented on the NBDC site, so good luck!
Compatibility
Buoyant is compatible with Python 3.5+.
License
Buoyant is licensed under the GPL.
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file buoyant-0.7.0.macosx-10.13-x86_64.tar.gz.
File metadata
- Download URL: buoyant-0.7.0.macosx-10.13-x86_64.tar.gz
- Upload date:
- Size: 9.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.6.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d3038f7619348cc1cd1609252cacb2958d67d1d070b2c4740f18078bdbef611d
|
|
| MD5 |
bf79d6ea3d9a85778b5bb0387d773b24
|
|
| BLAKE2b-256 |
28e58cef7bfd175e00348c55c668a511498609ad6fb99f479a55ee5d77c8ac2e
|
File details
Details for the file buoyant-0.7.0-py3-none-any.whl.
File metadata
- Download URL: buoyant-0.7.0-py3-none-any.whl
- Upload date:
- Size: 19.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.6.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
13813fa94c5008e9d5bc4fc067cb7c798e37192f82fbc112356f908509c725ef
|
|
| MD5 |
5b85c3cfac7533b345b3e46578849e77
|
|
| BLAKE2b-256 |
72de52be470db5cb72f075f52c71ec2612fe04e2e509343827c9a4c913e59dda
|