2

我似乎无法正确组合数千个 netCDF 文件(42000+)(对于这个特定的文件夹/变量,大小为 3gb)。我要组合的主要变量具有 (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 的新手,任何评论都将不胜感激。

在此处输入图像描述

4

2 回答 2

1

这些命令中的任何一个都应该起作用:

ncrcat --no_tmp_fl -h *.nc 

或者

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

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

于 2019-08-11T17:35:35.063 回答
1

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

cdo cat *.nc outfile 
于 2019-08-11T06:25:42.343 回答