1、计算原理

Height=Altitude-Range

  • Height为水面到参考椭球的距离,此为大地高
  • Altitude为卫星轨道至参考椭球的距离
  • Range为卫星至水位的距离

2、matlab代码

fname_in     = 'JA2_GPS_2PdP006_240_20080908_230802_20080909_000414.nc';
cycle_number = ncreadatt(fname_in,'/','cycle_number');
pass_number  = ncreadatt(fname_in, '/', 'pass_number');
time         = ncread(fname_in,'time'); % 时间
lat          = ncread(fname_in,'lat');  % 纬度
lon          = ncread(fname_in,'lon');  % 经度
alt          = ncread(fname_in,'alt');  % 轨道高
range        = ncread(fname_in, 'range_ku');
 
lat_index     = find(lat >= 22.2484 & lat <= 22.3975); % 选出纬度在该区域的数据
is_range_nan  = isnan(range);          % 返回与range一样大小的向量,判断range的值是否为NaN,是则为1,不是则为0
out_file_id   = fopen('data.txt','w'); % 存放数据文件
 
for j = min(lat_index) : max(lat_index)
    if(is_range_nan(j) == 0)        % 不为缺省值才做计算
        height = alt(j) - range(j); % 计算水位高
        fprintf(out_file_id, '%d\t%d\t%.3f\t%.3f\t', cycle_number, pass_number, lon(j), lat(j));
        fprintf(out_file_id, '%.3f\t%.3f\t%.3f\t%.8f\n', alt(j), range(j), height, time(j));
    end
end
fclose(out_file_id);

3、结果

6	240	123.979	22.356	1341770.279	1341764.618	5.661	274231709.82634497
6	240	124.001	22.307	1341759.464	1341735.933	23.531	274231710.84649801
6	240	124.022	22.258	1341748.669	1341725.692	22.977	274231711.86665201

每一列一次解释为:

  • 6 cycle
  • 240 pass
  • 123.979 经度lon
  • 22.356 纬度lat
  • 1341770.279 轨道高alt
  • 1341764.618 测距值range
  • 5.661 计算得到的高程
  • 274231709.82634497 时间
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐