HDF5 与 NetCDF 对比 —— 格式、数据模型和工具链差异

2026/08/05

HDF5 与 NetCDF 经常一起出现,因为 NetCDF-4 使用 HDF5 容器存储数据。但它们不是同一种格式。HDF5 是通用的层级存储系统;NetCDF 在其上提供更受约束的科学数据模型与约定,让不同领域工具更容易交换变量。

简短结论

HDF5NetCDF
主要目标通用层级科学数据存储可移植的数组型科学数据
结构任意 group 与 dataset维度、变量、坐标与属性
常见扩展名.h5.hdf5.he5.nc.nc4.cdf
约定由应用自行定义气候与地学常用 CF 约定
主要 APIlibhdf5、h5pynetCDF-C、netCDF4-python、xarray
两者关系NetCDF-4 使用的存储层更高层数据模型;NetCDF-4 基于 HDF5

HDF5 是灵活的层级结构

HDF5 文件很像文件系统。group 可以包含更多 group、dataset、链接与属性。dataset 的命名和布局由应用自行定义。这种灵活性适合仪器数据、仿真检查点、显微图像、NeXus 与自定义数据产品。

代价是语义不统一。形状为 [12, 37, 721, 1440] 的 dataset 并不会天然说明每个轴分别是时间、气压、纬度还是经度。生产者需要通过属性、维度标尺或外部约定表达这些含义。

需要直接检查层级时,可以使用 HDF5 查看器

NetCDF 提供科学数据模型

NetCDF 围绕命名维度、坐标变量、数据变量和属性组织数据。在气候与地球科学中,CF 约定进一步标准化单位、坐标轴、缺失值与网格映射等元数据。

这种更强的数据模型让应用无需了解生产仪器,也能理解 temperature(time, level, lat, lon) 这样的变量。NetCDF 查看器 会直接展示这些维度与变量。

NetCDF-4 位于哪里?

需要区分两类存储:

  • NetCDF-3 classic 与 64-bit-offset 文件使用原始 NetCDF 二进制布局,并不是 HDF5。
  • NetCDF-4 文件底层使用 HDF5,并增加 NetCDF 规则与元数据。

HDF5 库可以打开 NetCDF-4 容器,但看到的是原始 group、dataset、属性与内部元数据。理解 NetCDF 的库会重建预期的维度与变量。反过来,任意 HDF5 文件也可能使用 NetCDF 数据模型无法表达的结构。

应该选择哪一种?

重视互操作性时选择 NetCDF:气候模式、海洋数据、再分析资料,以及 xarray、Panoply、CDO、NCO 或 GIS 软件都受益于一致维度和 CF 元数据。

需要应用专属层级、混合 dataset、自定义链接,或者所在领域标准本身基于 HDF5 时,选择 HDF5。

转换时不要盲目展平整个容器。先检查结构,选择一个数值 dataset 或变量,再用 HDF5 转 CSVHDF5 转 JSONNetCDF 转 CSV 导出相关切片。

常见问题

可以把 HDF5 文件直接改名为 .nc 吗?

不可以。修改扩展名不会增加 NetCDF 数据模型或必需元数据。即使底层都使用 HDF5 库,NetCDF 工具仍可能拒绝通用 HDF5 文件。

HDFView 能打开 NetCDF-4 吗?

通常可以,因为它的存储容器是 HDF5。但 HDFView 展示的是底层层级,而理解 NetCDF 的查看器会提供更清晰的变量模型。

NetCDF-3 已经过时了吗?

没有。NetCDF-3 依然简单、可移植且广泛支持。它缺少 HDF5 压缩和 group 等 NetCDF-4 特性,但在生产科学工作流中仍很常见。

GribBox

GribBox

HDF5 与 NetCDF 对比 —— 格式、数据模型和工具链差异 | 博客