NetCDF 4.5 NetCDF 文件版本 4 的 Java 问题 + HDF 的旧代码不起作用

Posted

技术标签:

【中文标题】NetCDF 4.5 NetCDF 文件版本 4 的 Java 问题 + HDF 的旧代码不起作用【英文标题】:NetCDF 4.5 Java Problems with NetCDF files version 4 + old code for HDF does not work 【发布时间】:2014-12-16 09:26:21 【问题描述】:

我有 NetCDF 版本 3 的文件。 我使用 Windows 的最新 ncks(2014 年 10 月 1 日发布)重新分块我的文件 ncks -4 --cnk_dmn lat,4 --cnk_dmn lon,4 --cnk_dmn time,512 2014.nc 2014_chunked.nc 什么产生了 NetCDF 版本 4 的 2014_chunked.nc 文件

例如,WCT 可以读取新文件 2014_chunked.nc。 但是,java代码产生

 [ucar.nc2.NetcdfFile] DEBUG Using iosP ucar.nc2.iosp.hdf5.H5iosp
 [ucar.nc2.iosp.hdf5.H5header] ERROR bad version 72 at filePos 22386

并抛出异常

代码是

import ucar.nc2.NetcdfFile;
NetcdfFile nativeNetCDFFile = NetcdfFile.open(fullPath);

我为 JRE 7 使用最新的 NetCDF4.5 http://www.unidata.ucar.edu/downloads/netcdf/netcdf-java-4/index.jsp

我查看了 netcdf jar 文件,发现 Nc4.class 的长度只有几个字节,因此该 jar 没有 NetCDF4 iosp,而对 NetCDF 4 文件使用 H5iosp。

我认为 NetCDF 4.5 java 的新版本必须与我一直使用的 4.2 版本略有不同,因为用于打开 netcdf 4.2 的 HDF5 和 HDF4 文件的相同 java 代码可以正常工作,但 4.5 则不能:

private NetcdfFile file;
....
String path = groupInFile + GROUP_DELIMITER + nameInGroup;
Variable findVariable = file.findVariable(path);

怎么了?

【问题讨论】:

【参考方案1】:

这是 NetCDF 中的一个错误,由于我向 NetCDF 团队报告了错误,自 4.5.4 版以来该错误已得到修复: http://www.unidata.ucar.edu/mailing_lists/archives/netcdf-java/2015/msg00028.html

【讨论】:

以上是关于NetCDF 4.5 NetCDF 文件版本 4 的 Java 问题 + HDF 的旧代码不起作用的主要内容,如果未能解决你的问题,请参考以下文章

检查库版本 netcdf linux

使用 cartopy 绘制来自 netcdf 文件的 4 维变量的数据

循环遍历 netcdf 文件并运行计算 - Python 或 R

访问 netcdf 文件中嵌套组中的变量(文件格式 HDF5)

在 python 中处理非常大的 netCDF 文件

从 netCDF 更快地读取时间序列?