2017-08-10 6 views
0

私は毎日のnetcdfファイル(20060101)を持っています。時間ディメンションは144ステップなので、ファイル内で10分のタイムステップがあります。今度は、ncoを使って10分ごとに1つのnetcdfファイルを作成します。最終的には144個のファイルを作成する必要があります。nco毎日netcdfファイルを10分にカット

私はすでに、彼らが

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

を使用しかし、私はこれらの144個のファイルを作成するコードを記述する方法がわからない同様の質問を見つけました。 誰かがこれを手伝ってくれますか? ご協力いただきありがとうございます!

+0

あなたは何を試しましたか、どこで失敗しましたか?あなたはforループに精通していますか? あなたのコードを書くために他の誰かに頼むよりも、あなたの試行を見せてから助けを得ることが多いでしょう。 – N1B4

答えて

1

見つかりソリューション:

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 
1

私はそれをテストしていませんが、私はあなたがCDOに1行でそれを行うことができると思います。「1」の手段は1でファイルを分割

cdo splitsel,1 input.nc output 

あなたが求めていたと思う各出力ファイルのタイムステップ。

+0

はい、そうですが、時にはcdoがメタデータを変更すると、私はそれを行う別の方法を探していました。 –

+1

CDOは、フィールドが "標準" lat-lonタイプのグリッドにない場合にのみ問題に遭遇します。そうでなければ問題なく動作します。望ましくない場合は、グローバル属性フィールドの履歴にコマンド自体を追加することもできますが、コマンド自体を追加します。 –

関連する問題