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