Start to parse individual values
This commit is contained in:
parent
908f1f7024
commit
bfc178481a
1 changed files with 51 additions and 7 deletions
|
@ -20,15 +20,59 @@ class RawinsSample():
|
|||
self.pressure: float = None
|
||||
self.temp: float = None
|
||||
self.dewpoint: float = None
|
||||
self.wind_dir: float = None
|
||||
self.wind_speed: float = None
|
||||
|
||||
class RawinsObs():
|
||||
def __init__(self, kind: str):
|
||||
self.kind: str = kind
|
||||
self.timestamp: datetime.datetime = None
|
||||
self.height: float = None
|
||||
self.surface: float = None
|
||||
self.values: list[str] = list()
|
||||
|
||||
def read(self, value: str):
|
||||
self.values.append(value)
|
||||
|
||||
HEIGHTS = {
|
||||
'TTAA': lambda n: n * 100
|
||||
}
|
||||
|
||||
def parse_timestamp(self, value: str):
|
||||
day = int(value[0:2]) - 50
|
||||
hour = int(value[2:4])
|
||||
|
||||
now = datetime.datetime.now(datetime.UTC)
|
||||
|
||||
self.timestamp = datetime.datetime(
|
||||
year = now.year,
|
||||
month = now.month,
|
||||
day = day
|
||||
)
|
||||
|
||||
self.height = self.HEIGHTS[self.kind](int(value[4]))
|
||||
|
||||
def parse_surface(self, value: str):
|
||||
if value[0:2] == '99':
|
||||
self.surface = float(value[2:5])
|
||||
|
||||
def parse_temp_dewpoint(self, value: str):
|
||||
tenths = int(value[2])
|
||||
sign = -1 if tenths % 1 == 0 else 1
|
||||
|
||||
temp = sign * 0.1 * float(value[0:3])
|
||||
dda = int(value[3:5])
|
||||
dd = dda * 0.1 if dda <= 50 else dda - 50
|
||||
dewpoint = temp - dd
|
||||
|
||||
return {
|
||||
'temp': temp,
|
||||
'dewpoint': dewpoint
|
||||
}
|
||||
|
||||
def parse_ttaa(self):
|
||||
pass
|
||||
|
||||
class RawinsChunk():
|
||||
def __init__(self,
|
||||
wfo: str,
|
||||
|
|
Loading…
Add table
Reference in a new issue