我有一个每日 netcdf 文件(20060101),时间维度有 144 个步骤,所以文件中有 10 分钟的时间步骤。现在我想用 nco 为每 10 分钟的时间步创建一个 netcdf 文件。所以最后它应该创建 144 个文件。
我已经在他们使用的地方找到了类似的问题
ncks -d time,min,max,stride infile.nc outfile.nc
但我不知道如何编写创建这 144 个文件的代码。有人可以帮我弄这个吗?谢谢你的帮助!
我有一个每日 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 个时间步长分割文件,我认为这就是您所要求的。