Skip to content

Commit

Permalink
Adjust DWD Mosmix and DMO kml reader to parse all parameters
Browse files Browse the repository at this point in the history
  • Loading branch information
gutzbenj committed May 19, 2024
1 parent 9f34002 commit 387ab98
Show file tree
Hide file tree
Showing 4 changed files with 9 additions and 34 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ Development
***********

- Fix `dropna` argument for DWD Mosmix and DMO
- Adjust DWD Mosmix and DMO kml reader to parse all parameters

0.84.0 (15.05.2024)
*******************
Expand Down
12 changes: 0 additions & 12 deletions wetterdienst/provider/dwd/dmo/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -1084,20 +1084,8 @@ def __init__(self, stations_result: StationsResult) -> None:
"""
super().__init__(stations_result=stations_result)

parameter_base = self.sr.stations._parameter_base
dataset_accessor = self.sr.stations._dataset_accessor

parameter_ = []
for parameter, dataset in self.sr.parameter:
if parameter == dataset:
parameter = [par.value for par in parameter_base[dataset_accessor][dataset_accessor]]
parameter_.extend(parameter)
else:
parameter_.append(parameter.value)

self.kml = KMLReader(
station_ids=self.sr.station_id.to_list(),
parameters=parameter_,
settings=self.sr.stations.settings,
)

Expand Down
18 changes: 8 additions & 10 deletions wetterdienst/provider/dwd/mosmix/access.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,8 @@
class KMLReader:
"""Read DWD XML Weather Forecast File of Type KML."""

def __init__(self, station_ids: list[str], parameters: list[str], settings: Settings) -> None:
def __init__(self, station_ids: list[str], settings: Settings) -> None:
self.station_ids = station_ids
self.parameters = parameters
self.metadata = {}
self.timesteps = []
self.nsmap = None
Expand Down Expand Up @@ -169,14 +168,13 @@ def get_forecasts(self) -> Iterator[pl.DataFrame]:

for measurement_item in measurement_list:
measurement_parameter = measurement_item.get(f"{{{self.nsmap['dwd']}}}elementName")
if measurement_parameter.lower() in self.parameters:
measurement_string = measurement_item.getchildren()[0].text
measurement_values = " ".join(measurement_string.split()).split(" ")
measurement_values = [None if i == "-" else float(i) for i in measurement_values]
assert len(measurement_values) == len( # noqa:S101
self.timesteps,
), "Number of time steps does not match number of measurement values"
data_dict[measurement_parameter.lower()] = measurement_values
measurement_string = measurement_item.getchildren()[0].text
measurement_values = " ".join(measurement_string.split()).split(" ")
measurement_values = [None if i == "-" else float(i) for i in measurement_values]
assert len(measurement_values) == len( # noqa:S101
self.timesteps,
), "Number of time steps does not match number of measurement values"
data_dict[measurement_parameter.lower()] = measurement_values

station_forecast.clear()
yield pl.DataFrame(data_dict)
12 changes: 0 additions & 12 deletions wetterdienst/provider/dwd/mosmix/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -1025,20 +1025,8 @@ def __init__(self, stations_result: StationsResult) -> None:
"""
super().__init__(stations_result=stations_result)

parameter_base = self.sr.stations._parameter_base
dataset_accessor = self.sr.stations._dataset_accessor

parameter_ = []
for parameter, dataset in self.sr.parameter:
if parameter == dataset:
parameter = [par.value for par in parameter_base[dataset_accessor][dataset_accessor]]
parameter_.extend(parameter)
else:
parameter_.append(parameter.value)

self.kml = KMLReader(
station_ids=self.sr.station_id.to_list(),
parameters=parameter_,
settings=self.sr.stations.settings,
)

Expand Down

0 comments on commit 387ab98

Please sign in to comment.