Matlab读取ICESat的.H5数据
从官网下载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)
