API#
DWD#
DMO#
- class DwdDmoRequest
Bases:
wetterdienst.model.request.TimeseriesRequestImplementation of sites for dmo sites.
- metadata
None
- _values
None
- issue: str | datetime.datetime | wetterdienst.provider.dwd.dmo.api.DwdForecastDate
None
- station_group: Literal[single_stations, all_stations] | wetterdienst.provider.dwd.dmo.api.DwdDmoStationGroup | None
None
- lead_time: Literal[short, long] | wetterdienst.provider.dwd.dmo.api.DwdDmoLeadTime | None
None
- _url
‘https://www.dwd.de/DE/leistungen/opendata/help/schluessel_datenformate/kml/dmo_stationsliste_txt.asc…’
- _base_columns: ClassVar
[‘resolution’, ‘dataset’, ‘station_id’, ‘icao_id’, ‘start_date’, ‘end_date’, ‘latitude’, ‘longitude’…
- static adjust_datetime(datetime_: datetime.datetime) datetime.datetime
Adjust datetime to DMO release frequency (9/12 hours).
Datetime is floored to closest release time e.g. if hour is 14, it will be rounded to 12
- classmethod available_issues(station_id: str, settings: wetterdienst.settings.Settings) list[datetime.datetime]
Return datetimes for which DMO ICON single-station files exist on DWD’s server.
Run start times are deduplicated across lead times (078/168) and sorted in ascending UTC order.
- __post_init__() None
Post-initialize the DwdDmoRequest class.
- _station_patches
‘DataFrame(…)’
- _all() polars.LazyFrame
Get all stations from DMO.
Mosmix#
- class DwdMosmixRequest
Bases:
wetterdienst.model.request.TimeseriesRequestRequest MOSMIX data from the DWD server.
- metadata
None
- _values
None
- issue: str | datetime.datetime | wetterdienst.provider.dwd.mosmix.api.DwdForecastDate
None
- station_group: wetterdienst.provider.dwd.mosmix.api.DwdMosmixStationGroup
None
- _url
‘https://www.dwd.de/DE/leistungen/met_verfahren_mosmix/mosmix_stationskatalog.cfg?view=nasPublication’
- _base_columns: ClassVar
[‘resolution’, ‘dataset’, ‘station_id’, ‘icao_id’, ‘start_date’, ‘end_date’, ‘latitude’, ‘longitude’…
- classmethod available_issues(station_id: str, settings: wetterdienst.settings.Settings) list[datetime.datetime]
Return datetimes for which MOSMIX L single-station files exist on DWD’s server.
The list is sorted in ascending order and contains only unique UTC datetimes. Only MOSMIX_L single-station files are considered; the LATEST symlink is excluded.
- __post_init__() None
Post-initialization of the DwdMosmixRequest class.
- _all() polars.LazyFrame
Read the MOSMIX station catalog from the DWD server and return a DataFrame.
Observation#
- class DwdObservationRequest
Bases:
wetterdienst.model.request.TimeseriesRequestRequest class for DWD observation data.
- metadata
None
- _values
‘cast(…)’
- _history
‘cast(…)’
- _available_periods: ClassVar
None
- periods: str | wetterdienst.metadata.period.Period | set[wetterdienst.metadata.period.Period] | None
None
- property interval: portion.Interval | None
Interval of the request.
- property _historical_interval: portion.Interval
Interval of historical data release schedule.
Historical data is typically release once in a year somewhere in the first few months with updated quality
- property _recent_interval: portion.Interval
Interval of recent data release schedule.
Recent data is released every day somewhere after midnight with data reaching back 500 days.
- property _now_interval: portion.Interval
Interval of now data release schedule.
Now data is released every hour (near real time) reaching back to beginning of the previous day.
- _get_periods() set[wetterdienst.metadata.period.Period]
Get periods based on the interval of the request.
- static _parse_station_id(series: polars.Series) polars.Series
- _parse_period(period: str | wetterdienst.metadata.period.Period | set[wetterdienst.metadata.period.Period] | None) set[wetterdienst.metadata.period.Period] | None
Parse period from string or Period enumeration.
- __post_init__() None
Post init method.
- filter_by_station_id(station_id: str | int | tuple[str, ...] | tuple[int, ...] | list[str] | list[int]) wetterdienst.model.result.StationsResult
Filter by station id.
- classmethod describe_fields(dataset: str | collections.abc.Sequence[str] | wetterdienst.model.metadata.ParameterSearch | wetterdienst.model.metadata.DatasetModel, period: str | wetterdienst.metadata.period.Period, language: Literal[en, de] = 'en') dict
Describe fields of a dataset.
- _all() polars.LazyFrame
:return:
Radar#
- class DwdRadarValues(parameter: str | wetterdienst.provider.dwd.radar.metadata.parameter.DwdRadarParameter, site: wetterdienst.provider.dwd.radar.sites.DwdRadarSite | None = None, fmt: wetterdienst.provider.dwd.radar.metadata.DwdRadarDataFormat | None = None, subset: wetterdienst.provider.dwd.radar.metadata.DwdRadarDataSubset | None = None, elevation: int | None = None, start_date: str | datetime.datetime | wetterdienst.provider.dwd.radar.metadata.parameter.DwdRadarDate | None = None, end_date: str | datetime.datetime | datetime.timedelta | None = None, resolution: str | wetterdienst.metadata.resolution.Resolution | wetterdienst.provider.dwd.radar.metadata.DwdRadarResolution | None = None, period: str | wetterdienst.metadata.period.Period | wetterdienst.provider.dwd.radar.metadata.DwdRadarPeriod | None = None, settings: wetterdienst.settings.Settings | None = None)
API for DWD radar data requests.
Request radar data from different places on the DWD data repository.
https://opendata.dwd.de/weather/radar/composite/
https://opendata.dwd.de/weather/radar/sites/
https://opendata.dwd.de/climate_environment/CDC/grids_germany/daily/radolan/
https://opendata.dwd.de/climate_environment/CDC/grids_germany/hourly/radolan/
https://opendata.dwd.de/climate_environment/CDC/grids_germany/5_minutes/radolan/
Initialization
Initialize the request object.
Args: parameter: requested parameter (e.g. RADOLAN_CDC) site: requested site (e.g. DX_REFLECTIVITY) fmt: requested format (e.g. BINARY) subset: requested subset (e.g. RADOLAN) elevation: requested elevation (e.g. 10) start_date: start date of the requested data end_date: end date of the requested data resolution: requested resolution (e.g. MINUTE_5) period: requested period (e.g. RECENT) settings: settings for the request
- __str__() str
Return a string representation of the object.
- __eq__(other: object) bool
Compare two DwdRadarValues objects.
- adjust_datetimes() None
Adjust
start_dateandend_dateattributes to match minute marks for RadarParameter.RADOLAN_CDC is always published at HH:50. https://opendata.dwd.de/climate_environment/CDC/grids_germany/daily/radolan/recent/bin/
RW_REFLECTIVITY is published each 10 minutes. https://opendata.dwd.de/weather/radar/radolan/rw/
RQ_REFLECTIVITY is published each 15 minutes. https://opendata.dwd.de/weather/radar/radvor/rq/
All other radar formats are published in intervals of 5 minutes. https://opendata.dwd.de/weather/radar/composit/fx/ https://opendata.dwd.de/weather/radar/sites/dx/boo/
- _attach_bufr(result: wetterdienst.provider.dwd.radar.api.RadarResult) None
Attach the parsed BUFR contents to
result.dfwhenread_bufris enabled.No-op unless the request is for BUFR data and
Settings.read_bufris set. Requires the optional eccodes + pdbufr dependencies; a missing dependency or a parse error is logged and leavesresult.dfasNonerather than failing the whole query.
- query() collections.abc.Iterator[wetterdienst.provider.dwd.radar.api.RadarResult]
Query radar data from the DWD server.
- static _should_cache_download(url: str) bool
Determine whether this specific result should be cached.
Here, we don’t want to cache any files containing “-latest-” in their filenames.
Args: url: URL of the file to be downloaded
Returns: Whether the file should be cached or not
- _download_generic_data(url: str) collections.abc.Iterator[wetterdienst.provider.dwd.radar.api.RadarResult]
Download radar data.
- _download_radolan_data(url: str, start_date: datetime.datetime, end_date: datetime.datetime) collections.abc.Iterator[wetterdienst.provider.dwd.radar.api.RadarResult]
Download RADOLAN_CDC data for a given datetime.
- static _extract_radolan_data(archive_in_bytes: io.BytesIO) collections.abc.Iterator[wetterdienst.provider.dwd.radar.api.RadarResult]
Extract the RADOLAN_CDC data from the archive.
Road#
- class DwdRoadRequest
Bases:
wetterdienst.model.request.TimeseriesRequestRequest class for DWD road weather data.
- metadata
None
- _values
None
- _base_columns: ClassVar
(‘resolution’, ‘dataset’, ‘station_id’, ‘start_date’, ‘end_date’, ‘latitude’, ‘longitude’, ‘height’,…
- _endpoint
‘https://www.dwd.de/DE/leistungen/opendata/help/stationen/sws_stations_xls.xlsx?__blob=publicationFil…’
- _column_mapping: ClassVar
None
- _dtypes: ClassVar
None
- _all() polars.LazyFrame
EA#
Hydrology#
- class EAHydrologyRequest
Bases:
wetterdienst.model.request.TimeseriesRequestRequest class for Environment Agency hydrology data.
- metadata
None
- _values
None
- _url
‘https://environment.data.gov.uk/hydrology/id/stations.json’
- _parameter_core_name_map: ClassVar
None
- _all() polars.LazyFrame
Acquire all stations and filter for stations that have wanted resolution and parameter combinations.
Eaufrance#
Hubeau#
- class HubeauRequest
Bases:
wetterdienst.model.request.TimeseriesRequestRequest class for Eaufrance Hubeau data.
- metadata
None
- _values
None
- _endpoint
‘https://hubeau.eaufrance.fr/api/v2/hydrometrie/referentiel/stations?format=json&en_service=true’
- _all() polars.LazyFrame
:return:
ECCC#
Observation#
- class EcccObservationRequest
Bases:
wetterdienst.model.request.TimeseriesRequestDownload weather data from Environment and Climate Change Canada (ECCC).
https://www.canada.ca/en/environment-climate-change.html
https://www.canada.ca/en/services/environment/weather.html
Original code by Trevor James Smith. Thanks!
https://github.com/Zeitsperre/canada-climate-python
- _endpoint
‘https://api.weather.gc.ca’
- metadata
None
- _values
‘cast(…)’
- _timezone_mapping: ClassVar[dict]
None
- _all() polars.LazyFrame
Geosphere#
Observation#
- class GeosphereObservationRequest
Bases:
wetterdienst.model.request.TimeseriesRequestRequest class for geosphere observation data.
- metadata
None
- _values
None
- _endpoint
‘https://dataset.api.hub.geosphere.at/v1/station/historical/{dataset}/metadata/stations’
- _all() polars.LazyFrame
IMGW#
Hydrology#
- class ImgwHydrologyRequest
Bases:
wetterdienst.model.request.TimeseriesRequestRequest class for hydrological data from IMGW.
- metadata
None
- _values
None
- _endpoint
‘https://dane.imgw.pl/datastore/getfiledown/Arch/Telemetria/Hydro/kody_stacji.csv’
- _all() polars.LazyFrame
:return:
Meteorology#
- class ImgwMeteorologyRequest
Bases:
wetterdienst.model.request.TimeseriesRequestRequest for meteorological data from the Institute of Meteorology and Water Management.
- metadata
None
- _values
None
- _endpoint
‘https://dane.imgw.pl/datastore/getfiledown/Arch/Telemetria/Meteo/kody_stacji.csv’
- _all() polars.LazyFrame
Get all available stations.
Météo-France#
Synop#
- class MeteoFranceSynopRequest
Bases:
wetterdienst.model.request.TimeseriesRequestRequest class for Météo-France SYNOP data.
- metadata
None
- _values
None
- _all() polars.LazyFrame
Observation#
- class MeteoFranceObservationRequest
Bases:
wetterdienst.model.request.TimeseriesRequestRequest class for Météo-France observation data.
- metadata
None
- _values
None
- _all() polars.LazyFrame
- static _climate_stations(settings: wetterdienst.settings.Settings) polars.DataFrame
Build the station list from Météo-France’s canonical station metadata registry.
MeteoSwiss#
Observation#
- class MeteoswissObservationRequest
Bases:
wetterdienst.model.request.TimeseriesRequestRequest class for MeteoSwiss observation data.
- metadata
None
- _values
None
- _station_endpoint
‘https://data.geo.admin.ch/ch.meteoschweiz.ogd-smn/ogd-smn_meta_stations.csv’
- _all() polars.LazyFrame
MET Norway#
Frost#
- class MetnoFrostRequest
Bases:
wetterdienst.model.request.TimeseriesRequestRequest class for MET Norway Frost API.
- metadata
None
- _values
None
- _sources_url
‘https://frost.met.no/sources/v0.jsonld?types=SensorSystem&fields=id,name,validFrom,validTo,geometry,…’
- classmethod is_configured() bool
- classmethod is_valid(settings: wetterdienst.settings.Settings | None = None) bool
- __post_init__() None
- _all() polars.LazyFrame
NOAA#
GHCN#
- class NoaaGhcnRequest
Bases:
wetterdienst.model.request.TimeseriesRequestRequest class for NOAA GHCN data provider.
- metadata
None
- _values
None
- _all() polars.LazyFrame
- _create_metaindex_for_ghcn_hourly() polars.LazyFrame
- _create_metaindex_for_ghcn_daily() polars.LazyFrame
Acquire station listing for ghcn daily.
station listing
Variable
Columns
Type
Example
ID
1-11
Character
EI000003980
LATITUDE
13-20
Real
55.3717
LONGITUDE
22-30
Real
-7.3400
ELEVATION
32-37
Real
21.0
STATE
39-40
Character
NAME
42-71
Character
MALIN HEAD
GSN FLAG
73-75
Character
GSN
HCN/CRN FLAG
77-79
Character
WMO ID
81-85
Character
03980
inventory listing
Variable
Columns
Type
ID
1-11
CHARACTER
LATITUDE
13-20
REAL
LONGITUDE
22-30
REAL
ELEMENT
32-35
CHARACTER
FIRSTYEAR
37-40
INTEGER
LASTYEAR
42-45
INTEGER
National Weather Service#
Observation#
- class NwsObservationRequest
Bases:
wetterdienst.model.request.TimeseriesRequestRequest class for NWS observation.
- metadata
None
- _values
None
- _endpoint
‘https://madis-data.ncep.noaa.gov/madisPublic1/data/stations/METARTable.txt’
- __post_init__() None
Post-initialization of the request object.
- _all() polars.LazyFrame
WSV#
Observation#
- class WsvPegelRequest
Bases:
wetterdienst.model.request.TimeseriesRequestRequest class for WSV Pegelonline.
Pegelonline is a German river management facility and provider of river-based measurements for last 30 days.
- metadata
None
- _values
None
- _endpoint
None
- characteristic_values: ClassVar
None
- _base_columns: ClassVar
()
- _all() polars.LazyFrame
Get stations for WSV Pegelonline.
It involves reading the REST API, doing some transformations and adding characteristic values in extra columns if given for each station.