Matlab讀取ICESat的.H5數(shù)據(jù)
從官網(wǎng)下載ICESat數(shù)據(jù),比如名稱為GLAH14_634_2115_001_1303_0_01_0001.H5的文件。
首先利用h5disp()函數(shù)顯示文件的內(nèi)部的變量。

接著從中讀取變量,利用函數(shù)h5read(file,'變量名')
A_lon = h5read(lon_data(i,:),'/Data_40HZ/Geolocation/d_lon');
我們需要注意,變量是加了引號(hào)的部分,如下圖,Group中‘/BROWSE’下面有多個(gè)變量,如果讀取下一層的變量,格式為:‘/BROWSE/Image_00’,其他變量以此類推。

貼上讀取部分?jǐn)?shù)據(jù)的代碼:
% 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)
