diff --git a/lib/xmet/raob.py b/lib/xmet/raob.py index 6b7a955..8e7ef6b 100644 --- a/lib/xmet/raob.py +++ b/lib/xmet/raob.py @@ -572,16 +572,13 @@ class RAOBReader(): self.soundings = dict() def sounding(self, station: str, timestamp: str) -> RAOBSounding: - key = station + '.' + timestamp + if station not in self.soundings: + self.soundings[station] = dict() - if key in self.soundings: - return self.soundings[key] + if timestamp not in self.soundings[station]: + self.soundings[station][timestamp] = RAOBSounding(station, timestamp) - sounding = RAOBSounding(station, timestamp) - - self.soundings[key] = sounding - - return sounding + return self.soundings[station][timestamp] def parse_chunk(self, text: str) -> RAOBChunk: meta = { @@ -667,12 +664,17 @@ class RAOBReader(): data.get('wind_speed'), data.get('wind_dir')) - for key in self.soundings: - sounding = self.soundings[key].finish() + def each_sounding_by_station(self, station: str): + for timestamp in self.soundings[station]: + sounding = self.soundings[station][timestamp].finish() if sounding is not None: yield sounding + def each_sounding(self): + for station in self.soundings: + yield from self.each_sounding_by_station(station) + @staticmethod def each_sounding_from_fh(fh: io.TextIOBase): reader = RAOBReader(fh)