2

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

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

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

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

4

2 回答 2

2

找到解决方案:

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
于 2017-08-11T05:56:01.227 回答
2

我还没有测试过,但我认为你可以用 CDO 中的一行来做到这一点:

cdo splitsel,1 input.nc output

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

于 2017-08-12T13:49:49.160 回答