如何在多个 netcdf 中合并/组合时间变量

How to merge/ combine time variable in multiple 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)

您可以将 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

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