将 hdf5 转换为 netcdf 并重命名尺寸

Convert hdf5 to netcdf and rename dimensions

我有一组具有以下内容的 HDF5 文件 header:

netcdf control-A-2017-05-12-090000-g1 {
dimensions:
        phony_dim_0 = 16 ;
        phony_dim_1 = 16 ;
        phony_dim_2 = 200 ;
        phony_dim_3 = 2 ;
        phony_dim_4 = 1 ;
        phony_dim_5 = 4 ;
variables:
        ...

由于是 HDF5,维度创建为 phony_dim_x。在这种情况下,phony_dim_0phony_dim_1 分别是 yx 坐标。我想适当地重命名尺寸。由于无法在 HDF5 中重命名维度(因为它们在技术上不存在),我需要先转换为 netcdf。为此,我使用 ncks in.h5 out.nc.

然而,转换文件的header信息是:

netcdf control-A-2017-05-12-090500-g1 {
dimensions:
        phony_dim_0 = 16 ;
        phony_dim_1 = 200 ;
        phony_dim_2 = 2 ;
        phony_dim_3 = 1 ;
        phony_dim_4 = 4 ;
variables:
        ...

这是重要的部分:两个 phony_dim_[0,1] 维度已合并为一个维度 phony_dim_0。我认为这是因为它们具有相同的值,因此 netcdf 转换假定它们相同。

在 hdf5 文件中列为的变量 ACCPA(phony_dim_0, phony_dim_1) ; 现在是 ACCPA(phony_dim_0, phony_dim_0) ;,有两个相同的维度。

因此,我无法单独重命名维度。如果我这样做 ncrename -d phony_dim_0,y out.nc,我会得到 ACCPA(y, y) ;

任何人都可以指出正确的方向来解决这个问题吗?

问题最终出现在 ncks。使用 ncks 转换文件会导致重复尺寸(例如 ACCPA(phony_dim_0, phony_dim_0) ;

改用nccopy,转换后的 netCDF 文件没有产生重复的维度(ACCPA(phony_dim_0, phony_dim_1) ;