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 次。这些命令打开它一次,填充它,然后关闭它。
我似乎无法正确组合数千个 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 次。这些命令打开它一次,填充它,然后关闭它。