日本の気象庁がつくった再解析データ「JRA-55」「JRA-3Q」の 提供されているデータ形式は、WMO (世界気象機関) で決められた GRIB という形式である。 ただし、JRA-55 は GRIB の 第1版 (「GRIB1」と書かれることもある)、 JRA-3Q は 第2版 (「GRIB2」) である。
気象データの可視化でよくつかわれるソフトウェア GrADS (Grid Analysis and Display System、 ウェブサイトは http://cola.gmu.edu/grads/ ) は、 GRIB形式のデータをそのまま読むことができる。 (GRIBならばかならず読めるわけではないが、JRA-55, JRA-3Q は読める。)
ただし、GRIB形式のデータ本体のほかに、 どんな変数がはいっているかを GrADS の約束にしたがって記述した テキストファイルが必要である。 これを GrADSの用語で control file といい、ファイル名の終わりの部分は「.ctl」である。
また、格子点番号から、バイナリファイルとしてのGRIBファイルの中での位置を 参照できるようにするために、index file あるいは map file とよばれる (人によってちがうよびかたをされるが同じものである) バイナリファイルも必要である。 JRA-55, JRA-3Q ではそのファイル名が「.idx」でおわるようにつけられているので、 ここでは index file とよぶことにする。 GRIBファイル本体と control file があれば、 GrADS の配布物にふくまれている gribmap というプログラムで index file をつくることができる。
【GrADS にふくまれるプログラムのうち、 control file をつくるところまでにつかう道具は、 GRIB1用の gribscan と、GRIB2 用の grib2scan が区別されている。 しかし、そこから index file をつくる段階でつかう gribmap は共通である。】
JRA-55、JRA-3Q の配布データは、 各サブセット (例、anl_surf125) のうちわけが、 月ごとにディレクトリにわけて置かれており、 ディレクトリごと (つまり月ごと) に GrADS 用の control file と index file が用意されている。 その構成をたもってダウンロードすれば、そのまま GrADS で読むことができる。
しかし、わたしは、1年ぶんをまとめてGrADSであつかいたかったので、 1月のところにある control file を編集し、 TDEFのところで指定する時間ステップ数を1年の日数の4倍に変更し、 DSETのところで指定するファイル名を、自分がデータを置いたディレクトリ構成にあわせて修正して、 1年ぶんのデータに対応する control file 「anl_surf125.ctl 」をつくった。 そして、「gribmap -i anl_surf125.ctl」を実行した。 これで「anl_surf125.idx」がつくられた。 GrADS で、この anl_surf125.ctl を open すれば、1年ぶんのデータを読むことができる。
GrADS の中の display コマンドは、標準的には画面に図を表示するが、 あらかじめ「set gxout fwrite」をやっておくと、データ値をバイナリファイルに書きだす。 そのファイル名は、とくに指定しなければ「grads.fwrite」だが、 あらかじめ「set fwrite」コマンドでファイル名を指定しておけば、その名まえになる。 なお、複数のファイルをつづけてつくるときには、 まえのファイルを「disable fwrite」で閉じてからつぎのファイルに書くという 手順をふむ必要がある。
この機能を利用し、1年ぶんのデータを、1時刻ごとに別々のバイナリファイルに書きだすような GrADS スクリプト「6hourly.gs」をつくり、 GrADSの中で「run 6hourly.gs」で起動した。
スクリプトのうちはじめのほうにある「set x 1 288」は、つぎのような意味である。 全経度にわたるデータを表示するとき、たとえば経度 0度と360度の両方がほしくなるが、 格子点データではふつう一方だけがふくまれている。 GrADS では、データを図示するときの便宜のため、 端の経度の格子点データを二重にもつようにしている。 東西方向の格子点番号「x」は、格子間隔 1.25度 のばあい、 (GrADSでは1からかぞえるので) 1 から 289 までとなる。 display コマンドをすなおにつかうと、fwrite であっても、この重複データを出力してしまう。 ここでは重複は不要なので、出力する格子点番号の範囲をあらかじめ指定しておいた。
GrADSでの日時の表現は、 たとえば「2007年 1月 7日 世界時 0時」ならば、「00Z07JAN2007」のような形になっている。 スクリプト中で文字列演算をして、「2007010700」のような形に書きかえている。
なお、わたしは GrADS を、Linux を入れたパソコン上でつかっている。 Windows上 での GrADS のつかいかたについてはよく知らない。