Skip to content
Snippets Groups Projects
Commit 383e547d authored by rink's avatar rink
Browse files

snapshot..

parent e7c7cd65
Branches
No related tags found
No related merge requests found
......@@ -106,6 +106,19 @@ class CarrStereo(AMVFiles):
self.lon_name = 'Lon'
self.lat_name = 'Lat'
self.out_params = ['Lon', 'Lat', 'Element', 'Line', 'V_3D_u', 'V_3D_v', 'pres', 'Fcst_Spd', 'Fcst_Dir', 'SatZen',
'InversionFlag', 'CloudPhase', 'CloudType']
self.params = ['V_3D', 'H_3D', 'pres', 'Fcst_Spd', 'Fcst_Dir', 'SatZen',
'InversionFlag', 'CloudPhase', 'CloudType']
self.meta_dict = {'H_3D': ('m', 'f4'), 'pres': ('hPa', 'f4'), 'Fcst_Spd': ('m s-1', 'f4'),
'Fcst_Dir': ('degree', 'f4'),
'SatZen': ('degree', 'f4'), 'InversionFlag': (None, 'u1'),
'CloudPhase': (None, 'u1'), 'CloudType': (None, 'u1'),
'V_3D_u': ('m s-1', 'f4'), 'V_3D_v': ('m s-1', 'f4'), 'Lon': ('degrees east', 'f4'),
'Lat': ('degrees north', 'f4')}
def get_navigation(self):
return GEOSNavigation(sub_lon=-137.0)
......@@ -118,10 +131,13 @@ class CarrStereo(AMVFiles):
return dto
def get_parameters(self):
params = ['V_3D', 'H_3D', 'pres', 'Fcst_Spd', 'Fcst_Dir', 'SatZen',
'InversionFlag', 'CloudPhase', 'CloudType']
return self.params
return params
def get_out_parameters(self):
return self.out_params
def get_meta_dict(self):
return self.meta_dict
def get_datetime(pathname):
......@@ -449,8 +465,9 @@ 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])
params_nd = np.vstack(param_s)
params_nd = params_nd[:, in_box]
param_nd = np.vstack(param_s)
param_nd = param_nd[:, in_box]
match_dict[key] = param_nd
#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
......@@ -459,7 +476,8 @@ def match_amvs_to_aeolus(aeolus_dict, amv_files_path, amv_source='OPS', band='14
# full path as string filename to create, '/home/user/newfilename'
# aeolus_to_amv_dct: output from match_amvs_to_aeolus
# aeolus_dct: output from get_aeolus_time_dict
def create_file(filename, aeolus_to_amv_dct, aeolus_dct):
# amv_files: container representing specific AMV product info
def create_file(filename, aeolus_to_amv_dct, aeolus_dct, amv_files):
keys = list(aeolus_to_amv_dct.keys())
num_amvs = []
......@@ -469,9 +487,10 @@ def create_file(filename, aeolus_to_amv_dct, aeolus_dct):
namvs = 0
nlevs = 0
for key in keys:
lons, lats, pres, spd, dir, dist = aeolus_to_amv_dct.get(key)
num_amvs.append(len(lons))
namvs += len(lons)
# lons, lats, pres, spd, dir, dist = aeolus_to_amv_dct.get(key)
param_nd = aeolus_to_amv_dct.get(key)
num_amvs.append(param_nd.shape[1])
namvs += len(param_nd.shape[1])
prof_s = aeolus_dct.get(key)
prof = prof_s[0]
......@@ -499,9 +518,20 @@ def create_file(filename, aeolus_to_amv_dct, aeolus_dct):
amv_dist = rootgrp.createVariable('amv_dist', 'f4', ['amvs'])
amv_dist.units = 'km'
nc4_vars = []
out_params = amv_files.get_out_parameters()
meta_dict = amv_files.get_meta_dict()
for pidx, param in enumerate(out_params):
u, t = meta_dict.get(param)
var = rootgrp.createVariable(param, t, ['amvs'])
var.units = u
nc4_vars.append(var)
num_amvs_per_prof = rootgrp.createVariable('num_amvs_per_prof', 'i4', ['num_aeolus_profs'])
num_levs_per_prof = rootgrp.createVariable('num_levs_per_prof', 'i4', ['num_aeolus_profs'])
prof_time = rootgrp.createVariable('time', 'f4', ['num_aeolus_profs'])
# ---- Profile variables ---------------
prf_lon = rootgrp.createVariable('prof_longitude', 'f4', ['num_aeolus_profs'])
prf_lon.units = 'degrees east'
prf_lat = rootgrp.createVariable('prof_latitude', 'f4', ['num_aeolus_profs'])
......@@ -516,6 +546,7 @@ def create_file(filename, aeolus_to_amv_dct, aeolus_dct):
prf_hht.units = 'meter'
prf_hhb = rootgrp.createVariable('prof_hhb', 'f4', ['profs'])
prf_hhb.units = 'meter'
# --------------------------------------
i_a = 0
i_c = 0
......@@ -525,13 +556,18 @@ def create_file(filename, aeolus_to_amv_dct, aeolus_dct):
i_b = i_a + namvs
i_d = i_c + nlevs
lons, lats, pres, spd, dir, dist = aeolus_to_amv_dct.get(key)
amv_lon[i_a:i_b] = lons[:]
amv_lat[i_a:i_b] = lats[:]
amv_spd[i_a:i_b] = spd[:]
amv_dir[i_a:i_b] = dir[:]
amv_pres[i_a:i_b] = pres[:]
amv_dist[i_a:i_b] = dist[:]
# lons, lats, pres, spd, dir, dist = aeolus_to_amv_dct.get(key)
# amv_lon[i_a:i_b] = lons[:]
# amv_lat[i_a:i_b] = lats[:]
# amv_spd[i_a:i_b] = spd[:]
# amv_dir[i_a:i_b] = dir[:]
# amv_pres[i_a:i_b] = pres[:]
# amv_dist[i_a:i_b] = dist[:]
# i_a += namvs
param_nd = aeolus_to_amv_dct.get(key)
for pidx, param in enumerate(out_params):
nc4_vars[pidx][i_a:i_b] = param_nd[pidx, :]
i_a += namvs
prof_s = aeolus_dct.get(key)
......@@ -566,7 +602,7 @@ def create_amv_to_aeolus_match_file(aeolus_files_dir, amv_files_dir, outfile=Non
m_d = match_amvs_to_aeolus(a_d, amv_files_dir, amv_source, band, amv_files)
if outfile is not None:
create_file(outfile, m_d, a_d)
create_file(outfile, m_d, a_d, amv_files)
# match_file: pathname for the product file
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment