You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用nctoolkit重网格化NetCDF文件时遇数值转换错误求助

问题描述

我用逐日数据通过ensemble_mean计算月平均,得到月平均文件后,以另一文件为目标网格,将0.1度分辨率的数据重网格化至0.25度。集合平均过程正常,但部分月份重网格化时出现如下错误:

ValueError: CDO error: Error (cdf_put_vara_double): NetCDF: Numeric conversion not representable. Tip: check if missing values are incorrectly set to large actual values!

其他月份重网格化可正常完成,使用的代码如下:

import nctoolkit as nc

ds = nc.open_data("/home/omi_data/HCHO/data/2006/12/*.nc4")
ds1=nc.open_data("/home/omi_data/NO2/data/2006/07/OMI-Aura_L3-OMNO2d_2006m0702_v003-2019m1121t032327.he5.ncml.nc4")
ds.ensemble_mean('key_science_data_column_amount')
ds.regrid(ds1)
ds.to_nc('/home/omi_data/HCHO/data/2006/monthly_average/HCHO_0612.nc4')

解决思路与方案

  • 检查数据极值与缺失值:错误核心是数值转换无法完成,大概率是异常月份的数据里存在超出目标数据类型范围的极端值,或是缺失值被错误设为过大/过小的数。先查看数据统计特征:

    # 查看整体数据统计信息
    ds.describe()
    # 单独检查目标变量的极值
    print(ds.variables['key_science_data_column_amount'].min())
    print(ds.variables['key_science_data_column_amount'].max())
    
  • 重置异常缺失值:如果发现缺失值是极端数值(远超出正常数据范围),手动修正缺失值设置:

    # 根据数据实际范围调整阈值,比如将大于1e18的值设为缺失
    ds.set_missing("key_science_data_column_amount", above=1e18)
    
  • 强制指定输出数据类型:重网格化后保存时,显式指定数据类型避免转换冲突:

    ds.to_nc('/home/omi_data/HCHO/data/2006/monthly_average/HCHO_0612.nc4', dtype='float64')
    
  • 分步执行排查问题:先保存月平均中间文件,再单独做重网格化,确认是否是集合平均后的文件属性异常:

    # 先保存月平均结果
    ds.to_nc('/home/omi_data/HCHO/data/2006/monthly_average/tmp_HCHO_0612.nc4')
    # 重新打开后执行重网格化
    ds_tmp = nc.open_data('/home/omi_data/HCHO/data/2006/monthly_average/tmp_HCHO_0612.nc4')
    ds_tmp.regrid(ds1)
    ds_tmp.to_nc('/home/omi_data/HCHO/data/2006/monthly_average/HCHO_0612.nc4')
    

内容的提问来源于stack exchange,提问作者jairovs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 04:46:46