HDF .h5文件快速入门

@vrqq  February 12, 2020

Part0 文件结构

【图】
如上图所示:

  • 每个.h5文件打开内部有很多文件夹,文件夹叫 Group
  • 每个文件夹(Group)下面可以有很多小数据表(最末一级),这些数据表叫 Dataset
  • 每个数据表(Dataset) 内的数据可以是 一维表格(类似.csv),三维图像,n-dims数据。。。介绍几个概念

    • DataSpace 数据空间,可以认为是在桌面上,按住鼠标左键,拉一个框框。
    • 每个数据表有一个默认的DataSpace,就是该数据表内全部数据这么大的选区,space = dataset.getSpace()取出
    • DataSpace 不持有数据,只表示一个选择框。选择框的大小就是“包含维度、每一维度多长”这些信息
    • 我们又可以space.getSimpleExtentNdims()得当前空间维度(int)
    • 在同一个Dataset里,每一个维度的DataType是一样的(比如都是int,都是double)
    • DataSpace之间可以做And Or等等运算,维度相同即可(例如:三维方块 and 三维长方体)
  • 数据库并不主动解析其内部的数据,他们不管数据是int,还是char*,还是什么其他的,数据库认为他们就是n-bytes的块儿。

    • 但我们人为用 DataType 数据结构去“解析它”
    • 可以是int,也可以是 comptype混合型(混合即struct)
    • 举例:.csv数据表,是一维数据,表头就是comptype型,有多少行数据(row)这一维度就有多长。
    • 一个dataset里面的所有维度上(dimension)的type都是相同的!

Part1 代码

  • 建议直接装编译好的lib
  • 官网下载源码里面有sample (c / c++两套代码)
  • 遍历dataset:H5Literate(id, H5_INDEX_NAME, H5_ITER_INC, NULL, callback_func, userarg_to_callback);
  • 也可以用第三方库(注意看licence)

添加新评论