def ionex_stec_map(ionex_fname,
augmented_arc_map):
"""
"""
logger.info('computing interpolated and mapped STEC from {}'.format(ionex_fname))
# compute temporally interpolated IONEX VTEC maps
dt_list = get_dt_list(augmented_arc_map)
(grid_lon, grid_lat, vtec,
_, sat_biases, _) = interpolate2D_temporal(ionex_fname,
dt_list)
# compute spline interpolators
bbox = [-180, 180, -90, 90]
# check that latitude grid is in decreasing order
assert grid_lat[1] < grid_lat[0]
interp_map = {dt: RectBivariateSpline(grid_lon,
grid_lat[::-1],
vtec[:, ::-1, i],
bbox=bbox) for i, dt in enumerate(dt_list)}
# compute interpolated stec
stec_map = defaultdict(list)
for key, arc_list in augmented_arc_map.iteritems():
for arc in arc_list:
ionex_stec = []
for (dt_i, ipp_lat_i, ipp_lon_i, el_map_i) in zip(arc.dt,
arc.ipp_lat,
arc.ipp_lon,
arc.el_map):
i, _ = find_le(dt_list, dt_i)
interpolator = interp_map[dt_list[i]]
vtec_i = float(interpolator.ev(ipp_lon_i,
ipp_lat_i))
ionex_stec.append(vtec_i * el_map_i)
stec_map[key].append(ionex_stec)
return stec_map, sat_biases
评论列表
文章目录