欢迎光临散文网 会员登陆 & 注册

Matlab读取ICESat的.H5数据

2022-08-08 17:43 作者:我是水怪的哥  | 我要投稿

从官网下载ICESat数据,比如名称为GLAH14_634_2115_001_1303_0_01_0001.H5的文件。

首先利用h5disp()函数显示文件的内部的变量。

接着从中读取变量,利用函数h5read(file,'变量名')

A_lon = h5read(lon_data(i,:),'/Data_40HZ/Geolocation/d_lon');

我们需要注意,变量是加了引号的部分,如下图,Group中‘/BROWSE’下面有多个变量,如果读取下一层的变量,格式为:‘/BROWSE/Image_00’,其他变量以此类推。

贴上读取部分数据的代码:

% read data

file  = 'GLAH14_634_2115_001_1303_0_01_0001.H5';

file1 = 'GLAH14_634_2107_001_1345_0_01_0001.H5';

file2 = 'GLAH14_634_2109_002_0365_0_01_0001.H5';

file3 = 'GLAH14_634_2109_002_0435_0_01_0001.H5';

file4 = 'GLAH14_634_2111_001_1303_0_01_0001.H5';

file5 = 'GLAH14_634_2111_003_0365_0_01_0001.H5';

file6 = 'GLAH14_634_2113_001_1303_0_01_0001.H5';

file7 = 'GLAH14_634_2115_003_0365_0_01_0001.H5';

file8 = 'GLAH14_634_2117_001_1303_0_01_0001.H5';

lon_data = [file;file1;file2;file3;file4;file5;file6;file7;file8];

h5disp(file)

for i = 1:9

    A_lon = h5read(lon_data(i,:),'/Data_40HZ/Geolocation/d_lon');

    A_lon(A_lon>1000)=NaN;

    icesat(i).lon = A_lon;

    A_lat = h5read(lon_data(i,:),'/Data_40HZ/Geolocation/d_lat');

    A_lat(A_lat>1000)=NaN;

    icesat(i).lat = A_lat;

    A_val = h5read(lon_data(i,:),'/Data_40HZ/Elevation_Surfaces/d_elev');

    A_val(A_val>1000)=NaN;

    icesat(i).val = A_val;

    disp(i)

end

coast=load('coastline-from-GMT-WNI.dat');

coast=load('coastline-from-GMT-WNI-0-360.dat');

plot(coast(:,1),coast(:,2),'k')

xlim([0,360])

hold on

for i = 1:9

    scatter3(icesat(i).lon,icesat(i).lat,icesat(i).val,2);

end

box on

grid on

set(gca,'gridlinestyle',':','LineWidth',0.5,'GridAlpha',0.5)


Matlab读取ICESat的.H5数据的评论 (共 条)

分享到微博请遵守国家法律