黄 煜 中国科学院长春光学精密机械与物理研究所吉林长春 130033
【文章摘要】
介绍了一种基于MATLAB 读取HDF 格式遥感数据的方便,对我国FY3C 有效载荷SBUS 遥感HDF 文件的获取实例表明该读取方法语言简洁、简单易学,非常有利于非专业人士对遥感信息的获取,且利用matlab 强大的矩阵运算能力对遥感数据后期二次开发也有巨大的推动作用。
【关键词】
MATLAB ;HDF ;遥感
中图分类号 TP73 文献标识码 A
0 引言
HDF 是用于存储和分发科学数据的一种自我描述、多对象文件格式。它是由美国国家超级计算应用中心创建的,为了满足各种领域研究需求而研制的一种能高效存储和分发科学数据的新型数据格式。HDF 可以表示出科学数据存储和分布的许多必要条件。因此国际上绝对大多数遥感数据均采用这种数据格式或在此基础上增加新的子集。国内遥感卫星数据格式也采用HDF 数据格式,为了推动HDF 格式遥感数据的发布、推广和应用, 本文介绍了一种利用Matlab 读取HDF 格式遥感数据的方法。
1 HDF 文件格式
HDF 是一个能够自我描述、多目标、用于科学数据存储和分发的数据格式。它针对存储和分发科学数据的各种要求提供解决方法。一个HDF 文件中能够包含某数据的多种信息,它能够让用户把多种数据集中某一个分层结构中,并对内容进行必要说明,同时也能够对标注特定目标,便于寻访并且HDF 格式数据与遥感平台无关,这样异平台间数据即可直接传递。
HDF 格式文件可以看做自带目录的数据库。单个章容纳不同类型的元素。一个HDF 文件包括一个文件头,一个或多个描述符块,若干个数据元素。数据头是用来确定一个文件是否为HDF 文件,描述符块存有数据描述符的序号。一个数据描述符和数据元素一起组成了数据对象。数据对象是HDF 的基本结构。
2 Matlab 读取方法
MATLAB(矩阵实验室)是功能强大商业数学软件。它可用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。随着近几年的发展,它还可以创建用户界面并且调用其它语言(包括C,C++ 和FORTRAN)等其它语言编写的DLL。
事实上能够读取HDF 文件的有很多种软件,比如HDFVIEW、C 和FORTRON,但这些软件或语言要不后期处理数据繁琐,要不专业性很强,需要用户花费大量的时间深入学习才可能掌握,这显然不利于数据的推广使用。欧空局针对Envisat 系列卫星开发了专门的数据处理工具包BEAT(The Basic Envisat Atmospheric Toolbox),该工具包不仅支持C,C++ 和FORTRAN,还支持matlab, matlab 可直接调用相关函数或动态链接库。
Matlab 只需调用beat 工具包里的两个函数即可直接获取HDF 文件数据内容。第一个函数为beat_open( 文件地址),它用于打开指定的HDF 文件,第二个函数为beat_fetch( 文件名,' 数据名'),它用于获取HDF 文件中一个指定数据元素或数据元素集。
3 FY
FY
以2013 年10 月28 日12 时30 分的HDF 文件为例,Matlab 读取Data 子集全部元素的完整程序如下:
f i l e f l a g = ' F Y
path='F:\FY
hdffn = strcat(path, fileflag);
pf = beat_open(hdffn);
data=beat_fetch(pf,'data') 。
matlab 最大优势在于矩阵运算, 这一点在HDF 文件的读取和后期数据处理极为重要,利用matlab 强大的矩阵运算能力即可对Data 中各元素数据进行相应的处理、比较和存储。
4 结束语
通过对Matlab 读取HDF 文件的方法介绍和实例说明,我们可以看到matlab 在处理HDF 数据文件方面的巨大优势,它不仅简单易学,而且作为一种专门的数学软件,在后期数据处理也极为方便,对推动遥感数据的推广和应用有重要价值。
【参考文献】
[1]HDF_EOS 数据格式及其数据导入, 气象科学,2005, 33(3):278-288
[2]Matlab 对基于HDF 格式的MODIS1B 数据的提取方法与实现, 气象科学,2006, 26(6):676-681
[3] 利用MATLAB 实现FY_3_MERSI 地表温度反演及专题制图,国土资源遥感,2012, 4(95):62-70
【作者简介】
黄煜(1979-),男,博士,副研究员,主要从事空间紫外遥感技术方面的研究。
图1 FY3C SBUS HDF 文件子集元素名称048