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

基于NCO/CDO提取求和NetCDF指定层并合并变量的技术问询

使用NCO实现NetCDF变量的维度合并与求和

这里有一套用NCO(NetCDF Operators)实现的简洁方案,完全匹配你的需求,全程不需要Python或R:

核心思路

我们会分三步完成:

  1. 从PCT_CFT中提取指定cft层并分别求和
  2. 将求和结果转换为适配PCT_NAT_PFT维度的格式
  3. 把新生成的两层合并到原始变量中

具体命令

1. 计算两个分组的求和结果

首先处理第一组(cft维度的3、4、61、62层,注意NCO用0-based索引,所以对应2,3,60,61):

ncwa -a cft -d cft,2,3 -d cft,60,61 -v PCT_CFT input.nc sum1.nc
  • -a cft:沿cft维度求和
  • -d cft,X,Y:指定要包含的维度索引范围

然后处理第二组(剩余层:5-60、63、64层,对应0-based的4,59,62,63):

ncwa -a cft -d cft,4,59 -d cft,62,63 -v PCT_CFT input.nc sum2.nc

2. 转换求和结果的维度格式

我们需要把求和后仅含lat/lon维度的变量,扩展为包含natpft维度的格式,分别对应第15、16层(0-based索引14,15):

处理第一组求和结果:

ncks -O --mk_rec_dmn natpft -d natpft,14 sum1.nc sum1_exp.nc
ncrename -v PCT_CFT,PCT_NAT_PFT sum1_exp.nc
  • --mk_rec_dmn natpft:添加natpft维度
  • -d natpft,14:指定该维度的索引为14(对应第15层)
  • ncrename:将变量名改为PCT_NAT_PFT以匹配原始变量

处理第二组求和结果:

ncks -O --mk_rec_dmn natpft -d natpft,15 sum2.nc sum2_exp.nc
ncrename -v PCT_CFT,PCT_NAT_PFT sum2_exp.nc

3. 合并所有文件

最后把原始文件和两个扩展后的文件合并,完成PCT_NAT_PFT维度的扩展:

ncat -O input.nc sum1_exp.nc sum2_exp.nc output.nc

更简洁的无临时文件版本

如果不想生成中间文件,可以用bash进程替换直接完成所有操作:

ncat -O input.nc \
<(ncwa -a cft -d cft,2,3 -d cft,60,61 -v PCT_CFT input.nc | ncks --mk_rec_dmn natpft -d natpft,14 - | ncrename -v PCT_CFT,PCT_NAT_PFT -) \
<(ncwa -a cft -d cft,4,59 -d cft,62,63 -v PCT_CFT input.nc | ncks --mk_rec_dmn natpft -d natpft,15 - | ncrename -v PCT_CFT,PCT_NAT_PFT -) \
output.nc

验证结果

执行完命令后,可以用以下命令检查结果是否符合预期:

# 查看维度是否扩展为16
ncdump -h output.nc | grep "natpft"
# 查看新添加的层数据
ncks -v PCT_NAT_PFT -d natpft,14 output.nc

注意事项

  • 确保你的NCO版本支持进程替换(一般较新版本都支持),如果是旧版本,建议先升级NCO
  • 确认原始PCT_NAT_PFT的维度顺序是(natpft, lat, lon),和我们生成的扩展变量一致,否则合并会出错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:15:32