nco 将每日 netcdf 文件削减为 10 分钟文件

nco cut daily netcdf file to 10 minute files

我有一个每天的 netcdf 文件 (20060101),时间维度有 144 个步长,所以文件中有 10 分钟的时间步长。现在我想用 nco 为每 10 分钟的时间步长创建一个 netcdf 文件。所以最后它应该创建 144 个文件。

我已经在他们使用的地方找到了类似的问题

ncks -d time,min,max,stride infile.nc outfile.nc

但我不知道如何编写代码来创建这 144 个文件。 有人可以帮我弄这个吗? 感谢您的帮助!

找到解决方案:

start=1131580800 # first time step in seconds
for f in *_test.nc; do #$files
    echo 'Processing' $f 
    for i in {0..17}; do
    time=$(expr $start + 600 \* $i)                   #  calculates the next time step --> 600s correspond to 10 minute steps I wanted to have
    time_new=$(date -d @$time '+_%H%M')               # extracting the time variable from my file and convert it to use them in the file names
    outfile=$(echo $f|sed "s/_level2/$time_new/g")
    ncks -d time,$i,$i $f $outfile                    # split my original file to 10 min steps
    done
done

我还没有测试过,但我认为你可以在 CDO 中用一行来完成:

cdo splitsel,1 input.nc output

“1”表示在每个输出文件中用 1 个时间步分割文件,我认为这正是您所要求的。