【问题标题】:How to read Attribute Name and Dataset Name from HDF5 file in c++, here I dont know what are the attributes are there in HDF5 file如何在 c++ 中从 HDF5 文件中读取属性名称和数据集名称,这里我不知道 HDF5 文件中有哪些属性
【发布时间】:2018-05-19 21:14:05
【问题描述】:

我有一个 HDF5 文件说 Select.h5 ,但除了文件名,我对文件一无所知,如何使用 c++ 从这个文件名中知道属性名称和数据集名称

【问题讨论】:

  • 嗨,欢迎来到堆栈溢出。请参阅How to Ask 链接以获取有关如何提出问题并相应更新您的问题的更多详细信息。

标签: c++ hdf5


【解决方案1】:

在 C++ 中使用 HDFql (http://www.hdfql.com),您可以打开一个名为“example.h5”的 HDF5 文件,如下所示:

HDFql::execute("USE FILE example.h5");

从那里,检索存储在组“/”(即 HDF5 文件的根目录)中的对象的名称(即组、数据集、属性),如下所示:

HDFql::execute("SHOW /");

要仅检索存储在“/”中的属性,请包含关键字 ATTRIBUTE:

HDFql::execute("SHOW ATTRIBUTE /");

要检索 HDF5 文件中存在的所有对象(从“/”开始),请使用关键字“LIKE **”:

HDFql::execute("SHOW / LIKE **");

要检索 HDF5 文件中存在的所有数据集(从“/”开始):

HDFql::execute("SHOW DATASET / LIKE **");

【讨论】:

  • 这个命令“SHOW”只放置光标,对吧?然后如何访问实际属性并将其打印到控制台,例如使用 std::cout?
  • @MrSquid 是的,SHOW 命令默认将结果放在光标处;但是,您可以将结果重定向到文件或内存中(即用户定义的变量)。示例:SHOW INTO FILE output.txtSHOW INTO MEMORY 00 是分配给预先注册的变量的编号)。要访问实际属性并在控制台中打印它,可以执行以下操作(假设结果存储在游标中):HDFql::cursorFirst();, std::cout << HDFql::cursorGetChar();
【解决方案2】:

我们可以使用 Group ID 来实现这一点,一旦您创建了 HdF5 文件,默认组将创建名称为 '/'(表示根组),

因此,我们可以从该组中使用 DataSet 元数据获取 HDF5 文件的 DataSet 信息,我们可以获取有关属性的信息,包括其名称

【讨论】:

    猜你喜欢
    • 2016-06-18
    • 2017-12-30
    • 2015-08-24
    • 2014-12-19
    • 2020-05-08
    • 1970-01-01
    • 2021-04-23
    • 2015-11-07
    • 2017-12-19
    相关资源
    最近更新 更多