MATLAB读取htf和netcdf格式数据:
1)使用HDF Import Tool
HDF Import Tool是matlab自带的一个可视化的HDF文件输入工具,主要用于HDF和HDF-EOS文件的浏览和输入数据。在Matlab命令窗口输入:hdftool,即可打开HDF import tool,使用该工具可以打开hdf文件,可以从中看到hdf文件的信息。或者通过命令窗口输入:hdftool(‘example.hdf’),也可打开在matlab路径下文件名为‘example.hdf’的文件。
2)使用信息读取函数hdfinfo
通过在matlab使用hdfinfo这个函数,可以获得hdf文件的信息,其语法为:
S=hdfinfo(filename)或S=hdfinfo(filename,mode);
hdfinfo的返回值S包括了一系列关于hdf文件信息的字段,如文件名(filename),属性(Attributes),虚拟组(Vgroup),科学数据集(SDS)等。
3.使用高级输入函数hdfread
函数hdfread的功能是提取hdf文件的数据。由于这个函数隐藏了hdf库中规定的低级函数的许多操作细节,将打开文件、选取数据集、读取数据、关闭文件等一序列过程都包括了,所以使用起来非常简单。其读取数据集数据的功能语法是:
data=hdfread(filename,dataset)
data返回指定数据集中的所有数据,filename为hdf文件的名称,dataset为数据集的名称。
读取TRMM卫星反射率因子数据并显示。
filename='F:\radardata\TRMM\2A25.070709.54960.6.HDF';
file=hdftool(filename);
geo=hdfread(filename,'geolocation');
lat=geo(:,:,1);
lon=geo(:,:,2);
lat=double(lat);
lon=double(lon);
Zfactor=hdfread(filename,'correctZFactor');
Z=Zfactor(:,:,70);
Z=double(Z);
[Zsize1,Zsize2]=size(Z);
for i=1:Zsize1
for j=1:Zsize2
if Z(i,j)<=0
dBZ(i,j)=0;
else
dBZ(i,j)=(Z(i,j))/100; %可参考TRMM卫星2A25数据格式说明
end
end
end
pcolor(lon,lat,dBZ);
shading interp;
colorbar;
axis([115,121,30,34]);
xlabel('longitude (degree)');
ylabel('latitude (degree)');
title('geo-dBZ');
clc;clear all;
filename='F:\radardata\geomatch\GRtoPR.NANJ.070709.54960.nc';
ncdisp(filename);
Elevation=ncread(filename,'elevationAngle');
ind=find(abs(Elevation-0.45)==min(abs(Elevation-0.45)));
Lat1=ncread(filename,'latitude');
Lon1=ncread(filename,'longitude');
Lat2=Lat1(:,ind);
Lon2=Lon1(:,ind);
GR_data=ncread(filename,'threeDreflect');
[size1,size2]=size(GR_data);
for i=1:size1
for j=1:size2
if GR_data(i,j)<=0
GR_data(i,j)=0;
end
end
end
GR=GR_data(:,ind);
figure;scatter(Lon2,Lat2,200,GR,'filled','Marker','s','MarkerEdgeColor','none');