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