欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MATLAB hdf(h5)文件转成tif图片格式(+批量处理)

程序员文章站 2024-03-24 22:27:10
...

帮网友处理了个土壤水的hdf(h5)数据,记录一下心得:

注:以下只是对单个hdf文件的处理,关于批处理我在另一个博客中写得很清楚,思路大同小异,请看:
MATLAB 批量读取NC文件并转为TIF文件

代码:

clc
clear

%第一步 展示h5文件的结构(名字 几个group 几个dataset 以及其他属性)
h5info('C:\Users\DELL\Desktop\数据处理\SMAP_L3_SM_P_20150331_R16510_001.h5')

%第二步 展示所有group的信息,查到我们需要的数据集的名字以及所在group
h5disp('C:\Users\DELL\Desktop\数据处理\SMAP_L3_SM_P_20150331_R16510_001.h5','/')

%第三步 查到我们需要的信息后,提取变量格式为 data = h5read(filename,datasetname) 层级关系用/表示
SM_am = h5read('C:\Users\DELL\Desktop\数据处理\SMAP_L3_SM_P_20150401_R16510_001.h5'...
    ,'/Soil_Moisture_Retrieval_Data_AM/soil_moisture');

%第四步 矩阵的行列与经纬度可能不对应,因此对矩阵进行翻转、转置等,这一步看自己需要
SM_am = permute(SM_am,[2,1]);

%第五步 制作成地理栅格数据±85.0445和±180是经纬度范围
R = georasterref('RasterSize', size(SM_am),'Latlim', [double(-85.0445)...
    double(85.0445)], 'Lonlim', [double(-180) double(180)]);
    
%第六步 绘图
geotiffwrite(['F:\example','.tif'],SM_am,R);

需要注意的几点:
1、经纬度范围实际上在第二步的结果中能找到,如:
MATLAB hdf(h5)文件转成tif图片格式(+批量处理)

2、要注意看是升轨还是降轨,本次用的是升轨数据(am)
3、要仔细看第二步得出的结果,给出了很多信息,如:
MATLAB hdf(h5)文件转成tif图片格式(+批量处理)
Finish!

相关标签: matlab 可视化