Machinery

Machinery#

DWD (German Weather Service)#

class KMLReader(station_ids: list[str], settings: wetterdienst.settings.Settings)

Read DWD XML Weather Forecast File of Type KML.

Initialization

Initialize KMLReader.

Args: station_ids: List of station IDs to read. settings: Settings object.

_filesystem_for(url: str) → wetterdienst.util.network.HTTPFileSystem | fsspec.implementations.cached.WholeFileCacheFileSystem

Pick how long this URL may be held: briefly for a mutable alias, long for a named run.

download(url: str) → io.BytesIO

Download kml file as bytes.

https://stackoverflow.com/questions/37573483/progress-bar-while-download-file-over-http-with-requests

fetch(url: str) → BinaryIO

Open the zipped mosmix KML as a streaming handle (decompressed lazily, not all at once).

_fetch(url: str) → BinaryIO

Download and open one run, whatever the cache currently holds for it.

read(url: str) → None

Download and read DWD XML Weather Forecast File of Type KML.

iter_items() → collections.abc.Iterator[xml.etree.ElementTree.Element]

Iterate over station forecasts, pruning parsed elements to bound memory.

get_metadata() → polars.DataFrame

Get metadata as DataFrame.

_store_station_forecasts() → None

Store station forecasts in self.data.

For mosmix we want the reader to only go once through the file and store all data (meaning all queried stations) in memory. This is to avoid multiple downloads/parses of the same file when users want to access data of multiple stations.

Returns: None

get_station_forecast(station_id: str) → polars.DataFrame

Get forecasts as DataFrame.