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 временному шагу в каждом выходном файле, что, как мне кажется, вы и просили.

Другие вопросы по тегам