在组中创建不透明数据集

Posted

技术标签:

【中文标题】在组中创建不透明数据集【英文标题】:Creating opaque datasets in a group 【发布时间】:2012-03-29 16:36:01 【问题描述】:

我不明白为什么我的代码给了我 HDF5 库异常。它指向createScalarDS 方法作为错误的来源。但我相信这种方法确实存在。谁能告诉我为什么这段代码无法创建不透明的数据集?修改应该是什么?谢谢。

public static void createFile(Message message) throws Exception 
    // retrieve an instance of H5File
    FileFormat fileFormat = FileFormat
            .getFileFormat(FileFormat.FILE_TYPE_HDF5);
    if (fileFormat == null) 
        System.err.println("Cannot find HDF5 FileFormat.");
        return;
    

    // create a new file with a given file name.
    H5File testFile = (H5File) fileFormat.create(fname);
    if (testFile == null) 
        System.err.println("Failed to create file:" + fname);
        return;
    

    // open the file and retrieve the root group
    testFile.open();
    Group root = (Group) ((javax.swing.tree.DefaultMutableTreeNode) testFile
            .getRootNode()).getUserObject();
    Group g1 = testFile.createGroup("byte arrays", root);

    // obtaining the serialized object
    byte[] b = serializer.serialize(message);
    int len = b.length;
    byte[] dset_data = new byte[len + 1];

    // Initialize data.
    int indx = 0;
    for (int jndx = 0; jndx < len; jndx++)
        dset_data[jndx] = b[jndx];
    dset_data[len] = (byte) (indx);

    // create opaque dataset ---- error here…
    Datatype dtype = testFile.createDatatype(Datatype.CLASS_OPAQUE,
            (len * 4), Datatype.NATIVE, Datatype.NATIVE);
    Dataset dataset = testFile.createScalarDS("byte array", g1, dtype,
            dims1D, null, null, 0, dset_data);// error shown in this line

    // close file resource
    testFile.close();

【问题讨论】:

该行显示什么错误? 它给了我一个 HDF5LibraryException 【参考方案1】:

我对 HDF5 没有把握。

但是,你不能直接使用 CLASS_OPAQUE

不透明数据类型是用户定义的数据类型,其使用方式与内置数据类型相同。创建不透明类型检查链接:

http://idlastro.gsfc.nasa.gov/idl_html_help/Opaque_Datatypes.html

创建数组数据类型对象:

Result = H5T_ARRAY_CREATE(Datatype_id, Dimensions) 

示例:

http://idlastro.gsfc.nasa.gov/idl_html_help/H5F_CREATE.html

【讨论】:

@Riddhish..我能够在文件中正常创建不透明数据集。但我希望在一个文件中创建多个数据集。由于数据集与文件的比例是 1:1,我想为您使用 groups 可以在一个组下拥有多个数据集。所以我试图实现 CLASS_OPAQUE 以在组下创建和不透明的数据集,但显然有一些 library exception 我无法直接设置。

以上是关于在组中创建不透明数据集的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django 中创建不区分大小写的数据库索引?

如何在 Pig 中创建不区分大小写的匹配?

怎样在arcengine中创建一个要素数据集。建立一个要素数据集,数据集下面建四个要素,分别是线要素和面要素

在 HDF5 文件中创建和访问数据集

逐行在python中创建大型数据集

在 bigquery 中创建数据集时,谷歌 App 引擎出错