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 时间