Rename rawins.py to raob.py

This commit is contained in:
XANTRONIX 2025-03-02 01:02:37 -05:00
parent af6d2809b5
commit 368846cb60

View file

@ -10,10 +10,10 @@ from xmet.sounding import Sounding, SoundingSample
CHUNK_SEP = "\x01"
CHUNK_STRIP_CHARS = "\x01\x03\x0a\x20"
class RawinsReaderException(Exception):
class RAOBReaderException(Exception):
...
class RawinsSample():
class RAOBSample():
def __init__(self):
self.surface: bool = False
self.height: float = None
@ -23,14 +23,14 @@ class RawinsSample():
self.wind_dir: float = None
self.wind_speed: float = None
class RawinsSounding():
class RAOBSounding():
def __init__(self):
self.timestamp: datetime.datetime = None
self.station: int = None
self.cur: RawinsSample = None
self.samples: list[RawinsSample] = list()
self.cur: RAOBSample = None
self.samples: list[RAOBSample] = list()
class RawinsObs():
class RAOBObs():
def __init__(self, kind: str):
self.kind: str = kind
self.values: list[str] = list()
@ -197,8 +197,8 @@ class RawinsObs():
'pressure': float(pressure)
}
def parse_sample_values(self, values: list[str]) -> RawinsSample:
sample = RawinsSample()
def parse_sample_values(self, values: list[str]) -> RAOBSample:
sample = RAOBSample()
if values[0][0:2] == '99':
sample.surface = True
@ -221,7 +221,7 @@ class RawinsObs():
return sample
def parse_ttaa(self) -> RawinsSounding:
def parse_ttaa(self) -> RAOBSounding:
#
# Return None if there is no height data up to 100mb.
#
@ -239,7 +239,7 @@ class RawinsObs():
if sample is None:
return
sounding = RawinsSounding()
sounding = RAOBSounding()
sounding.timestamp = self.parse_timestamp(self.values[0])
sounding.station = int(self.values[1])
sounding.samples.append(sample)
@ -257,7 +257,7 @@ class RawinsObs():
return sounding
class RawinsChunk():
class RAOBChunk():
def __init__(self,
wfo: str,
product: str,
@ -280,7 +280,7 @@ class RawinsChunk():
if obs is not None:
yield obs
obs = RawinsObs(value)
obs = RAOBObs(value)
elif obs is not None:
obs.read(value)
@ -297,7 +297,7 @@ class RawinsChunk():
yield sounding
class RawinsReader():
class RAOBReader():
"""
A reader for the global `Current.rawins` file provided by UCAR:
@ -308,7 +308,7 @@ class RawinsReader():
self.soundings = dict()
self.current = Sounding()
def parse_chunk(self, text: str) -> RawinsChunk:
def parse_chunk(self, text: str) -> RAOBChunk:
meta = {
'wfo': None, # NWS forecast office
'product': None # NWS product code
@ -330,7 +330,7 @@ class RawinsReader():
match = RE_ID.match(lines[0])
if match is None:
raise RawinsReaderException(f"First chunk line not 3-digit identifier ({lines[0]})")
raise RAOBReaderException(f"First chunk line not 3-digit identifier ({lines[0]})")
else:
line_index += 1
@ -342,7 +342,7 @@ class RawinsReader():
match = RE_ISSUANCE.match(lines[1])
if match is None:
raise RawinsReaderException('Second chunk line not product issuance')
raise RAOBReaderException('Second chunk line not product issuance')
else:
meta['wfo'] = match['wfo']
line_index += 1
@ -367,7 +367,7 @@ class RawinsReader():
for line in lines[line_index:]:
values.extend(re.split(r'\s+', line))
return RawinsChunk(meta['wfo'],
return RAOBChunk(meta['wfo'],
meta['product'],
values)