我正在尝试将3D数据集写入HDF5文件。写入成功并且尺寸在文件中都是正确的,但是,当使用HDFView工具时,数据混乱,但具有可识别的结构,所以我必须关闭。我无法弄清楚我缺少什么,也无法找到写3D数据的好例子。将3D数组写入HDF5
数据是存储器索引作为这样的连续的块:data[layer][row][col]
或data[layer*rows*cols + row*cols + col]
以下是我使用的代码,其中HDF5_CHECK是抛出异常错误上的宏。
const hsize_t dim[] = { rows, cols, layers };
hid_t space = H5Screate_simple(3, dim, NULL);
hid_t dataset = H5Dcreate(file, "dataset", type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
HDF5_CHECK(dataset);
HDF5_CHECK(H5Dwrite(dataset, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, data));
HDF5_CHECK(H5Sclose(space));
HDF5_CHECK(H5Dclose(dataset));
编辑
我认为这个问题是有关索引。 C++中的数组是正确的。但是,我相信我想将Z,Y,X数据存储为HDF5容器中的Y,X,Z。这必须使用hyperslabs是可能的,但我不清楚如何
编辑2
由于数据具有结构,我可以如HDFView图像查看数据。以下应有助于显示问题:
编辑3
接触HDF组,发现了转移的尺寸是不可能在目前的执行情况。它必须在写入数据集之前完成。
如何'data'声明?每个元素的原始类型是什么? –
该类型实际上是模板化的。'data'被声明为一个向量,然而,在这个方法的上下文中'const T *' – steveo225
由于数据是模板化的,你如何定义'type'?我们是否也可以看到数据样本及其“混乱”形式? –