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