NetCDF
cdo

CDOで特定の変数名の変数を切り出す

CDO使ってる人っているの?

そもそも一体何人がCDOを使っているかは微妙なところである。
しかし, 巨大なnetCDFファイルをncl(WRFユーザ)や, R(統計やるマン), python(流行)で直接触りに行くのは...という人も多い。そこで,
raw data -> CDO processing -> main processing というフローをとると結構楽になるのではという考えで, CDOを使い始めた。そのための備忘録シリーズ。

今回のターゲット

  • 特に今回は, プリプロセス的な使い方としてCDOを使って特定の変数を切り出す方法について説明していく。

環境等

  • CDO自体は, 特にインストールが難しい物でもない(特にnetCDFのversion等を指定しなければ)ので割愛する。
  • 使用環境 : Ubuntu 18.04, CDOはapt install.

コード例

マニュアル的には,

cdo selname,"varname" infile outfile

ということらしい。ただ, こう言われてもわかりにくいのが世の常である。
例えば, WRFoutにおける地上2mの気温(変数名T2)を切り出すには,

cdo selname,T2 infile.nc outfile.nc

とする。変数名はダブルクオーテーションでくくってもくくらなくてもOKなようだ.
また, 複数の変数を一度に指定して切り出しもできる。この場合は, selnameに続く変数名をコンマで区切って繋げていく。例えば, 地上気温に加えて地上風速u成分(変数名U10)が欲しいワガママさんは,

cdo selname,T2,U10 infile.nc outfile.nc

とすると, T2とU10を格納したnetCDFファイルを出力することができる。
ちなみにこの関数はparallelizeの対象となっていないので, Pオプション(openMP並列)は無意味になってしまうので注意。

終わりに

まあ, 備忘録シリーズなので, 情報は多くないが, "CDO 変数 切り出し"とかで検索した場合の候補くらいになって, マニュアルの和訳がたまたまあってラッキーくらいの話になってくれれば良いのではないだろうか(既視感)。