在组中创建不透明数据集
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 我无法直接设置。以上是关于在组中创建不透明数据集的主要内容,如果未能解决你的问题,请参考以下文章