API#

DWD#

DMO#

class DwdDmoRequest

Bases: wetterdienst.model.request.TimeseriesRequest

Implementation 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.TimeseriesRequest

Request 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.TimeseriesRequest

Request 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_date and end_date attributes 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.df when read_bufr is enabled.

No-op unless the request is for BUFR data and Settings.read_bufr is set. Requires the optional eccodes + pdbufr dependencies; a missing dependency or a parse error is logged and leaves result.df as None rather 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.TimeseriesRequest

Request 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.TimeseriesRequest

Request 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.TimeseriesRequest

Request 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.TimeseriesRequest

Download 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.TimeseriesRequest

Request 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.TimeseriesRequest

Request 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.TimeseriesRequest

Request 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.TimeseriesRequest

Request class for Météo-France SYNOP data.

metadata

None

_values

None

_all() polars.LazyFrame

Observation#

class MeteoFranceObservationRequest

Bases: wetterdienst.model.request.TimeseriesRequest

Request 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.TimeseriesRequest

Request 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.TimeseriesRequest

Request 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.TimeseriesRequest

Request 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.TimeseriesRequest

Request 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.TimeseriesRequest

Request 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.