C语言 如何在现有文件中获取HDF5块尺寸?

o4tp2gmn  于 2023-04-19  发布在  其他
关注(0)|答案(2)|浏览(177)

我正在编写一些代码来删除现有HDF5文件的部分内容(一些维度,一些数据集等)。我希望新的HDF5文件与现有HDF5 API具有相同的块大小,但我似乎找不到任何地方可以检索当前块维度。有H5P_GET_CHUNK函数,但是它只在数据集创建时检索块维度。还有H5D_GET_CHUNK_STORAGE_SIZE函数,它只检索总大小(而不是维度)。
有没有一种方法可以从我丢失的现有数据集中检索块维度(而不仅仅是总大小)?

j5fpnvbx

j5fpnvbx1#

你可能想看看HDFql,因为它是一种(更)简单的操作HDF5文件的方法,特别是获取特定数据集的存储尺寸(即块大小)。例如,如果你想获取名为dset的数据集的存储尺寸,请执行以下操作:

SHOW STORAGE DIMENSION dset

有关此操作的更多信息,请参见reference manual的第6.7.15节。

eqqqjvef

eqqqjvef2#

(接自https://support.hdfgroup.org/ftp/HDF5/examples/examples-by-api/hdf5-examples/1_8/C/H5D/h5ex_d_chunk.c)您可以通过以下命令从现有数据集获取数据创建属性列表:

hid_t dcpl = H5Dget_create_plist(ds_id);

您可以检查布局是否使用

H5D_layout_t layout = H5Pget_layout(dcpl);

如果是的话,你可以用

if (layout == H5D_CHUNKED)
{
    hsize_t chunk_dims_out[ndims];
    H5Pget_chunk(dcpl, ndims, chunk_dims_out);
}

相关问题