HDF&HDF-EOS格式说明

2005.7.19
<1>HDF
HDF是分层数据格式,是一种普通的数据格式。HDF文件由一个目录(directory)和一个数据对象集(collection)组成。在许多情况下,directory接口和数据对象集是一一对应的。
每个数据对象有一个目录借口,包含了一个指向对象地址的指针和定义数据类型的信息。
HDF库支持一下数据类型:
1.科学数据组:多维整型或浮点数组;
2.定点数据(Vdata&Vgroups):以表来存储多值数据;
3.一般栅格(Gr):栅格影像;
4.注释--描述文件和部分文件(元数据)的文字;
5.8-bit栅格影像;
6.24-bit栅格影像;
7.调色板:8-bit调色板(伴随影像);
[1]The HDF File Header
文件的第一个组件是文件头,它占用了前四个字节,ASCII的值就是NCSA。
 
[2]The HDF Directory
HDF Directory(DD list)分为一系列为DD blocks的组件。
每个DD block且包含了三种东西:block中目录入口(Data Descriptors,或DDs)的数目,下一个DD block的字节位置(如果是最后一个,那么就是0),然后是实际的目录入口。
每个DD block的前二个字节包含了“入口的数值”;接下来的四个包含了下一个DD block的字节位置;接下来就是实际的DDs。
每个DD常常是严密的12个字节长。
(the location of the next DD Block entry)常常以文件开头的字节来表示(一共4个字节),这就限定了文件的大小的上限为2G。
 
[3]HDF Data Descriptors
单个最重要的HDF概念是数据描述(Data Descriptors,DD)。在HDF文件每个单个数据元素(例如image,array,annotation,Vgroup等)都有一个位于DD list中的相应的DD。
每个DD是定长的,有四个部分(four fields):
1.a Tag field:定义了数据元素的类型;
2.a Reference Number field(Ref):对每个有相同Tag的元素都是不同的;
3.An Offset field:给出了数据元素的位置(从文件的开始);
4.a Length field:以字节为单位来给出数据元素的长度;
[3.1] HDF Tags
Tag Field 是16位无符号整型(2字节),意味着有65535个可能的数据元素类型(0是非法tag数),可能的tag值被分为三个范围,如下图:
用户定义和NCSA定义数据元素类型能自由地在相同的文件中混用。MCSA定义了对于一般数据描述的utility tags,对于伪彩色和彩色影像描述的raster image tags,对于多维数组描述的scientific dataset,对于定义值的表的Vdata,对于成组的数据元素的Vgroup tag。
如下图:
[3.2]HDF Reference Numbers
当你存储两个栅格影像数据于一个HDF文件时,你就要产生两个相同tag number(DFTAG_RI)。但是这就产生了问题:如何区别两个DFTAG_RI的问题。
答案就是设置了a Reference number,通常是利用HDF库,对于每个数据对象写入文件。
这样库将保持对reference number的追踪,来保证不会有两个具有相同tag number数据对象具有相同的reference number,或者两个不同tag的对象具有相同的reference number。
虽说许多DD能有一样的reference number,HDF标准要求对一个特有的tag仅有一个特有的reference number。这就意味着每个tag/ref联合在单个文件中是独特的。一个tag/ref对能作为唯一的ID(data identifier)去清楚地分辨特殊的数据元素。
 
当然也有意外
It is important to note at this point that, with only one exception that we will discuss in a later section, one must take care not to infer meaning on the library’s choice of reference numbers. It will often be the case that some number of data objects in a file will have the same reference number. The only information that can be gleaned from this similarity in reference numbers is that the library is miserly in doling out new reference numbers. It reuses reference numbers in all cases where it can easily ascertain it to be safe to do so. Coincidentally, such cases often occur when writing out groups of data objects such as Raster Image Groups and Scientific Data Sets. However, this behavior is not an official part of the specification of HDF and it should never be relied upon.
 
[3.4]HDF Groups
HDF库(HDF library)支持利用三种group tag中的一个来组数据元素。
Raster Image Group Tag(DFTAG_RIG)被用来组成所有具有特定raster image的数据对象。
Numeric Data Group Tag(DFTAG_NDG)被用来组成具有特定scientific dataset的数据对象。
Vgroup tag(DFTAG_VG)支持总体的组成所有类型的数据对象,甚至是Vgroups。
这些组(group)里的数据是一个关于此组的Data Identifier的列表。
既然组中不包含数据元素的offset值,DD还是需要在DD list中。所以每个数据元素必须有一个DD存在于DD list中。另外,许多数据元素在相同group中具有Data Identifier列表。
 
Raster Image Groups(RIGs)和Numeric Data Groups(NDGs)只有Data Identifier的列表,每个四字节长(Vgroup比较复杂点),在RIG和NDG中的Data Identifier数恰好是分为四块的长度(Length field,同上)。
如下表,是一个例子,利用Raster Image Groups(RIGs)定义两个相同大小的影像。是如何利用raster image groups利用相同影像大小数据元素。
具有两个Vgroups的HDF file
那么就有如下的结构:
[3.5] HDF Scientific Datasets
HDF 中最重要的数据对象就是 Scientific Datasets SDS )了。一个 SDS 是一组多维的数组。数组可以多到 32767 维,包含浮点和整型。它有俩个接口: DFSD (老版), SD (新版)。
 
[3.6]HDF Vdatas
HDF 也支持表格存储,以 Vdatas 来组织。 Vdata 的存储需要两个 tags DFAG_VH 来定义和命名值的 columns DFAG_VS 指向 Vdata 数据本身。 一个例子       

得到的 Vdata 的上的结构:

 
[3.7]HDF Extended Tags
 
Extrended Tags 提供了许多没有定义与 NCSA tags 。它一般是直接指向数据,而是先指向不知格式数据的定义和存储的方式,这样未知的数据在没有更新 HDF 格式的情况下,也可以存储在 HDF 中。

 
 



 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
<2>HDF-EOS
HDF-EOS数据格式是标准的HDF加上ECS协定,数据类型(3种)和元数据。HDF-EOS增加了3种地理位置数据类型(point,grid,swath),使得能以地球坐标和时间来查询文件内容。
HDF-EOS文件也包含了ECS搜索服务必须的ECS核心元数据。HDF-EOS文件能被任何能处理标准HDF文件读取,但是HDF-EOS地理位置或时间信息利用标准HDF调用是不能得到的。一个文件产品不需要有任何grid,point,swath模型才能成为HDF-EOS。如果ECS元数据包含了,它就是一个合法的HDF-EOS文件。
1.       Point Data Types - Data, such as ship observation reports, that is irregularly spaced in time and/or space.
2.       Swath Data Types - Time-ordered satellite data which represents time sequences of scan lines, profiles, or other array data.
3. Grid Data Types - Data that has been stored or can be represented on a regular grid and
is based on certain set earth/map projection (i.e., Mercator, Lambert Conformal, etc.).
1.“点”数据类型:在时间和/或空间不规则的数据;
        仅仅是简单地把数据以空间/时间来组织。
2.“带”数据类型:时间顺序的卫星数据,代表扫描线,图像和另外数组的时间序列;
        标准“带”由四个主要部分组成:数据场,地理坐标场,维数与维数地图。
另外还有第五个可选叫做“索引”(index),它用来支持对“带”数据一定类型的接口
3.“网格”数据类型:已有数据或能被描绘在一定地球/地图投影的规则网格的数据;
        Grid数据组有三个重要的特征:数据场,维数和投影。
Grid和Swath的主要的不同在于他们地理地址信息的特征。
Swath具有地理位置信息,它是以一系列个体的地理点(带点,地控制点)。Grid具有更加复杂的形式的地理位置,具有相应的参数。
特别的是,HDF-EOS允许point,swath和grid数据集不仅可以以行列(如HDF)来表示,而且可以以时间和地理位置来表示。
另外一个特殊表示HDF-EOS数据特征是ECS核心元数据的托管包含。
The HDF-EOS format shares many of the same important features of HDF
HDF-EOS格式具有与HDF许多相同的,重要特征,
在HDF的基础上,HDF-EOS多提供了:
·         Geolocation information coupled to data
·         Standardized geographical subsetting
·         ECS metadata
1.对照数据的地理坐标信息;
2.标准的地理亚背景;
3.ECS原数据;
 
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
目录 第一章 HDF介绍 1.1. 本章概况 1.2. 什么是HDF 1.3. 为什么创建HDF 1.4. HDF的6个基本数据结构 1.5. HDF文件的3层交互 1.6. HDF文件格式 1.7. HDF4和HDF5 第二章 HDF库 2.1 本章简介 2.2 获得和安装HDF库 2.3 支持的程序语言 2.4 应用编程接口 2.5 id文件信息 2.6 编译介绍 第三章 常规光栅图像应用编程接口(GR API) 3.1 本章简介 3.2 General Raster Image(常规光栅图像)数据模型 3.3 GR API 3.4 把Raster Image(光栅图像)写入一个HDF文件中 3.5 从一个HDF文件里读取Raster Image(光栅图像) 第四章 科学数据集应用编程接口(SDS API) 4.1 本章简介 4.2 科学数据集数据模型 4.3 SD API 4.4 把科学数据集写入HDF文件里 4.5 从HDF文件中读取科学数据集 第五章 虚拟数据应用编程接口(VS API) 5.1 本章简介 5.2 Vdata数据模型 5.3 VS API 5.4 把Vdata写入一个HDF文件中 5.5 从一个HDF文件中读取Vdata 第六章 注解应用编程接口(AN API) 6.1 本章简介 6.2 注解数据模型 6.3 AN API 6.4 把注解写入HDF文件里 6.5 从HDF文件中读取注解 第七章 虚拟组结构应用编程接口(V API) 7.1 本章简介 7.2 Vgroups 数据模型 7.3 V API 7.4 创建Vgroups和添加数据对象 7.5 获取有关Vgroup的信息和删除数据对象 第八章 HDF命令行工具 8.1 本章简介 8.2 HDF命令行工具介绍 8.3 HDF查询工具 8.4 HDF数据格式转换工具 8.5 HDF数据压缩工具 第九章 使用JHV浏览HDF文件 9.1 本章简介 9.2 什么是JHV 9.3 获取和安装JHV 9.4 显示HDF对象的树状结构 9.5 显示文件和数据对象的注解 9.6 显示Vdatas 9.7 显示光栅图像 9.8 显示科学数据集
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值