From fbb3cdf4d5a4753bda4457947fb53eb05fd9269e Mon Sep 17 00:00:00 2001 From: XANTRONIX Industrial Date: Sat, 1 Mar 2025 18:15:20 -0500 Subject: [PATCH] Do a better job of calculating surface pressure --- lib/xmet/rawins.py | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/lib/xmet/rawins.py b/lib/xmet/rawins.py index 552f59c..9f675d6 100644 --- a/lib/xmet/rawins.py +++ b/lib/xmet/rawins.py @@ -53,13 +53,6 @@ class RawinsObs(): day = day if day < 51 else day - 50 ) - def parse_surface_pressure(self, value: str): - if value[0:2] == '99': - return { - 'height': None, - 'pressure': float(value[2:5]) - } - def parse_temp_dewpoint(self, value: str): if value[2] == '/': return { @@ -161,8 +154,18 @@ class RawinsObs(): 'pressure': float(value[2:5]) } - def parse_sample_values(self, values: list[str], first: bool=False) -> RawinsSample: - if first: + def parse_surface_pressure(self, value: str): + if value[0:2] == '99': + return { + 'height': None, + 'pressure': float(value[2:5]) + } + + def parse_sample_values(self, values: list[str]) -> RawinsSample: + sample = RawinsSample() + + if values[0][0:2] == '99': + sample.surface = True hp = self.parse_surface_pressure(values[0]) else: hp = self.parse_height_pressure(values[0]) @@ -173,7 +176,6 @@ class RawinsObs(): td = self.parse_temp_dewpoint(values[1]) wind = self.parse_wind(values[2]) - sample = RawinsSample() sample.height = hp['height'] sample.pressure = hp['pressure'] sample.temp = td['temp'] if td is not None else None @@ -183,7 +185,7 @@ class RawinsObs(): return sample - def parse_ttaa(self): + def parse_ttaa(self) -> RawinsSounding: # # Return None if there is no height data up to 100mb. # @@ -196,15 +198,14 @@ class RawinsObs(): if self.values[1][0:3] == 'NIL': return None - sounding = RawinsSounding() - sounding.timestamp = self.parse_timestamp(self.values[0]) - sounding.station = int(self.values[1]) - - sample = self.parse_sample_values(self.values[2:5], True) + sample = self.parse_sample_values(self.values[2:5]) if sample is None: return + sounding = RawinsSounding() + sounding.timestamp = self.parse_timestamp(self.values[0]) + sounding.station = int(self.values[1]) sounding.samples.append(sample) for i in range(5, len(self.values), 3):