在 Windows 上将 NetCDF 转换为 HDF5 的最简单方法是啥

Posted

技术标签:

【中文标题】在 Windows 上将 NetCDF 转换为 HDF5 的最简单方法是啥【英文标题】:what is the easiest way to convert NetCDF to HDF5 on windows在 Windows 上将 NetCDF 转换为 HDF5 的最简单方法是什么 【发布时间】:2013-06-24 07:36:48 【问题描述】:

在这个Wiki article中写着

NetCDF 用户可以创建 HDF5 文件

但我很难找到如何实际进行这种转换。我唯一能找到的是 http://www.hdfgroup.org/HDF-FAQ.html#convnetcdf 。这里是这样写的:

有一个来自 Fortner Software 的名为 ncdf2hdf 的 Windows 可执行文件 (已失效)进行转换。它不再可用,但可能 可以通过网络搜索找到。然而,它的 HDF 文件 据报道,生成器缺少某些结构 在上述路线产生的那些中找到。

在这里我不应该提到,在网上很难找到这个 ncdf2hdf。

到目前为止,我发现我可以使用python读取带有http://gfesuite.noaa.gov/developer/netCDFPythonInterface.html或https://code.google.com/p/netcdf4-python/的netcdf文件,但是有没有更简单的方法。

【问题讨论】:

人们经常尝试反其道而行之,所以通常无聊的问题是关于您的问题:您为什么要这样做? HDF 常见问题链接解释了您进行转换所需的所有内容。不要忘记他们正在谈论同一程序的不同版本 ncdump/ncgen,他们将其重命名为 hdf_ncgen 以作为他们的版本 code.google.com/p/netcdf4-python 非常适合该任务,但您也可以使用 unidata 的 netcdf 命令行实用程序或更高级的 nco 操作符实用程序,并对 netcdf 数据执行任何操作。如果您出于某种原因想要进行转换只是为了能够使用 pytables,请三思而后行,在 NetCDF 和 HDF 之间进行任何转换时,您将丢失元数据描述,这将使您的数据更难处理。 是的,我知道,如果你想从 Python 接口 netcdf,那是正确的工具 【参考方案1】:

首先,查看您的文件使用的是哪种 netCDF 格式。如果您的系统上安装了 netCDF,最简单的方法是使用 ncdump:

ncdump -k foo.nc

如果ncdump返回netCDF-4netCDF-4 classic model,那么恭喜你,你已经有了一个HDF文件,因为netCDF-4是使用HDF5作为存储层实现的netCDF数据模型。这些文件可以通过 HDF 库版本 1.8 或更高版本以及据我所知 pytables 准备好。

如果 ncdump 返回 classic64-bit offset,那么您使用的是 netCDF-3,需要转换为 netCDF-4(因此需要转换为 HDF)。好消息是,如果你安装了 netCDF,你可以很容易地进行转换:

nccopy -k 4 foo3.nc foo4c.nc

请参阅netCDF FAQ 了解更多详情,特别是this 条目。

也就是说,值得花时间学习如何使用 netCDF-4-python 来完成这个任务而无需中间转换(不要被名字欺骗了,netCDF-4-python 可以读取 netCDF-3格式,以及大多数 netCDF-4 文件)。 netCDF-3 仍然被广泛使用,即使在气象界之外,这个额外的箍在一段时间后会变得很麻烦。更重要的是,如果您的文件非常大,转换可能会变得非常耗时。

【讨论】:

以上是关于在 Windows 上将 NetCDF 转换为 HDF5 的最简单方法是啥的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Windows 上将 Qt QString 转换为 LPCTSTR

如何在 Windows 上将 kivy 应用程序 (.py) 转换为 apk?

C:在处理 32 位程序时,在 Windows 64 位机器上将 int 转换为 int* 时出现警告

如何在 netcdf 文件中将固定尺寸尺寸转换为无限制尺寸

在命令行上将 XLS 转换为 CSV

将 netcdf 时间变量转换为 R 日期对象