首页 > 解决方案 > 如何在多个 netcdf 中合并/组合时间变量

问题描述

我有很多具有相同纬度和经度维度的海面温度 NetCDF 文件,但时间变量不同。我想尝试通过组合时间变量将其组合成 1 个 NetCDF 文件,因为每个 netcdf 文件中的时间变量都是连续的

有没有更有效的方法?因为在 CDO(气候数据操作员)中我不能循环

以下是我使用的文件名示例

sstdas_19810101.nc
sstdas_19810102.nc
sstdas_19810103.nc
sstdas_19810201.nc
sstdas_19810202.nc
sstdas_19810203.nc
...
sstdas_20171203.nc

带有模式 sstdas_(year)(month)(dekad)

标签: rnetcdfnetcdf4cdo-climate

解决方案


您可以将 mergetime 参数与 CDO 一起使用:

cdo mergetime sstdas_*.nc merged_file.nc

请注意,CDO 会为该操作一次性打开所有文件,并且在某些系统上,同时打开文件的数量是有限制的,在这种情况下,CDO 会抛出错误。在这种情况下,您将需要循环,您可以使用 bash 循环对 CDO 执行此操作,我建议一次尝试一年,然后合并这些:

#!/bin/bash
for year in {1981..2007} ; do
  cdo mergetime sstdas_${year}??.nc sstdas_${year}.nc
done 
cdo mergetime sstdas_????.nc sstdas_wholeseries.nc

注意我使用单字母通配符“?” 更严格,避免将每日和每年的文件与这两个合并混合。


推荐阅读