Parse data into objects
This commit is contained in:
parent
291b439f00
commit
8b03ed0c46
1 changed files with 26 additions and 17 deletions
|
@ -23,11 +23,16 @@ 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.surface: float = None
|
|
||||||
self.values: list[str] = list()
|
self.values: list[str] = list()
|
||||||
|
|
||||||
def read(self, value: str):
|
def read(self, value: str):
|
||||||
|
@ -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,
|
||||||
|
|
Loading…
Add table
Reference in a new issue