From 221e42941ccbdf2934155ab2931744c7ee72677d Mon Sep 17 00:00:00 2001 From: tomrink <rink@ssec.wisc.edu> Date: Wed, 28 Jul 2021 16:35:43 -0500 Subject: [PATCH] new method 'check_oblique', improved get_grid_values_all --- modules/util/util.py | 46 +++++++++++++++++++++++++++++++++++--------- 1 file changed, 37 insertions(+), 9 deletions(-) diff --git a/modules/util/util.py b/modules/util/util.py index 618c6676..5f0f80e0 100644 --- a/modules/util/util.py +++ b/modules/util/util.py @@ -205,24 +205,52 @@ def is_night(solzen, test_angle=100.0): return True -def get_grid_values_all(h5f, grid_name, scale_factor_name='scale_factor', add_offset_name='add_offset'): +def check_oblique(satzen, test_angle=70.0): + satzen = satzen.flatten() + satzen = satzen[np.invert(np.isnan(satzen))] + if len(satzen) == 0 or np.sum(satzen >= test_angle) < len(satzen): + return False + else: + return True + + +def get_grid_values_all(h5f, grid_name, scale_factor_name='scale_factor', add_offset_name='add_offset', + fill_value_name='_FillValue', range_name='actual_range'): hfds = h5f[grid_name] attrs = hfds.attrs - grd_vals = hfds[:,:] - grd_vals = np.where(grd_vals == -999, np.nan, grd_vals) - grd_vals = np.where(grd_vals == -127, np.nan, grd_vals) - grd_vals = np.where(grd_vals == -32768, np.nan, grd_vals) - if attrs is None: - return grd_vals + raise GenericException('No attributes object for: '+grid_name) + + grd_vals = hfds[:,] if scale_factor_name is not None: - scale_factor = attrs.get(scale_factor_name)[0] + attr = attrs.get(scale_factor_name) + if attr is None: + raise GenericException('Attribute: '+scale_factor_name+' not found for variable: '+grid_name) + scale_factor = attr[0] grd_vals = grd_vals * scale_factor if add_offset_name is not None: - add_offset = attrs.get(add_offset_name)[0] + attr = attrs.get(add_offset_name) + if attr is None: + raise GenericException('Attribute: '+add_offset_name+' not found for variable: '+grid_name) + add_offset = attr[0] grd_vals = grd_vals + add_offset + if range_name is not None: + attr = attrs.get(range_name) + if attr is None: + raise GenericException('Attribute: '+range_name+' not found for variable: '+grid_name) + low = attr[0] + high = attr[1] + grd_vals = np.where(grd_vals < low, np.nan, grd_vals) + grd_vals = np.where(grd_vals > high, np.nan, grd_vals) + elif fill_value_name is not None: + attr = attrs.get(fill_value_name) + if attr is None: + raise GenericException('Attribute: '+fill_value_name+' not found for variable: '+grid_name) + fill_value = attr[0] + grd_vals = np.where(grd_vals == fill_value, np.nan, grd_vals) + return grd_vals -- GitLab