From df27d2675642cbeb98600a1a0303a2ae439955a6 Mon Sep 17 00:00:00 2001 From: tomrink <rink@ssec.wisc.edu> Date: Fri, 9 Sep 2022 14:43:51 -0500 Subject: [PATCH] snapshot... --- modules/util/util.py | 58 ++++++++++++++++++++++++-------------------- 1 file changed, 32 insertions(+), 26 deletions(-) diff --git a/modules/util/util.py b/modules/util/util.py index 99e4d912..7b07d4bf 100644 --- a/modules/util/util.py +++ b/modules/util/util.py @@ -286,7 +286,7 @@ def get_median(tile_2d): 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', fill_value=None, stride=None): + fill_value_name='_FillValue', valid_range_name='valid_range', actual_range_name='actual_range', fill_value=None, stride=None): hfds = h5f[grid_name] attrs = hfds.attrs @@ -298,44 +298,50 @@ def get_grid_values_all(h5f, grid_name, scale_factor_name='scale_factor', add_of else: grd_vals = hfds[::stride, ::stride] - if fill_value is not None: + if fill_value_name is not None: + attr = attrs.get(fill_value_name) + if attr is not None: + if np.isscalar(attr): + fill_value = attr + else: + fill_value = attr[0] + grd_vals = np.where(grd_vals == fill_value, np.nan, grd_vals) + elif fill_value is not None: grd_vals = np.where(grd_vals == fill_value, np.nan, grd_vals) + if valid_range_name is not None: + attr = attrs.get(valid_range_name) + if attr is not None: + 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) + if scale_factor_name is not None: attr = attrs.get(scale_factor_name) - if attr is None: - raise GenericException('Attribute: '+scale_factor_name+' not found for variable: '+grid_name) - if np.isscalar(attr): - scale_factor = attr - else: - scale_factor = attr[0] - grd_vals = grd_vals * scale_factor + if attr is not None: + if np.isscalar(attr): + scale_factor = attr + else: + scale_factor = attr[0] + grd_vals = grd_vals * scale_factor if add_offset_name is not None: attr = attrs.get(add_offset_name) - if attr is None: - raise GenericException('Attribute: '+add_offset_name+' not found for variable: '+grid_name) - if np.isscalar(attr): - add_offset = attr - else: - add_offset = attr[0] - grd_vals = grd_vals + add_offset + if attr is not None: + if np.isscalar(attr): + add_offset = attr + else: + add_offset = attr[0] + grd_vals = grd_vals + add_offset - if range_name is not None: - attr = attrs.get(range_name) + if actual_range_name is not None: + attr = attrs.get(actual_range_name) if attr is not None: 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 not None: - if np.isscalar(attr): - fill_value = attr - else: - fill_value = attr[0] - grd_vals = np.where(grd_vals == fill_value, np.nan, grd_vals) return grd_vals -- GitLab