c++ - 获取 H5::DataSet 的 hid_t 和 path-in-file 以使用 H5OCopy
问题描述
我在 HDF5 上使用 C++ 包装库,并希望下拉到 C API 以有效地将数据集从源 HDF5 文件复制到目标文件中。(在不同的道路上,但这不是重点)。
我可以访问目标的低级 ID 和路径,但对于源,我只有 H5::DataSet C++ 包装器实例,而 H5Ocopy()(参见下面的原型)需要源 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参考手册。
推荐阅读
- c++ - 没有数据类型的 Arduino 静态变量声明?
- c# - 文本翻译 API 3.0 版的连接问题 - Microsoft Azure QnA 聊天机器人
- windows - 如何获取excel文件中每个文件的文件名列表和创建日期(分别在一列中)
- javascript -
- java - Gradle 更新时的问题
- javascript - 如何在一个域的沙盒 iframe 中的元素上挂起事件?
- javascript - 承诺问题:ReferenceError:未定义拒绝
- mysql - mysql:从一个函数创建一个表到另一个模式
- django - Django views.py 文件参数传递
- javascript - fs.exists 找不到我的 .mp3 文件(node.js 和 discord.js)