c++ - 获取 H5::DataSet 的 hid_t 和 path-in-file 以使用 H5OCopy

标签 c++ hdf5

我在 HDF5 上使用 C++ 包装器库,并希望下拉到 C API
有效地将数据集从源 HDF5 文件复制到目标文件中。 (在不同的道路上,但这不是重点)。

我可以访问目标的低级 ID 和路径,但对于
源我只有 H5::DataSet C++ 包装器实例,而 H5Ocopy()(参见下面的原型(prototype))需要包含数据集 的源 HDF5 文件的 hid_t和 它在该源文件中的路径。

有没有办法从 H5::DataSet 实例中获取丢失的 file-hid_t 和 dataset-path?

直觉上我认为一定有,但到目前为止我还没有找到它们。 --DD

PS:从它们已知的角度来看,通过 API 层来显示这些 id/path 将是非常困难的,因为想要执行 H5OCopy 的代码在时间和空间上非常遥远。

H5_DLL herr_t H5Ocopy(
  hid_t src_loc_id, const char *src_name,
  hid_t dst_loc_id, const char *dst_name,
  hid_t ocpypl_id, hid_t lcpl_id
);

最佳答案

如果这是您的选择,请查看 HDFql因为它可以极大地减轻将数据集从一个 HDF5 文件复制到另一个文件的方式。例如,复制一个名为 dset 的数据集来自文件 one.h5入档two.h5只需使用 HDFql 在 C++ 中执行以下操作:

HDFql::execute("COPY DATASET one.h5 dset TO two.h5 dset");

此外,您可以复制 dset进入另一个组(来自文件 two.h5 )并给数据集另一个名称,例如:
HDFql::execute("COPY DATASET one.h5 dset TO two.h5 /group/new_dset");

有关更多信息和示例,请查看 HDFql reference manual .

关于c++ - 获取 H5::DataSet 的 hid_t 和 path-in-file 以使用 H5OCopy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59752718/

相关文章:

c++ - "A::B::C v;"是否意味着 A 和 B 是命名空间而 C 是一个类?

c++ - boost::bind 在存储时不保存部分参数

python - HDFStore 启动停止不起作用

c++ - 模板类的自动内存池功能

C++等待系统调用

python - 如何将 float 的 2D std vector 写入 HDF5 文件,然后在 python 中读取它

python - 通过 h5py 在 hdf5 中进行 blosc 压缩

hdf5 - 向 HDF5 文件添加结构 - 相当于 HDF5 的 NetCDF "Conventions"

python - h5py 中的组是否保留其成员添加的顺序?

c++ - 使用 cudaHostAlloc 对我的情况有好处