Forecast#
Forecast information is provided by NOAA’s National Digital Forecast Database.
As always, you need to begin by creating an instance of Buoy
:
from pybuoy import Buoy
buoy = Buoy()
Get Forecast Data#
from datetime import datetime, timedelta
start = datetime.today().isoformat()
end = (datetime.today() + timedelta(7)).isoformat()
station_44065 = [40.369, -73.703] # lat, lon
forecast_data = buoy.forecasts.get(
lat=station_44065[0],
lon=station_44065[1],
start_date=start,
end_date=end
)
Note
start_date and end_date MUST BE a valid ISO Date string.
forecast_data returns an iterable instance of ForecastObservations
.
ForecastObservations(
reports=[
ForecastObservation(
datetime=datetime.datetime(2022, 12, 4, 19, 0, tzinfo=datetime.timezone(datetime.timedelta(days=-1, seconds=68400))),
wind_direction=ObservationDatum(Wind Direction: 280.0 degrees),
wind_speed=ObservationDatum(Wind Speed: 9.0 knots),
wind_gust=ObservationDatum(Wind Gust: 11.0 knots),
wave_height=ObservationDatum(Wave Height: 2.0 feet)
),
ForecastObservation(
datetime=datetime.datetime(2022, 12, 4, 22, 0, tzinfo=datetime.timezone(datetime.timedelta(days=-1, seconds=68400))),
wind_direction=ObservationDatum(Wind Direction: 270.0 degrees),
wind_speed=ObservationDatum(Wind Speed: 9.0 knots),
wind_gust=ObservationDatum(Wind Gust: 12.0 knots),
wave_height=ObservationDatum(Wave Height: 2.0 feet)
),
ForecastObservation(
datetime=datetime.datetime(2022, 12, 5, 1, 0, tzinfo=datetime.timezone(datetime.timedelta(days=-1, seconds=68400))),
wind_direction=ObservationDatum(Wind Direction: 270.0 degrees),
wind_speed=ObservationDatum(Wind Speed: 9.0 knots),
wind_gust=ObservationDatum(Wind Gust: 12.0 knots),
wave_height=ObservationDatum(Wave Height: 2.0 feet)
),
...
ForecastObservation(
datetime=datetime.datetime(2022, 12, 11, 7, 0, tzinfo=datetime.timezone(datetime.timedelta(days=-1, seconds=68400))),
wind_direction=ObservationDatum(Wind Direction: 20.0 degrees),
wind_speed=ObservationDatum(Wind Speed: 16.0 knots),
wind_gust=ObservationDatum(Wind Gust: nan knots),
wave_height=ObservationDatum(Wave Height: nan feet)
),
ForecastObservation(
datetime=datetime.datetime(2022, 12, 11, 13, 0, tzinfo=datetime.timezone(datetime.timedelta(days=-1, seconds=68400))),
wind_direction=ObservationDatum(Wind Direction: 30.0 degrees),
wind_speed=ObservationDatum(Wind Speed: 13.0 knots),
wind_gust=ObservationDatum(Wind Gust: nan knots),
wave_height=ObservationDatum(Wave Height: nan feet)
),
ForecastObservation(
datetime=datetime.datetime(2022, 12, 11, 19, 0, tzinfo=datetime.timezone(datetime.timedelta(days=-1, seconds=68400))),
wind_direction=ObservationDatum(Wind Direction: 50.0 degrees),
wind_speed=ObservationDatum(Wind Speed: 13.0 knots),
wind_gust=ObservationDatum(Wind Gust: nan knots),
wave_height=ObservationDatum(Wave Height: nan feet)
)
],
size=41
)
Note
If no value was recorded (e.g., “Wave Height: nan ft”), it is set to None.