気象系技術メモ

気象データ解析のための技術まわりのメモ。

GrADsのコントロール(ctl)ファイルについて

GrADsで格子点データを描画する際には、データそのものを保存しておくバイナリファイルと、それがどのようなデータかを記しておくコントロールファイル(ctlファイル)というものが必要です。

自分でデータを作る場合にはこのコントロールファイルも自作する必要があるので、以下その中身についてまとめます。

なお、公式ドキュメントでctlファイルの仕様は網羅されていますので、詳しく知りたい方はこちらを参照してください。
cola.gmu.edu

たくさん設定する項目がありますが、そんなに使わないものも多いので、よく使うところをかいつまんで紹介しようと思います。



コントロールファイルの中身はこんな感じです。

DSET hoge.bin
UNDEF 9.96921e+36
OPTIONS yrev
XDEF 288 LINEAR 0 1.25
YDEF 145 LINEAR -90 1.25
ZDEF 1 LEVELS 500
TDEF 20 LINEAR 12Z03JUL2020 6hr
VARS 2
var1_name 0 99 var1_description
var2_name 9 99 var2_description
ENDVARS

それぞれの項目が何を示しているのかは以下の通り。

DSET

データが入っているバイナリファイルのパスです。

UNDEF

欠損値(undef)として処理する値を指定します。
この場合、ファイルを読み込んで9.96921e+36という値があれば、その点では値がないとして処理されます。

OPTIONS

ファイル読み込み時のオプション。
いろいろあるので、詳しくは上記公式ドキュメントを参照していただきたいのですが、よく使うものは
・yrev:データが北→南の方向に入っていることを示す(デフォルトでは南→北として解釈される)
・zrev:データが上層→下層の方向に入っていることを示す(デフォルトでは下→上として解釈される)
・template:DSETをテンプレ形式にし、それに従う連番のファイル群を一度に読み込む。詳しくはこちら
など。
特にyrev、zrevは間違えると厄介なので、データの方向は要確認です。

XDEF

X方向(経度方向)の格子間隔を示します。

XDEF a LINEAR b c

で、bからcごとに全部でa個のグリッドが存在することをしめしています。たとえば、

XDEF 288 LINEAR 0 1.25

は、経度0度から1.25度ごとに全部で288個のグリッドが刻まれていることを意味します。

このように開始点と格子間隔で指定することもできますし、グリッドを一つずつ指定することもできます。その場合LINEARではなくLEVELSを用いて、

XDEF 12 LEVELS 0 30 60 90 120 150 180 210 240 270 300 330

のようにします。

YDEF

緯度方向のグリッド数を表します。ほぼXDEFと同様ですが、ここではLINEARとLEVELS以外にガウス格子系を使うこともできるそうです。詳しくは上記公式ドキュメントへ。

ZDEF

鉛直層数を表します。XDEFと同様です。

TDEF

時間ステップ数を表します。XDEFなどと書き方は同様ですが、開始時刻は以下のように指定します(日本語での説明が難しいので、公式ドキュメントをそのまま引用します)。

hh:mmZddmmmyyyy
where:

hh = hour (two digit integer)
mm = minute (two digit integer)
dd = day (one or two digit integer)
mmm = 3-character month
yyyy = year (may be a two or four digit integer; 2 digits implies a year between 1950 and 2049)

mmはなくてもよいみたいです。

つまり、たとえば2020年7月3日12Zを初期時刻とする場合、

21Z03JUL2020

となるということです。

VARS

データファイル中に格納されている変数を記述します。まず、

VARS n

でn個の変数が保存されていることを指定し、次に改行してそれぞれの変数について記述します。

var1_name 0 99 var1_description
var2_name 9 99 var2_description
...

並び順は

varname levs units description

という形で、それぞれ
・varname:変数名(15字以内)。描画時に d varname のように指定するのに用いる。
・levs :その変数の値が入っている層の数。地表面データであれば0とする。
・units:ファイル中の変数を指定するパラメータ。GRIB等を読み込む際に必要で、バイナリを読む際は"99"としておく。
・description:変数の説明(140字以内)。正式名称とか単位とか。

変数がすべて書き終わったら、必ず最後にENDVARSをつけます。これ以降は何も書きません。


コントロールファイルが完成したら、GrADsでは次のようにコントロールファイルを開き、描画することができます。openするのはもとのデータファイルではなくコントロールファイルです。

ga-> open hoge.ctl
ga-> d varname