diff --git a/modules/util/util.py b/modules/util/util.py index a40686c047cdec08ab636c5c70379172b0bcb6c9..5195622adf68d294703739e025c519575a9d5242 100644 --- a/modules/util/util.py +++ b/modules/util/util.py @@ -496,7 +496,7 @@ def get_cartopy_crs(satellite, domain): def get_grid_values(h5f, grid_name, j_c, i_c, half_width, num_j=None, num_i=None, scale_factor_name='scale_factor', add_offset_name='add_offset', - fill_value_name='_FillValue', range_name='actual_range', fill_value=None): + fill_value_name='_FillValue', valid_range_name='valid_range', actual_range_name='actual_range', fill_value=None): hfds = h5f[grid_name] attrs = hfds.attrs if attrs is None: @@ -522,9 +522,25 @@ def get_grid_values(h5f, grid_name, j_c, i_c, half_width, num_j=None, num_i=None grd_vals = hfds[j_l:j_r, i_l:i_r] - 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 not None: @@ -547,26 +563,13 @@ def get_grid_values(h5f, grid_name, j_c, i_c, half_width, num_j=None, num_i=None else: print('Attribute: '+add_offset_name+' not found for dataset: '+grid_name) - 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) - else: - print('Attribute: '+range_name+' not found for dataset: '+grid_name) - - 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) - else: - print('Attribute: '+fill_value_name+' not found for dataset: '+grid_name) return grd_vals