From 677aebd6a3f7b872de90bda777ae9f2115edb706 Mon Sep 17 00:00:00 2001
From: rink <rink@ssec.wisc.edu>
Date: Mon, 12 Oct 2020 18:50:17 -0500
Subject: [PATCH] snapshot..

---
 modules/aeolus/aeolus_amv.py | 42 ++++++++++++++++++++++++++++++------
 1 file changed, 35 insertions(+), 7 deletions(-)

diff --git a/modules/aeolus/aeolus_amv.py b/modules/aeolus/aeolus_amv.py
index c496c8ad..923f02ee 100644
--- a/modules/aeolus/aeolus_amv.py
+++ b/modules/aeolus/aeolus_amv.py
@@ -36,6 +36,11 @@ class AMVFiles:
             dto_end = dto + datetime.timedelta(minutes=file_time_span)
             self.ftimes.append((dto_start.timestamp(), dto_end.timestamp()))
 
+        self.elem_name = None
+        self.line_name = None
+        self.lat_name = None
+        self.lon_name = None
+
     def get_datetime(self, pathname):
         return None
 
@@ -96,6 +101,11 @@ class CarrStereo(AMVFiles):
     def __init__(self, files_path, file_time_span, band='14'):
         super().__init__(files_path, file_time_span, 'tdw_qc_GOES*'+'ch_'+band+'.nc', band)
 
+        self.elem_name = 'Element'
+        self.line_name = 'Line'
+        self.lon_name = 'Lon'
+        self.lat_name = 'Lat'
+
     def get_navigation(self):
         return GEOSNavigation(sub_lon=-137.0)
 
@@ -108,7 +118,7 @@ class CarrStereo(AMVFiles):
         return dto
 
     def get_parameters(self):
-        params = ['Lat', 'Lon', 'Element', 'Line', 'V_3D', 'H_3D', 'pres', 'Fcst_Spd', 'Fcst_Dir', 'SatZen',
+        params = ['V_3D', 'H_3D', 'pres', 'Fcst_Spd', 'Fcst_Dir', 'SatZen',
                   'InversionFlag', 'CloudPhase', 'CloudType']
 
         return params
@@ -378,6 +388,7 @@ sub_lon = -137.0  # GOES-17
 # return dict: aeolus time -> tuple (amv_lon, amv_lat, amv_pres, amv_spd, amv_dir)
 def match_amvs_to_aeolus(aeolus_dict, amv_files_path, amv_source='OPS', band='14', amv_files=None):
     nav = amv_files.get_navigation()
+    amv_params = amv_files.get_parameters()
     match_dict = {}
 
     keys = list(aeolus_dict.keys())
@@ -402,14 +413,28 @@ def match_amvs_to_aeolus(aeolus_dict, amv_files_path, amv_source='OPS', band='14
         if f_idx != last_f_idx:
             last_f_idx = f_idx
             ds = Dataset(fname)
+            # amv_lons = ds[amv_lon_name][:]
+            # amv_lats = ds[amv_lat_name][:]
+            # amv_spd = ds[amv_spd_name][:]
+            # amv_dir = ds[amv_dir_name][:]
+            # amv_pres = ds[amv_press_name][:]
+            # cc = ds[amv_files.elem_name][:]
+            # ll = ds[amv_files.line_name][:]
+
             amv_lons = ds[amv_lon_name][:]
             amv_lats = ds[amv_lat_name][:]
-            amv_spd = ds[amv_spd_name][:]
-            amv_dir = ds[amv_dir_name][:]
-            amv_pres = ds[amv_press_name][:]
-            cc = ds[amv_elem_name][:]
-            ll = ds[amv_line_name][:]
+            cc = ds[amv_files.elem_name][:]
+            ll = ds[amv_files.line_name][:]
             # cc, ll = nav.earth_to_lc_s(amv_lons, amv_lats)
+
+            param_s = []
+            param_s.append(amv_lons)
+            param_s.append(amv_lats)
+            param_s.append(cc)
+            param_s.append(ll)
+            for param in amv_params:
+                param_s.append(ds[param][:])
+
             ds.close()
 
         in_cc = np.logical_and(cc > c_rng[0], cc < c_rng[1])
@@ -420,7 +445,10 @@ def match_amvs_to_aeolus(aeolus_dict, amv_files_path, amv_source='OPS', band='14
         if num_amvs == 0:
             continue
         dist = haversine_np(lon, lat, amv_lons[in_box], amv_lats[in_box])
-        match_dict[key] = (amv_lons[in_box], amv_lats[in_box], amv_pres[in_box], amv_spd[in_box], amv_dir[in_box], dist)
+        params_nd = np.vstack(param_s)
+        params_nd = params_nd[:, in_box]
+        print(params_nd.shape)
+        #match_dict[key] = (amv_lons[in_box], amv_lats[in_box], amv_pres[in_box], amv_spd[in_box], amv_dir[in_box], dist)
 
     return match_dict
 
-- 
GitLab