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

snapshot..

parent e7c7cd65
No related branches found
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.
Finish editing this message first!
Please register or to comment