HDF数据格式资料转_第1页
HDF数据格式资料转_第2页
HDF数据格式资料转_第3页
HDF数据格式资料转_第4页
HDF数据格式资料转_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、HDF数据格式 资料 转来自:数据格式HDF是美国国家高级计算机应用中心(National Center for Supercomputer Application)为了满足各种领域研究需要而开发出的一种能高效存储和分发科学数据的新型数据格式。一个HDF文件中可以包含多种类型的数据,如栅格图像数据,科学数据集,信息说明数据等,这种数据结构,方便了我们对于信息的提取。例如,当我们打开一个HDF图像文件时,除了可以读取图像信息以外,还可以很容易的查取其地理定位,轨道参数,图像噪声等各种信息参数。HDF的数据格式是一种分层式数据管理结构,是一个能够自我描述、多目标、用于科学数据存储和分发的数据格式。

2、他针对存储和分发科学数据的各种要求提供解决方法。HDF数据格式设计特点为:自我描述性(Self-Description):一个HDF文件可以包含关于该数据的全面信息。多样性(Diversity):一个HDF文件中可以包含多种类型的数据。例如,可以通过利用适当的HDF文件结构,获取HDF文件中存储符号,数据和图形数据。灵活性(Flexibility):可以让用户把相关数据目标集中一个HDF文件的某个分层结构中,并对其加以描述,同时可以给数据目标记上标记,方便查取。用户也可以把科学数据存储到多个HDF文件中。可扩展性(Extensity):在HDF文件中可以加入新数据模式,增强了它与其他标准格式的

3、兼容性。独立性(Independibility):HDF是一种同平台无关的格式。HDF文件在不同平台间传递而不用转换格式。HDF文件物理存储结构一个HDF文件应包括一个文件头(),一个或多个描述块(Data Descriptor Block),若干个数据对象(Data Object)。文件头:位于HDF文件的头四个字节,其内容为四个控制字符的ASCII码值,四个控制字符为N,C,S,A,可用于判断一个文件是否为HDF文件格式。数据对象:数据对象是HDF文件最基本的存储元素。包括一个描述符和一个对应的数据元素。描述符:其长度为12个字节,主要用来描述这个数据元素的某些信息。头两个字节称为标识符(

4、Tag),其内容为16位的无符号整数,其作用为确定数据元素区的数据类型,每一种数据类型都对应一个默认无符号整数。紧跟其后的是两个字节的参照数(Reference Number),它也是16位的无符号整数,它是为了区别同一标识符下的不同数据对象,因此标识符和参照数二者合在一起唯一确定一个数据对象。后面的四个字节组成的32位无符号整数表示的是数据元素在HDF文件中的偏移量,也就是从文件开始位置到数据元素的起始位置所包含的字节数。最后的四个字节用来表示本描述符所对应的数据元素区所占用的字节数,也是32位无符号整数。数据元素:它是数据对象中的裸数据部分,也就是数据本身。可以是字符、整数、浮点数、数组等

5、。在实际的HDF文件中,描述符并不是和它对应的数据元素连在一起,而是把相关的许多描述符放在一起,构成一个数据描述符的块(Data Descriptor Block),在这个块的后面顺序存储了各个描述符所对应的数据元素。打个比方,这里的描述符相当于一本书的目录,而数据元素相当于目录中各个章节所对应的实际内容。这种数据描述符块的前面有对应的块头(Block Header)。块头的内容分为两部分,第一个部分为16位无符号整数,表示在这个数据描述符块中数据描述符的个数,第二部分为32位无符号整数,表示了下一个数据描述符块相对于文件起始位置的偏移量。因此,最后一个数据符块的块头的第二部分的内容为零。总的

6、说来,HDF文件中的物理分布格式如下:文件头()第一个描述符块(First Descriptor Block)数据元素(Data Element)更多的描述符块以及更多的数据元素等等关于数据描述符块和数据元素在HDF文件中分布的唯一规则就是第一个数据描述符块必须紧跟在文件头后。在此之后的数据描述块的块头中的偏移量把数据描述符块连接起来,而每个数据描述符中的偏移量又把数据描述符和数据元素连接起来。HDF数据类型在这里首先明确两个概念,数据集(Data Sets)和组(Groups)。HDF文件通常包含几个密切相关的数据对象,把这些数据对象放在一起形成一个数据集,以满足特殊用户的要求。HDF主要有

7、6种主要数据集:栅格图像(Raster Images Sets)、调色板(Palette Sets)、科学数据库(Scientific Data Sets)、注释(Annotation)、Vsets和Vgroup,例如,五个或者六个数据对象可以用来描述一个栅格图像;八个或者更多的数据对象可以用来描述一次科学实验的结果,由于要把不同的数据对象结合起来构成集,就需要一种方法将数据对象有机的结合起来,这样就产生了组的概念,HDF的组用来明确和控制数据集。一个组也是一个数据对象,但是它的数据元素是由一系列的标识符(Tags)和参照数(Reference number)组成,这些标识符和参照数所对应的数

8、据对象就可以构成实际的数据集。例如,构成一个栅格图像的五个或者六个数据对象,它们构成一个集,而它们的标识符和参照数应该放在一个组所对应的数据元素区中,以将它们联系起来。以下是几种常用的数据集格式:栅格图像:数据模式提供一种灵活方法存储。描述栅格图像数据,包括8bit栅格图像和24bit栅格图像。栅格图像集(Raster Image Sets)提供用来存储图像和任意数量的可供选择的图像描述符的框架,通常包含图像数据布局的描述和图像数据,它还可能包含调色板和颜色校正信息和任何其他相关的用来显示图像的数据。将所有这些信息联系起来的就是栅格图像组(Raster Image Groups),它包含了所有

9、这些数据对象的标识符和参照数。这些数据对象的数量不是固定的,可以通过选择来确定需要的信息。调色板:提供图像的色谱。调色板是给一幅图像加入颜色的方法,它相当于一个表格,这个表格可能由不同的大小,但HDF文件只支持256色的显示。对于栅格图像中的每一个数据,在表格中都有其对应的RGB数值,用来显示颜色。科学数据集:用来存储和描述多维科学数据陈列。科学数据集提供了一个用来存储多维数组数据以及其相关信息的框架。数组的数据类型可以是整数或者是浮点数。它的组织方式与栅格图像相同。科学数据集必须包含的组件有数组、名称、数据类型和数组的维数。数组是一种多维的数据结构,它是科学数据集的主要组成部分,存储着所需要

10、的核心数据,比如某一次科学实验结果的数据。科学数据集的名称在其刚产生的时候就赋予了它,在以后的应用中不能再被改变,它的名称在HDF文件中可以不是唯一的,但是唯一的名字将使得在同一文件中区别不同的科学数据集更加容易。数据类型指的是存储在数组中数据的类型。数据维数确定了数组的形式和大小。数组维数的数目被称为数组的阶数,每一维都有一个指针和一个标识符,还包含大小和名称。指针是用来描述某一维在数组中的位置。而标识符将它与其他维区别开来。每一维的大小是一个正整数,但是如果其值为零,表示这一维是无限维。另外,科学数据集还提供了三种类型的可供选择的组件:预定义的属性,用户定义的属性和维数规模。预定义的属性有

11、保留的名称,在某些情况下还有预定义的数据类型和数据项目的个数,应用程序可以用预定义的属性来对数据进行操作。用户自定义属性包含了关于文件、数组或者维数的辅助信息。Vdata:是一个类似于框架,用于存储和描述数据的表格。Vdata是verdex data的缩写,这种数据格式起初是用来存储多边形顶点和边的信息,但现在它的应用范围已经被大大扩展了。Vdata相当于一个表格,是很多记录(Records)的集合,每个记录的值存储在固定长度的域(Fields)中,所有的记录的数据结构都是相同的,每个域中的值都有相同的数据类型。一个Vdata都由一个名称,一个类和一系列单独的域的名称所唯一确定。Vdata的名

12、称主要是用来描述Vdata的内容,它通常被用来在文件中搜寻Vdata的位置,一个Vdata的类更进一步的确定了它的数据的用途和目的。最后,Vdata的域的名称是用来分配给Vdata域的标签。每一个记录是由一个或更多的固定长度的域所组成。Vdata的记录和域由指针来标识。这个指针是从零开始依次递增的。每一个域中的数据都有唯一的类型。同时在一个域总可以有几个组件,组件的个数称为域的序(Order)。注释(Annotation):文本格式,用来描述HDF文件自身的属性或者HDF数据目标。我们通常需要把一个关于HDF文件信息的文本文件的注释联系起来,或者直接存储在HDF文件中。HDF提供了两种实现这一

13、目的方法:注释数据对象和属性的分配。需要注意的是注释本身也是一种数据对象,因此它也有自己的描述符,并指向了包含有注释信息的数据元素。这个数据元素有以下的信息:被注释对象的标识符和参照数以及注释本身。Vgroup:用来将数据对象联系起来。一个Vgroup中可以包含其他的Vgroup或者HDF数据对象,因此这种结构类似于Unix文件结构。属于同一个Vgroup的数据对象通常被称为Vgroup的成员,Vgroup必须有一个名称以及一个可供选择的与其相联系的Vgroup类,此二者被用来描述属于同一个Vgroup的数据对象并将其分类。Vgroup的名称是字符串,在HDF文件中不同的Vgroup可以有相同

14、的名字,但是不同的名字可以使得区分Vgroup更加容易,Vgroup类也是一个数据字符串,能够用来根据数据对象的使用目的来分类。同时需要注意的是,Vgroup可以包含任意数目的Vgroups和数据对象,包括其他Vgroup的成员。HDF函数库及其应用接口(API)HDF文件可以被看作几个接口层。在它的最底层,HDF是用来存储科学数据的物理文件格式。在它的最高层,HDF是用来操作、显示和分析存储在HDF文件中数据的应用程序集合。在这些接口层之间,HDF是用来提供高层和底层编程接口的软件库,它也包括一些支持软件,可以使存储、检索、显示和分析以及操作存储在HDF文件中的数据更加容易。最基本的接口层是

15、为软件开发者保留的。它被用来直接进行文件的数据流的输入输出、错误处理、内存管理和物理存储。它是对有经验的HDF程序员用来开发而比现有所用的软件更加完善的高层应用程序接口的软件工具,而这种底层的编程只能用C语言来完成。再上的一层,是HDF应用程序接口,包括几个相互独立的函数组,每一组都使专门用来简化存取某一种数据类型的过程。虽然每一个接口都需要编程,但是所有的底层的详细过程可以忽略。大多数情况下,程序员所需要做的事情就是在恰当的时候调用恰当的函数,接口会完成剩下的任务,程序员不必考虑。这一层也只能在C语言的环境中所使用。最高层是通用应用程序,它包括现有的一些比较完善的高级应用程序,可以对HDF文

16、件操作和读取。HDF函数库的源代码可以在NCSA的匿名FTP服务器上获得。但要使得这些函数库可用却是一件很麻烦的事情。这一过程可以分为编译、连接、安装、载入VC等几大量过程。我们从相关网站上下载了过程的介绍并在计算机上实现。但实际操作中遇到了很多意想不到的问题,耽误了相当多的时间,但最终都得到了解决。高层HDF应用程序接口,可以分作两部分,多文件接口和单文件接口。多文件接口是指在一个应用程序中能够同时存取几个HDF文件的接口,而单文件接口则不具备这种功能。HDF输入输出函数库是由存取数据对象和相关信息的C和FORTRAN-77函数所构成。一般来说,尽管在不同的数据对象类型中有一些函数功能是重叠

17、的,但一般来说,一种应用程序接口只能够操作一种类型的数据对象。当每调用一种数据类型的专用接口时,其他的数据类型对用户来说都是不可见的,相当于在HDF文件中只有这一种数据类型的数据结构存在。新的多文件程序接口包括以下几种。SD API:用来存储、管理和检索多维数组数据,包括它们的维数和属性等信息。这个API中的函数可以在C程序中调用,获得科学数据集的所有信息。具体的函数调用格式在HDF Users Guide中有详细的介绍。VS API:存储、管理和检索以目录(Records)形式存储在表格中的数据。利用这个接口可以获得Vdata的任何信息,也就是前述表格中的各种数据。V API:产生任何主要的

18、HDF数据结构的组(Groups)。通过这个接口可以获得Vgroup的任何信息。GR API:存储、管理和检索栅格图像数据,包括它们的维数和调色板等信息。栅格图像数据的所有信息可以通过这个接口获得。AN API:存储、管理和检索用来描述文件或者文件中任何一种数据结构的文档。所有的注释信息可以由此获得。由于单文件接口现在已经很少使用,在这里就不再详细介绍了。HDF-EOS数据格式EOS是Earth Observatory System的简称。可以认为HDF-EOS是HDF的扩展,用以满足更多的需要。在HDF-EOS中,有前面提到的栅格图像和多维数组,然而也有一些EOS类型的数据并不与HDF类型直

19、接匹配,特别是地理标识数据类型(Geolocation Datatype)。为了将EOS数据产品的需要同HDF联系起来,在HDF中又定义了三种新型的数据类型:点型(Point)、带型(Swath)、网格型(Grid)。每一种数据都与HDF标准类型组织起来,并由特殊的应用程序接口所支持,这有助于开发者的工作。这些新的应用程序接口组成了HDF-EOS函数库。点型数据的接口是用来支持与地理标识有关的信息,但并没有由明确的空间和时间信息所组织起来。带型数据接口是专门用于时序性很强的数据,例如卫星扫描带的数据类型。网格型数据类型接口是用来支持固定投影的数组数据。下面对这三种数据结构作一个简单的介绍。点型

20、(Point):是由一系列的在不同时间间隔内和在分散的地理位置所记录的数据。点型数据是由HDF-EOS所支持的最松散的地理标识数据的组织形式。它的形式很简单,每一个数据记录都由一系列的一个或多个数值所组成,这些数值在某种意义上表示了某一点的时间或空间的状态。它的组织形式同HDF的其他数据结构一样,也是通过Vgroup将数据对象组织起来。在此就不作详细的介绍了。当存取一个点型数据集时,它由在创建时所分配给的名称所标识。该名称用来得到一个点型数据标识符,在以后的操作中都由这个标识符来唯一确定。关于点型数据集的信息的获取在HDF-EOS Uses Guide中有详细的介绍。带型(Swath):HDF

21、-EOS中的带型数据的概念是基于典型的卫星扫描带的形式建立起来的。卫星的扫描仪器在垂直于卫星运动轨迹的方向上进行扫描,形成了这样的扫描带。而另一种与带型数据相类似的数据格式,来源于对垂直于前述扫描平面的侧面上的信息进行扫描的仪器。事实上可以将两个实际扫描方向上的扫描数据结合起来构成一个三维的数组,每一维代表空间上的一个方向。带型数据的目的是将这样的一个三维科学数据于地球上具体的点对应起来。标准的带型数据由四个主要部分所组成:数据域(Data Fields):包括地球观测的科学数据。通常为二维数据,但也可以有从一维到八维的变化。地理标识域(Geolocation Fields):将扫描的数据带与地球表面的点联系起来。维数(Dimension):定义了数据和地理标识域的三个轴。维匹配(Dimension Maps):定义了数据域和地理标识域之间的关系。当地理标识维与数据维的大小不一样时,在它们之间就存在一个偏移和增量的关系。这些匹配关系可以被称作带型数据的黏合剂。带型数据的这四个组件的定义通常是作为全局属性。例如,一个单独的包含有用来阐述地理标识的MODIS带型数据的信息的文档块,就具有这样的属性。这种全局属性的组织结构完全是模仿Vgroup的组织形式

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论