NCO 中 Appending/combining 数千 (42000) 个 netCDF 文件的更快方法

Faster way of Appending/combining thousands (42000) of netCDF files in NCO

我似乎无法正确组合数千个 netCDF 文件 (42000+)(大小为 3gb,对于这个特定的 folder/variable)。我要组合的主要变量具有 (6, 127, 118) 的结构,即 (time,lat,lon) 由于文件数量太长,我将每个文件 1 个附加 1 个。

我试过:

for i in input_source/**/**/*.nc; do ncrcat -A -h append_output.nc $i append_output.nc ; done

但是这个方法似乎真的很慢(kb/s 的顺序,并且随着附加的文件越来越多,速度似乎越来越慢)并且还发出警告:

ncrcat: WARNING Intra-file non-monotonicity. Record coordinate "forecast_period" does not monotonically increase between (input file file1.nc record indices: 17, 18) (output file file1.nc record indices 17, 18) record coordinate values 6.000000, 1.000000

基本上只是将变量 "forecast_period" 增加 1-6 n 次。 n = 42000 个文件。即 [1,2,3,4,5,6,1,2,3,4,5,6......n] 尽管有这个警告,我仍然可以打开文件并且 ncrcat 做它应该做的,它只是很慢,至少对于这个特定的方法

我也试过添加选项:

--no_tmp_fl

但这给出了一个错误:

ERROR: nco__open() unable to open file "append_output.nc"

下方附有完整错误

如果有帮助,我将在 windows 10 中使用 wsl 和 ubuntu。 我是 bash 的新手,如有任何意见,我们将不胜感激。

我会使用 CDO 来完成这项任务。鉴于文件数量巨大,建议首先按时间对它们进行排序(假设您想沿时间轴合并它们)。之后,您可以使用

cdo cat *.nc outfile 

这些命令中的任何一个都应该有效:

ncrcat --no_tmp_fl -h *.nc 

ls input_source/**/**/*.nc | ncrcat --no_tmp_fl -h append_output.nc

您的原始命令很慢,因为您打开和关闭输出文件 N 次。这些命令打开它一次,填充它,然后关闭它。