Skip to content

OpenMeteoSource

OpenMeteoSource

Downloads weather forecast data from Open-Meteo Previous Runs API. No API key required.

Basic Usage

import pandas as pd
from epftoolbox2.data.sources import OpenMeteoSource
source = OpenMeteoSource(
latitude=52.2297, # Warsaw
longitude=21.0122,
horizon=7,
prefix="warsaw",
)
df = source.fetch(
start=pd.Timestamp("2024-01-01", tz="UTC"),
end=pd.Timestamp("2024-06-01", tz="UTC"),
)

Parameters

ParameterTypeRequiredDefaultDescription
latitudefloatYes-Location latitude (-90 to 90)
longitudefloatYes-Location longitude (-180 to 180)
horizonintNo7Days ahead for forecasts
modelstrNo"jma_seamless"Weather model
columnsList[str]NoDEFAULT_COLUMNSWeather variables
prefixstrNo""Prefix for column names

Rate Limiting


Output Column Naming

Columns are named: {prefix}_{variable}_d+{horizon}

# Example output columns:
# warsaw_temperature_2m_d+1
# warsaw_temperature_2m_d+2
# ...
# warsaw_temperature_2m_d+7

Default Weather Variables

VariableDescription
temperature_2mTemperature at 2m (°C)
rainRain amount (mm)
showersShower amount (mm)
snowfallSnowfall amount (cm)
relative_humidity_2mRelative humidity (%)
dew_point_2mDew point (°C)
apparent_temperatureFeels-like temperature (°C)
precipitationTotal precipitation (mm)
weather_codeWMO weather code
surface_pressureSurface pressure (hPa)
pressure_mslSea-level pressure (hPa)
cloud_coverCloud cover (%)
wind_speed_10mWind speed at 10m (km/h)
wind_direction_10mWind direction at 10m (°)

Example: Multiple Locations

from epftoolbox2.pipelines import DataPipeline
from epftoolbox2.data.sources import OpenMeteoSource
cities = {
"warsaw": (52.2297, 21.0122),
"krakow": (50.0647, 19.9450),
"gdansk": (54.3520, 18.6466),
}
pipeline = DataPipeline()
for name, (lat, lon) in cities.items():
pipeline.add_source(OpenMeteoSource(
latitude=lat,
longitude=lon,
horizon=7,
prefix=name,
))
df = pipeline.run(start="2024-01-01", end="2024-06-01", cache=True)

Output

Data is returned with a UTC DatetimeIndex:

print(df.columns[:5].tolist())
# ['warsaw_temperature_2m_d+1', 'warsaw_temperature_2m_d+2', ...]