NetCDF-C 4.8.1定义双无限维度变量报错:NC_UNLIMITED size already in use问题求助
解决NetCDF-C多无限维度创建报错的问题
我之前也踩过这个坑!你遇到的NetCDF: NC_UNLIMITED size already in use错误,核心原因是你默认创建的是经典NetCDF格式(NetCDF-3兼容),而这种格式确实只允许一个无限维度——哪怕NetCDF-4本身支持多无限维度,格式不对也用不了。
解决方案:指定创建NetCDF-4格式文件
修改你的nc_create调用,加上NC_NETCDF4标志,让库生成NetCDF-4/HDF5格式的文件:
// 注意添加NC_NETCDF4标志,和NC_CLOBBER用位或组合 if ((rval = nc_create(out_file_nm, NC_CLOBBER | NC_NETCDF4, &out_ncid))) err(rval);
额外说明
- NetCDF-C的
nc_create默认生成经典格式,这是为了向下兼容NetCDF-3。只有显式指定NC_NETCDF4,才能启用NetCDF-4的所有特性,包括多无限维度。 - 你的NetCDF-C 4.8.1版本默认应该已经编译了NetCDF-4支持,如果之前编译时特意关闭了HDF5后端,可能需要重新编译库并开启NetCDF-4选项。
- 用NetCDF-4格式创建的文件,后续读写多无限维度变量的逻辑和单个无限维度一致,你可以正常定义维度、变量,然后动态扩展这两个无限维度的长度。
内容的提问来源于stack exchange,提问作者Redshoe




