国家卫星气象中心(NSMC) HDF5.0 使用简介
HDF5.0 使用简介
国家卫星气象中心(NSMC) HDF5.0 使用简介
目 录
1、介绍(Introduction).............................................................................................................1
2、HDF5 文件组织(File Organization)..................................................................................1
3、HDF5 应用程序接口(API)......................................................................................................2
4、创建 HDF5 文件(Creating an HDF5 File).........................................................................3
4.1 什么是 HDF5 文件?...........................................................................................................3
4.2 程序例子(Programming Example)................................................................................4
4.2.1 描述(Description)..........................................................................................4
4.2.2 备注(Remarks)..................................................................................................5
4.2.3 文件内容(File Contents)..............................................................................6
4.2.4 DDL 中的文件定义(File Definition in DDL) ............................................7
5、创建数据集(Creating a Dataset).....................................................................................7
5.1 什么是数据集(What is a Dataset)..........................................................................7
5.2 数据类型(Datatypes)..........................................................................................7
5.3 数据集和数据空间(Datasets and Dataspaces) ..............................................9
5.4 数据集创建特性列表(Dataset Creation Property Lists) ..........................9
5.2 程序例子(Programming Example)............................................................................10
5.2.1 描述(Description)........................................................................................10
5.2.2 备注(Remarks)................................................................................................11
5.2.3 文件内容(File Contents)............................................................................12
5.2.4 DDL 中的数据集定义(Dataset Definition in DDL) ................................13
6、创建一个群组(Creating a Group)...................................................................................14
6.1 什么是群组(What is a Group)?..............................................................................14
6.2 程序例子(Programming Example)............................................................................15
6.2.1 描述(Description)........................................................................................15
6.2.2 备注(Remarks)................................................................................................15
6.2.3 文件内容(File Contents)............................................................................16
7、创建属性(Creating an Attribute).................................................................................17
国家卫星气象中心(NSMC) HDF5.0 使用简介
7.1 什么是属性(Attribute)?..........................................................................................17
7.1.1 创建一个属性(Creating an attribute)....................................................17
7.1.2 读/写属性(Reading/Writing an attribute) ............................................18
7.2 编程例子(Programming Example)............................................................................18
7.2.1 描述(Description)........................................................................................18
7.2.2 备注(Remarks)................................................................................................19
7.2.3 文件内容(File Contents)............................................................................21
7.2.4 DDL 中的属性定义(Attribute Definition in DDL) ................................22
8、读出和写入数据集(Reading from and Writing to a Dataset) .................................22
8.1 读出和写入数据集(Reading from and Writing to a Dataset) ........................22
8.2 编程例子(Programming Example)............................................................................23
8.2.1 描述(Description)........................................................................................23
8.2.2 备注(Remarks)................................................................................................24
8.2.3 文件内容(File Contents)............................................................................27
9、复合数据类型(Compound Datatypes)...............................................................................28
9.1 创建复合数据类型(Creating Compound Datatypes) ............................................28
9.2 程序例子(Programming Example)............................................................................29
9.2.1 描述(Description)........................................................................................29
9.2.2 备注(Remarks)................................................................................................29
9.2.3 文件内容(File Contents)............................................................................30
国家卫星气象中心(NSMC) HDF5.0 使用简介
Advanced Topics
Property Lists
Parallel HDF5
Design Overview
说明: 本教材不包含编译例程所需的软件。
Introductory Topics
Introduction
HDF5 File Organization Compound Datatypes Parallel Programming
The HDF5 API
Create an HDF5 File
Create Dataset
Dataset Read/Write
Create Attribute
Create Group
Create Group - Abs/Rel
Create Dataset in Group
[ Questions ] [ Answers ]
Create/Access File
Hyperslab Selection
Point Selection
Create/Access Dataset
References to Objects Write/Read Hyperslabs
References to Regions - by Contiguous Hyperslab Utilities: h5ls/h5dump
Extendible Datasets
Mounting Files
Group Iteration
High Level APIs
Other
Tutorial Examples
- by Regularly Spaced Data References
- by Pattern
- by Chunk
国家卫星气象中心(NSMC) HDF5.0 使用简介
1、介绍(INTRODUCTION)
欢迎使用由 HDF 用户支持组提供的 HDF5 使用教材
HDF5 是用于存储科学数据的一种文件格式和库文件。它被设计并实现满足科学数据存
储不断增加和数据处理不断变化的需求,为了充分利用当今计算机系统的能力和特点,克服
HDF4.x 的不足。HDF5 有一个强大和灵活的数据模块,支持管理的文件大于 2 GB(HDF4.x
管理文件的极限),并且还支持并行 I/O。设计时考虑了安全线程并将在不久的将来实现此
功能。为了便于简单了解 HDF5 的数据模式、库函数和工具,请参看存放于 URL 地址
(http://hdf.ncsa.uiuc.edu/HDF5/papers/HDF5_overview/index.htm)里的幻灯片。
本使用教材涵盖了基本的 HDF5 数据对象和文件结构,HDF5 程序模块、创建和修改数
据对象的 API 功能。还将介绍用于存取 HDF5 文件的一些有用的工具。
本教材使用的程序例子以及编译它们的 Makefile 在 ./examples/子目录里。为了使用
Makefile 文件,用户也许不得不编辑和更新编译器和编译器选项,以及发布的 HDF5 的目录
路径。Java 程序例子在./examples/ 目录下的名为 java/子目录里。Java/目录有一个
Makefile 文件和运行 java 程序的脚本文件(shell scripts)。
对于其它 HDF5 程序的程序例子,请参看 References 里的指示标记。
希望这个程序例子和用法说明入门能帮助用户很方便地使用 HDF5。
任何意见和建议直接发给:hdfhelp@ncsa.uiuc.edu.
2、HDF5 文件组织(FILE ORGANIZATION)
一个 HDF5 文件就是一个由两种基本数据对象(groups and datasets)存放多种科学数
据的容器:
•
•
HDF5 group: 包含 0 个或多个 HDF5 对象以及支持元数据(metadata)的一个群组结
构。
HDF5 dataset: 数据元素的一个多维数组以及支持元数据(metadata)
任何 HDF5 的群组或数据集或许都有一个对应的属性列表。HDF5 属性是一个用户自定义的
HDF5 结构,能为 HDF5 对象提供附加信息。
- 1 -
国家卫星气象中心(NSMC) HDF5.0 使用简介
使用群组和数据集时在许多方面类似于使用 UNIX 的目录和文件。HDF5 文件里的对象经常通
过它的绝对路径来引用。
/ signifies the root group.
/foo signifies a member of the root group called foo.
/foo/zoo signifies a member of the group foo, which in turn is a member of
the root group.
3、HDF5 应用程序接口(API)
HDF5 函数库提供几个应用程序接口(API)。这些 API 提供用于创建、存取、处理 HDF5
文件和对象的例程。
库函数本身是由 C 程序实现的。为了便于 FORTRAN90 和 Java 程序员的工作,HDF5 包装
的外壳函数也已经用这些语言开发出来了。到写此用户教材时,用 C++包装的外壳函数正在
开发中。本教材只涉及 C 和 FORTRAN 的外壳包装函数。
HDF5 库中所有 C 的例程都有一个前缀形式 H5*开始,这里的*是一个或两个大写字母,
表明有关函数操作对象的类型。而 FORTRAN 外壳包装是以子程序由 h5 开始和_f 结束的。API
列表如下:
API 描述
H5 库函数:H5 函数的通用目的
H5A 注解(Annotation)接口:属性存取(access)和操作例程
H5D 数据集接口:数据集存取和操作接口
H5E 错误接口:错误处理例程
H5F 文件接口:文件存取例程
H5G 群组接口:群组创建和运行例程
H5I 标识号接口:标识号例程
H5P 特性(Property)列表接口:对象特性列表操作例程
H5R 引用接口:引用例程
H5S 数据大小接口:数据大小定义和存取例程
H5T 数据类型接口:数据类型创建和操作例程
H5Z 压缩接口:压缩例程
- 2 -
国家卫星气象中心(NSMC) HDF5.0 使用简介
4、创建 HDF5 文件(CREATING AN HDF5 FILE)
4.1 什么是 HDF5 文件?
HDF5 是一个含有科学数据和支持元数据的二进制文件。HDF5 文件存储对象的基本类型,
即群组和数据集,将在本教材的其它章节讨论。
要创建一个文件,应用程序必须指定一个文件名、文件存取模式、文件创建特性列表、
和文件存取特性列表。
• 文件存取模式(File access mode)::
当创建一个文件时,假如此文件已经存在,文件存取模式就会指定要发生的动作:
o H5F_ACC_TRUNC 说明如果此文件已经存在,当前的内容将被删除以便应用程
序可以用新数据重新写此文件。
o H5F_ACC_EXCL 说明如果此文件存在,打开则会失败。
o 如果此文件不存在,则文件的存取参数被忽略。
o 在所有情况下,对于一个成功创建的文件,应用程序都可以对这个文件进行
读写存取。
注意对于打开已经存在的文件有两种不同的存取模式:
o H5F_ACC_RDONLY 说明应用程序只有读取而没有写入任何数据的权利。
o H5F_ACC_RDWR 说明应用程序有读写的权利。
更详细的信息请参见《HDF 用户指南》里的 The File Interface (H5F)小节和《HDF5
参考手册》中的 H5F: File Interface 小节。
• 文件创建特性列表(File creation property list):
文件创建特性列表常被用于控制文件的元数据。文件的元数据包含有关用户块的大
小、HDF5 库使用的不同文件数据结构大小等。此教材中,缺省的文件创建特性列表
是 H5P_DEFAULT。
用户块(user-block)是被 HDF5 库忽略的位于文件开始的固定长度的数据块。用户
块可以用于存放任何数据或对应用有用的信息。
更详细的内容请参见《HDF 用户指南》中的 The File Interface (H5F) 小节。
• 文件存取特性列表(File access property list):
- 3 -
国家卫星气象中心(NSMC) HDF5.0 使用简介
文件存取特性列表通常被用来控制对文件 I/O 表现采取不同的方法。本教材使用的
缺省文件存取特性列表是 H5P_DEFAULT。
详情见《HDF 用户指南》中的 The File Interface (H5F) 小节。
创建和关闭一个 HDF5 文件的步骤如下:
1. 如果需要,指定文件创建和存取特性列表。
2. 创建文件。
3. 如需要,关闭文件和关闭特性列表
要创建一个 HDF5 文件,调用程序必须包含调用创建和关闭文件。如下例:
C:
file_id = H5Fcreate (filename, access_mode, create_id, access_id);
status = H5Fclose (file_id);
FORTRAN:
CALL h5fcreate_f (filename, access_mode, file_id, hdferr, &
creation_prp=create_id, access_prp=access_id)
or
CALL h5fcreate_f (filename, access_mode, file_id, hdferr)
CALL h5fclose_f (file_id, hdferr)
在 FORTRAN 程序中,文件创建特性列表 creation_prp、和文件存取特性列表 access_prp,
是可选参数;如果使用了缺省值,它们可以被忽略。
4.2 程序例子(Programming Example)
4.2.1 描述(Description)
下面的例子表明如何创建和关闭一个 HDF5 文件。用 C 创建一个名为 file.h5 的文件,
和用 FORTRAN 创建 filef.h5 文件,然后关闭它。
[ C Example ] -- h5_crtfile.c
[ FORTRAN Example ] -- fileexample.f90
注意: 要下载一个 tar 文件,包括所有程序例子和一个 Makefile,请转到 References。
- 4 -