Parse data into objects

This commit is contained in:
XANTRONIX 2025-03-01 13:12:54 -05:00
parent 291b439f00
commit 8b03ed0c46

View file

@ -23,11 +23,16 @@ class RawinsSample():
self.wind_dir: float = None
self.wind_speed: float = None
class RawinsSounding():
def __init__(self):
self.timestamp: datetime.datetime = None
self.station: int = None
self.cur: RawinsSample = None
self.samples: list[RawinsSample] = list()
class RawinsObs():
def __init__(self, kind: str):
self.kind: str = kind
self.timestamp: datetime.datetime = None
self.surface: float = None
self.values: list[str] = list()
def read(self, value: str):
@ -147,26 +152,30 @@ class RawinsObs():
}
def parse_ttaa(self):
samples = list()
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])
for i in range(2, len(self.values), 3):
if len(self.values) <= i+2 or self.values[i][-1] == '=':
break
samples.append({
'pressure': self.parse_surface_pressure(self.values[i]),
'temp_dewp': self.parse_temp_dewpoint(self.values[i+1]),
'wind': self.parse_wind(self.values[i+2])
})
td = self.parse_temp_dewpoint(self.values[i+1])
wind = self.parse_wind(self.values[i+2])
if self.values[1][0:3] == 'NIL':
return None
sample = RawinsSample()
sample.pressure = self.parse_surface_pressure(self.values[i])
sample.temp = td['temp'] if td is not None else None
sample.dewpoint = td['dewpoint'] if td is not None else None
sample.wind_dir = wind['dir'] if wind is not None else None
sample.wind_speed = wind['speed'] if wind is not None else None
return {
'timestamp': self.parse_timestamp(self.values[0]),
'station': int(self.values[1]),
'samples': samples
}
sounding.samples.append(sample)
return sounding
class RawinsChunk():
def __init__(self,