diff --git a/lib/xmet/raob.py b/lib/xmet/raob.py index 0fd2384..6679ed1 100644 --- a/lib/xmet/raob.py +++ b/lib/xmet/raob.py @@ -60,19 +60,39 @@ class RAOBSounding(): return sounding - def record(self, sample: SoundingSample): - dest = SoundingSample() - dest.pressure_qa = ' ' - dest.height_qa = ' ' - dest.temp_qa = ' ' - dest.pressure = sample.pressure - dest.height = sample.height - dest.temp = sample.temp - dest.dewpoint = sample.dewpoint - dest.wind_speed = sample.wind_speed - dest.wind_dir = sample.wind_dir + def sample(self, pressure: float): + if pressure in self.samples: + return self.samples[pressure] - self.samples[sample.pressure] = dest + sample = SoundingSample() + sample.pressure = pressure + sample.pressure_qa = ' ' + sample.height_qa = ' ' + sample.temp_qa = ' ' + + self.samples[pressure] = sample + + return sample + + def record_height(self, pressure: float, height: float): + sample = self.sample(pressure) + sample.height = height + + def record_temp_dewpoint(self, + pressure: float, + temp: float, + dewpoint: float): + sample = self.sample(pressure) + sample.temp = temp + sample.dewpoint = dewpoint + + def record_wind_speed_dir(self, + pressure: float, + wind_speed: float, + wind_dir: float): + sample = self.sample(pressure) + sample.wind_speed = wind_speed + sample.wind_dir = wind_dir class RAOBObs(): DATA_SOURCE = 'UCAR' @@ -480,7 +500,17 @@ class RAOBReader(): sounding = self.sounding(station, timestamp) for sample in samples: - sounding.record(sample) + pressure = sample.pressure + + sounding.record_height(pressure, sample.height) + + sounding.record_temp_dewpoint(pressure, + sample.temp, + sample.dewpoint) + + sounding.record_wind_speed_dir(pressure, + sample.wind_speed, + sample.wind_dir) for key in self.soundings: yield self.soundings[key].finish()