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)