我在 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/