Do a better job of calculating surface pressure

This commit is contained in:
XANTRONIX 2025-03-01 18:15:20 -05:00
parent 9dcebc58b8
commit fbb3cdf4d5

View file

@ -53,13 +53,6 @@ class RawinsObs():
day = day if day < 51 else day - 50 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): def parse_temp_dewpoint(self, value: str):
if value[2] == '/': if value[2] == '/':
return { return {
@ -161,8 +154,18 @@ class RawinsObs():
'pressure': float(value[2:5]) 'pressure': float(value[2:5])
} }
def parse_sample_values(self, values: list[str], first: bool=False) -> RawinsSample: def parse_surface_pressure(self, value: str):
if first: 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]) hp = self.parse_surface_pressure(values[0])
else: else:
hp = self.parse_height_pressure(values[0]) hp = self.parse_height_pressure(values[0])
@ -173,7 +176,6 @@ class RawinsObs():
td = self.parse_temp_dewpoint(values[1]) td = self.parse_temp_dewpoint(values[1])
wind = self.parse_wind(values[2]) wind = self.parse_wind(values[2])
sample = RawinsSample()
sample.height = hp['height'] sample.height = hp['height']
sample.pressure = hp['pressure'] sample.pressure = hp['pressure']
sample.temp = td['temp'] if td is not None else None sample.temp = td['temp'] if td is not None else None
@ -183,7 +185,7 @@ class RawinsObs():
return sample return sample
def parse_ttaa(self): def parse_ttaa(self) -> RawinsSounding:
# #
# Return None if there is no height data up to 100mb. # Return None if there is no height data up to 100mb.
# #
@ -196,15 +198,14 @@ class RawinsObs():
if self.values[1][0:3] == 'NIL': if self.values[1][0:3] == 'NIL':
return None return None
sounding = RawinsSounding() sample = self.parse_sample_values(self.values[2:5])
sounding.timestamp = self.parse_timestamp(self.values[0])
sounding.station = int(self.values[1])
sample = self.parse_sample_values(self.values[2:5], True)
if sample is None: if sample is None:
return return
sounding = RawinsSounding()
sounding.timestamp = self.parse_timestamp(self.values[0])
sounding.station = int(self.values[1])
sounding.samples.append(sample) sounding.samples.append(sample)
for i in range(5, len(self.values), 3): for i in range(5, len(self.values), 3):