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.
好吧,这可能比您想要的要多;^)
我是 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.
好吧,这可能比您想要的要多;^)