Do a better job of calculating surface pressure
This commit is contained in:
parent
9dcebc58b8
commit
fbb3cdf4d5
1 changed files with 17 additions and 16 deletions
|
@ -53,13 +53,6 @@ class RawinsObs():
|
||||||
day = day if day < 51 else day - 50
|
day = day if day < 51 else day - 50
|
||||||
)
|
)
|
||||||
|
|
||||||
def parse_surface_pressure(self, value: str):
|
|
||||||
if value[0:2] == '99':
|
|
||||||
return {
|
|
||||||
'height': None,
|
|
||||||
'pressure': float(value[2:5])
|
|
||||||
}
|
|
||||||
|
|
||||||
def parse_temp_dewpoint(self, value: str):
|
def parse_temp_dewpoint(self, value: str):
|
||||||
if value[2] == '/':
|
if value[2] == '/':
|
||||||
return {
|
return {
|
||||||
|
@ -161,8 +154,18 @@ class RawinsObs():
|
||||||
'pressure': float(value[2:5])
|
'pressure': float(value[2:5])
|
||||||
}
|
}
|
||||||
|
|
||||||
def parse_sample_values(self, values: list[str], first: bool=False) -> RawinsSample:
|
def parse_surface_pressure(self, value: str):
|
||||||
if first:
|
if value[0:2] == '99':
|
||||||
|
return {
|
||||||
|
'height': None,
|
||||||
|
'pressure': float(value[2:5])
|
||||||
|
}
|
||||||
|
|
||||||
|
def parse_sample_values(self, values: list[str]) -> RawinsSample:
|
||||||
|
sample = RawinsSample()
|
||||||
|
|
||||||
|
if values[0][0:2] == '99':
|
||||||
|
sample.surface = True
|
||||||
hp = self.parse_surface_pressure(values[0])
|
hp = self.parse_surface_pressure(values[0])
|
||||||
else:
|
else:
|
||||||
hp = self.parse_height_pressure(values[0])
|
hp = self.parse_height_pressure(values[0])
|
||||||
|
@ -173,7 +176,6 @@ class RawinsObs():
|
||||||
td = self.parse_temp_dewpoint(values[1])
|
td = self.parse_temp_dewpoint(values[1])
|
||||||
wind = self.parse_wind(values[2])
|
wind = self.parse_wind(values[2])
|
||||||
|
|
||||||
sample = RawinsSample()
|
|
||||||
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
|
||||||
|
@ -183,7 +185,7 @@ class RawinsObs():
|
||||||
|
|
||||||
return sample
|
return sample
|
||||||
|
|
||||||
def parse_ttaa(self):
|
def parse_ttaa(self) -> RawinsSounding:
|
||||||
#
|
#
|
||||||
# Return None if there is no height data up to 100mb.
|
# Return None if there is no height data up to 100mb.
|
||||||
#
|
#
|
||||||
|
@ -196,15 +198,14 @@ class RawinsObs():
|
||||||
if self.values[1][0:3] == 'NIL':
|
if self.values[1][0:3] == 'NIL':
|
||||||
return None
|
return None
|
||||||
|
|
||||||
sounding = RawinsSounding()
|
sample = self.parse_sample_values(self.values[2:5])
|
||||||
sounding.timestamp = self.parse_timestamp(self.values[0])
|
|
||||||
sounding.station = int(self.values[1])
|
|
||||||
|
|
||||||
sample = self.parse_sample_values(self.values[2:5], True)
|
|
||||||
|
|
||||||
if sample is None:
|
if sample is None:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
sounding = RawinsSounding()
|
||||||
|
sounding.timestamp = self.parse_timestamp(self.values[0])
|
||||||
|
sounding.station = int(self.values[1])
|
||||||
sounding.samples.append(sample)
|
sounding.samples.append(sample)
|
||||||
|
|
||||||
for i in range(5, len(self.values), 3):
|
for i in range(5, len(self.values), 3):
|
||||||
|
|
Loading…
Add table
Reference in a new issue