diff --git a/lib/xmet/hodograph.py b/lib/xmet/hodograph.py index f713ce6..ecd1e75 100644 --- a/lib/xmet/hodograph.py +++ b/lib/xmet/hodograph.py @@ -168,20 +168,13 @@ class Hodograph(): return (0.4, 0.4, 1.0) - def each_significant_sample(self, sounding: Sounding): - for sample in sounding.hodograph_samples(): - if sample.wind_speed is None or sample.wind_dir is None: - continue - - yield sample - def find_extents(self, sounding: Sounding): min_x, min_y = None, None max_x, max_y = None, None first = True - for sample in self.each_significant_sample(sounding): + for sample in sounding.hodograph_samples(): sx, sy = self.sample_to_screen(knots(sample.wind_speed), sample.wind_dir) @@ -225,7 +218,7 @@ class Hodograph(): min_x, min_y = self.extents['min'] max_x, max_y = self.extents['max'] - for sample in self.each_significant_sample(sounding): + for sample in sounding.hodograph_samples(): color = self.color(sample.height) if color is None: diff --git a/lib/xmet/sounding.py b/lib/xmet/sounding.py index eae479f..cd384b3 100644 --- a/lib/xmet/sounding.py +++ b/lib/xmet/sounding.py @@ -286,7 +286,16 @@ class Sounding(DatabaseTable): return wind_speed_dir(shear_u / levels, shear_v / levels) def hodograph_samples(self) -> list[SoundingSample]: - samples = filter(lambda s: s.height is not None, self.samples) + def test(s: SoundingSample): + if s.height is None: + return False + + if s.wind_speed is None or s.wind_dir is None: + return False + + return True + + samples = filter(test, self.samples) return sorted(samples, key=lambda s: s.height)