Replace RAOBSample with SoundingSample

This commit is contained in:
XANTRONIX 2025-03-02 11:35:28 -05:00
parent e2f27b1470
commit 60bfe3fa09

View file

@ -13,27 +13,11 @@ CHUNK_STRIP_CHARS = "\x01\x03\x0a\x20"
class RAOBReaderException(Exception): class RAOBReaderException(Exception):
... ...
class RAOBSample():
__slots__ = (
'surface', 'height', 'pressure', 'temp', 'dewpoint',
'wind_dir', 'wind_speed'
)
def __init__(self):
self.surface: bool = False
self.height: float = None
self.pressure: float = None
self.temp: float = None
self.dewpoint: float = None
self.wind_dir: float = None
self.wind_speed: float = None
class RAOBSounding(): class RAOBSounding():
def __init__(self): def __init__(self):
self.timestamp: datetime.datetime = None self.timestamp: datetime.datetime = None
self.station: int = None self.station: int = None
self.cur: RAOBSample = None self.samples: list[SoundingSample] = list()
self.samples: list[RAOBSample] = list()
class RAOBObs(): class RAOBObs():
def __init__(self, kind: str): def __init__(self, kind: str):
@ -202,11 +186,11 @@ class RAOBObs():
'pressure': float(pressure) 'pressure': float(pressure)
} }
def parse_sample_tokens(self, tokens: list[str]) -> RAOBSample: def parse_sample_tokens(self, tokens: list[str]) -> SoundingSample:
sample = RAOBSample() sample = SoundingSample()
if tokens[0][0:2] == '99': if tokens[0][0:2] == '99':
sample.surface = True sample.elapsed = 0
hp = self.parse_surface_pressure(tokens[0]) hp = self.parse_surface_pressure(tokens[0])
else: else:
hp = self.parse_height_pressure(tokens[0]) hp = self.parse_height_pressure(tokens[0])
@ -219,11 +203,15 @@ class RAOBObs():
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
sample.dewpoint = td['dewpoint'] 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_dir = wind['dir'] if wind is not None else None
sample.wind_speed = wind['speed'] if wind is not None else None sample.wind_speed = wind['speed'] if wind is not None else None
sample.pressure_qa = ' '
sample.height_qa = ' '
sample.temp_qa = ' '
return sample return sample
def parse_ttaa(self) -> RAOBSounding: def parse_ttaa(self) -> RAOBSounding:
@ -311,7 +299,6 @@ class RAOBReader():
def __init__(self, fh: io.TextIOBase): def __init__(self, fh: io.TextIOBase):
self.fh = fh self.fh = fh
self.soundings = dict() self.soundings = dict()
self.current = Sounding()
def parse_chunk(self, text: str) -> RAOBChunk: def parse_chunk(self, text: str) -> RAOBChunk:
meta = { meta = {