From 6369ba88cd418f234856a1947e98baf4d6707204 Mon Sep 17 00:00:00 2001
From: tomrink <rink@ssec.wisc.edu>
Date: Fri, 6 Nov 2020 11:07:55 -0600
Subject: [PATCH] snapshot...

---
 modules/util/gfs_reader.py | 68 ++++++++++++++++++++++++--------------
 1 file changed, 44 insertions(+), 24 deletions(-)

diff --git a/modules/util/gfs_reader.py b/modules/util/gfs_reader.py
index 9d33580f..4b733b3f 100644
--- a/modules/util/gfs_reader.py
+++ b/modules/util/gfs_reader.py
@@ -76,21 +76,31 @@ def get_bounding_gfs_files(timestamp):
     return fList[iL], ftimes[iL], fList[iR], ftimes[iR]
 
 
-def get_horz_layer(xr_dataset, fld_name, press, lon_lo, lon_hi, lat_lo, lat_hi):
+def get_horz_layer(xr_dataset, fld_name, press, lon_range=None, lat_range=None):
     plevs = xr_dataset['pressure levels']
+    p_idx = value_to_index(plevs.values, press)
     fld = xr_dataset[fld_name]
 
-    if lon360:
-        if lon_lo < 0:
-            lon_lo += 360
-        if lon_hi < 0:
-            lon_hi += 360
-
-    x_lo = value_to_index(lon_coords, lon_lo)
-    x_hi = value_to_index(lon_coords, lon_hi)
-    y_lo = value_to_index(lat_coords, lat_lo)
-    y_hi = value_to_index(lat_coords, lat_hi)
-    p_idx = value_to_index(plevs.values, press)
+    x_lo = 0
+    x_hi = xr_dataset.fakeDim2.shape[0]
+    y_lo = 0
+    y_hi = xr_dataset.fakeDim1.shape[0]
+
+    if lon_range is not None:
+        lon_lo = lon_range[0]
+        lon_hi = lon_range[1]
+        lat_lo = lat_range[0]
+        lat_hi = lat_range[1]
+        if lon360:
+            if lon_lo < 0:
+                lon_lo += 360
+            if lon_hi < 0:
+                lon_hi += 360
+
+        x_lo = value_to_index(lon_coords, lon_lo)
+        x_hi = value_to_index(lon_coords, lon_hi)
+        y_lo = value_to_index(lat_coords, lat_lo)
+        y_hi = value_to_index(lat_coords, lat_hi)
 
     sub_fld = fld[y_lo:y_hi, x_lo:x_hi, p_idx]
     sub_fld = sub_fld.expand_dims('channel')
@@ -100,21 +110,31 @@ def get_horz_layer(xr_dataset, fld_name, press, lon_lo, lon_hi, lat_lo, lat_hi):
     return sub_fld
 
 
-def get_horz_layer_s(xr_dataset, fld_names, press, lon_lo=None, lon_hi=None, lat_lo=None, lat_hi=None):
+def get_horz_layer_s(xr_dataset, fld_names, press, lon_range=None, lat_range=None):
     plevs = xr_dataset['pressure levels']
-
-    if lon360:
-        if lon_lo < 0:
-            lon_lo += 360
-        if lon_hi < 0:
-            lon_hi += 360
-
-    x_lo = value_to_index(lon_coords, lon_lo)
-    x_hi = value_to_index(lon_coords, lon_hi)
-    y_lo = value_to_index(lat_coords, lat_lo)
-    y_hi = value_to_index(lat_coords, lat_hi)
     p_idx = value_to_index(plevs.values, press)
 
+    x_lo = 0
+    x_hi = xr_dataset.fakeDim2.shape[0]
+    y_lo = 0
+    y_hi = xr_dataset.fakeDim1.shape[0]
+
+    if lon_range is not None:
+        lon_lo = lon_range[0]
+        lon_hi = lon_range[1]
+        lat_lo = lat_range[0]
+        lat_hi = lat_range[1]
+        if lon360:
+            if lon_lo < 0:
+                lon_lo += 360
+            if lon_hi < 0:
+                lon_hi += 360
+
+        x_lo = value_to_index(lon_coords, lon_lo)
+        x_hi = value_to_index(lon_coords, lon_hi)
+        y_lo = value_to_index(lat_coords, lat_lo)
+        y_hi = value_to_index(lat_coords, lat_hi)
+
     sub_fld_s = []
     for fld_name in fld_names:
         fld = xr_dataset[fld_name]
-- 
GitLab