Nco сократить ежедневный файл Netcdf до 10 минут файлов
У меня есть ежедневный файл netcdf (20060101), и измерение времени имеет 144 шага, поэтому 10 минутных временных шагов в файле. Теперь я хочу создать один файл netcdf для каждого шага по 10 минут с помощью nco. Таким образом, в конце он должен создать 144 файла.
Я уже нашел похожие вопросы, где они используют
ncks -d time,min,max,stride infile.nc outfile.nc
Но я не знаю, как написать код для создания этих 144 файлов. Может кто-то помочь мне с этим? Спасибо за вашу помощь!
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
Я не проверял это, но я думаю, что вы можете сделать это одной строкой в CDO:
cdo splitsel,1 input.nc output
"1" означает разделение файла по 1 временному шагу в каждом выходном файле, что, как мне кажется, вы и просили.