多个hdf数据提取其中的数据集并批量转为tif,用matlab
时间: 2024-03-29 16:39:57 浏览: 25
你可以使用MATLAB中的HDF-EOS工具箱来批量读取和转换HDF数据。以下是一个简单的示例代码:
```matlab
% 设置输入输出路径和文件名
input_folder = 'input_folder';
output_folder = 'output_folder';
file_names = dir(fullfile(input_folder, '*.hdf'));
% 循环读取并转换每个文件
for i = 1:numel(file_names)
% 打开HDF文件
file_path = fullfile(input_folder, file_names(i).name);
file_id = hdfgd('open', file_path, 'DFACC_READ');
% 获取数据集名称并打开数据集
grid_name = 'Grid1';
data_name = 'Data-field1';
grid_id = hdfgd('attach', file_id, grid_name);
data_id = hdfgd('select', grid_id, data_name, 'read');
% 获取数据集信息
[rank, dims, ~, ~, ~, ~, status] = hdfgd('info', data_id);
if status ~= 0
error('Error getting dataset information');
end
% 读取数据集并转换为tif
data = hdfgd('read', data_id, ones(1, rank), [], []);
output_path = fullfile(output_folder, [file_names(i).name, '.tif']);
geotiffwrite(output_path, data, [0, 0], 'GeoKeyDirectoryTag', geotiffinfo(file_path).GeoTIFFTags.GeoKeyDirectoryTag);
% 关闭数据集和文件
hdfgd('detach', grid_id);
hdfgd('close', file_id);
end
```
在上面的代码中,你需要修改`input_folder`和`output_folder`为你自己的输入输出文件夹路径。`dir`函数用于获取所有`.hdf`文件的文件名,循环读取并转换每个文件中的`Grid1`网格和`Data-field1`数据集,最后将结果保存为`.tif`文件。请注意,上面的代码仅适用于单波段数据,如果你处理的是多波段数据,则需要在循环中读取和转换每个波段的数据。