Netcdf java library for reading HDf5 错误

Netcdf java library for reading HDf5 error

我是 netcdf 库的新手,我目前正在使用它从 java 中的 hdf5 文件中读取元数据。看了之后,觉得netcdf是个不错的库,适合自己用,就用了。

但是在第一步中当我尝试读取文件时它抛出一个错误

LOGGER.debug("Inside Try");
//InputStream fileStream = new FileInputStream(h5File);
                //parser.parse(fileStream, handler, metadata);

  LOGGER.debug("path is :"+ h5File.getPath());
   NetcdfFile hf5File = NetcdfFile.open(h5File.getPath());



    LOGGER.debug("Got NetCdFile");

我假设问题发生在我尝试打开它时,正如它所说的那样:

Inside Try 13:42:04.393 [main] DEBUG e.k.n.c.m.e.HDF5MetadataExtractor - path is :/var/www/webdav/admin/1151/data/XXXX.h5 13:42:04.495 [main] DEBUG ucar.nc2.NetcdfFile - Using IOSP ucar.nc2.iosp.hdf5.H5iosp 13:42:04.544 [main] ERROR ucar.nc2.iosp.hdf5.H5header - shape[0]=0 must be > 0

我的 Hd5f 是一个二维整数数组,我对数组本身不感兴趣,但对与文件关联的元数据组感兴趣。

NetCDF-4 创建 HDF5 文件,这是真的。 HDF5库可以读取NetCDF-4生成的HDF5格式的文件,但是NetCDF-4不能读取任意的HDF5文件。

您可能在 Netcdf-Java 中发现了错误,或者您有一个奇怪的 HDF5 文件。您确认此文件没有以某种方式损坏吗?我会尝试的事情: - 使用 C 实用程序 'ncdump -h' 检查 header - 使用 HDF5 C 实用程序 'h5dump -H' 通过 HDF5

检查文件

如果这两个命令都给出了合理的输出,那么问题可能在于 netcdf-java。

Netcdf-Java 是一个纯粹的 Java 实现,可以 读取 大多数 HDF5 文件,详细信息在这里:http://www.unidata.ucar.edu/software/thredds/current/netcdf-java/CDM/index.html#HDF5

如果您发现失败,请向 netcdf-java@unidata.ucar.edu 提交错误报告(和文件!)(必须在此处注册:http://www.unidata.ucar.edu/support/index.html#mailinglists)。但首先确保你已经尝试过最新版本(目前是 4.6.3)。

Netcdf-Java 可以通过 JNI 接口向 netcdf-4 C 库写入 netCDF-4 文件(HDF5 文件)。 HDF5 java 库也是 JNI 接口,除了直接连接到 HDF5 C 库。 HDF5 java 库不能写入 netCDF4 文件(除非你 真的 知道你在做什么)因为 HDF5 没有实现共享维度,这对 netCDF 数据模型是必不可少的。

对于地球科学,这导致了您应该编写 netCDF-4 而不是直接 HDF5 的论点(免责声明:由我提出),详情请参见:http://www.unidata.ucar.edu/blogs/developer/en/entry/dimensions_scales.

好吧,这可能比您想要的要多;^)