GrADS を使った NICAM 出力データ描画の基礎演習（VL 講習会資料）
2012/02/24	
  三浦裕亮0. GrADS とは
	  GrADS(Grid Analysis and Display System)はアメリカの COLA(Center
for Ocean-Land-Atmosphere Studies)で開発されているソフトウェアで、気象に関するデータを描画する目的で広く使われています。最も大きな特徴は、その使いやすさにあり、極端な話 grads(リターン x2),open a.ctl(リターン),du(リターン)のように３回コマンドを打てば u に関する水平分布図を得ることができます。モデルの出力データを素早くチェックするような目的に、特に適していると言えるでしょう。一方で、論文用にとことん凝った美麗な図を作るような作業は苦手としており、電脳ライブラリなど別のソフトウェアを使う人も多くいます（とはいえ、著者は GrADS で基本的に事足りていますが）。google の検索窓に”grads”と打ち込み、GrADS Home Page を訪れることで、GrADS のインストール方法、詳細なマニュアル、対応しているデータ形式についての情報を得ることができます。
	  NICAM(Nonhydrostatic ICosahedral Atmosphere Model)では、出力デー
タの標準的な閲覧方法として GrADS の利用を想定しています。NICAM のチュートリアルにおいて ico2ll というコマンドを使用すると思いますが、その際に正２０面体格子系という（少し）不規則な（若干）扱いにくい格子系
から緯度経度座標系という馴染みのある座標系への変換が行われます（参考:ico2ll による変換後のファイルは 4 バイトバイナリデータを格納しており、経度点数 360・緯度点数 180 のような 1x1格子の場合 360x180 のサイズの配列を用意すれば容易に読み出すことができます）。この文章では、
NICAM の出力データのうち水平風(ms_u,ms_v)、気温(ms_t)、OLR(外向き長波放射: ss_lwu_toa)について、


水平断面（水平分布）の等値線図/色塗り図/ベクトル図



経度平均した緯度高さ断面（緯度高さ分布）図

経度時間断面図の簡単な描き方を解説します。また、
描画した図を png ファイルに出力する方法についても紹介します。“簡単な”とは言いましたが、学会発表や論文に使1用する図の描き方も基本的には一緒です。座標軸を見やすくしたり、線を太くしたりする程度で、GrADS のマニュアルや Quick Reference Card を見れ
ば 30 分とかからずに出来てしまうと思います（スクリプトファイルで作業を簡単化するにはもう少し学習する必要があります）。
	  ここまでの説明で“GrADS は簡単らしい”という気分は掴んでいただけ
たと思います。それでは、早速描画の練習に入りましょう。“習うより慣れろ”という言葉がとても良く当てはまります（すぐ慣れます）。
1. GrADS の起動
	  演習のはじめに、いくつか約束事を確認しておきます。
Linux サーバー上で NICAM を実行しデータの緯度経度変換を行う作業については、既に終わっていると仮定して話を進めます。
GrADS による描画を行う場合”ssh”ではなく、”ssh -X”としてサーバーにアクセスしてください。”-X”は描画窓を表示させるための”おまじない”と思ってください (詳しく知りたい場合は$ man ssh)。



この文章中では、上記のような$は Linux (or Mac)のターミナル上のコマンド、>は GrADS 上のコマンドを表すことにします。例えば、$ man ssh は Linux (or Mac)に対し、man というコマンドを使って ssh について調べろ、という命令を発行します。一方、> dt は GrADS に対し、t という変数を描画しろ、という命令を発行します。$や>の各行の最後にはリターンキー(Enter)を押してください。

Linux (or Mac)に自分で GrADS をインストールし利用しようとすると、軸や地図が表示されなかったり、カラーバーを描くことができなかったりするかもしれません。そのような時には GADDIR、GASCRP という二つの環境変数を設定する必要があります。本演
習では前もって設定されているので心配しなくても大丈夫ですが、興味のある方は$ env と入力して環境変数の値を確認してみてください。環境変数の設定方法は分かりますか？csh(tcsh)ならsetenv、bash なら export がキーワードです。

	  それでは Linux サーバー上で GrADS を起動しましょう。
i.

$ ssh -X (アカウント)@nicamgate.aori.u-tokyo.ac.jp (Enter)

2

ii.

$ ssh -X compute0 （または compute1）(Enter)iii.

$ cd /data1/miura/NICAM_OUTPUT/global (Enter)iv.

$ grads (Enter x 2 回)

これだけです。なにやら真っ黒い画面が表示されるようになりました（表示されない方は$ ssh -X を確認。それでもダメな場合は Windows なら 6000
番ポートを開くべく奮闘してください。それでもダメな場合は、とりあえず諦めましょう）。GrADS 起動の際にはリターンキーを 2 回押す必要があることに注意してください。2 回目はおまじないです（興味があれば書いてあることを読んでみてください。試しに no と答えてからリターンキーを押すと窓が縦長になりませんか?）。ちなみに、GrADS を終了する際のコマンドは、v.

> quit（Enter）

です。くどいですが、$は Linux (or Mac)のコマンド、>は GrADS のコマンドです。
2. コントロールファイル（data description file）を開く	  次にコントロールファイルを開きましょう。コントロールファイルは、例
えば ms_u.ctl のように”.ctl”という接尾子が付いているファイルです。
NICAM の場合、ms_u は複数の鉛直レベルを持った（m）、時間平均でない（s）、東西風（u）の意味になっています。本演習から帰った後で、GrADS
を NICAM の出力データ以外に使おうとすると、コントロールファイルを自分で記述する必要に迫られるかもしれません。でも安心してください。
NICAM と同じような 4 バイトバイナリのデータなら、その書式はとても簡単です。興味のある方は$ less ms_u.ctl と打ち込んでみると NICAM の出力
データに関するコントロールファイルの中を見ることができます（主な項目
は、DSET がデータ、X は東西、Y は南北、Z は高さ、T は時間、VARS は変数です）。
	  それでは、コントロールファイルを開きましょう。コントロールファイ
ルを開くには、i.

> open ms_u.ctl（Enter  以後、省略します）

です。開かれているコントロールファイルの内容を確認するには> q file と打ち込んでみてください。

33. 水平断面の等値線図	  さて、これで下準備は終了です。早速図（東西風の等値線図）を書いてみましょう。図を描くには、i.

> d ms_u（d は display の略）です。東西風の水平分布は表示されましたか？これは高度約 80m の東西風になります。簡単でしょう？高さを変える、例えば高度約 1570m の東西風を表示するには、ii.

> set z 8 (あるいは> set lev 1570)

iii.

> d ms_uと入力します。とても簡単ですが、ここで困ったなぁと思った方がいるかもしれません。最初に描いた 80m での等値線と次に描いた 1570m での等値線が重ねて描かれてしまっています。二つの事象を比較したい時には図を重ねた方が便利な場合もありますが、今は見づらいので一つだけにしましょう。
図を消すには、iv.

> c （c は clear の略）です。改めて> d ms_u としてみてください。今度は 850hPa の東西分布だ
けになりました。
	  次に、どこかの領域を拡大したい（例えば日本周辺だけを見たい）場合にどうしたら良いでしょうか。例えば、日本域領域を拡大してみましょう。描
画する領域を設定するには、v.

> set lon 100 150

vi.

> set lat 20 60と打ち込んだ後で> d ms_u です（前もって> c としておいた方がよいでしょう）。一行目で東経 100 度から東経 150 度の範囲を指定し、二行目で北緯 20度から北緯 60 度の範囲を指定しています。
	  ここまではモデルの計算開始直後の東西風ばかり見てきましたが、せっか
く NICAM を使っているのですから、（モデル内で）時間の経過とともに東西風がどのように変化したかを見てみることにしましょう。時間を変える
には、
vii.

> set t 2です。これで、2 番目の時間になりました。もちろん> set t 3 とすれば 3 番
目、> set t 4 とすれば 4 番目の時間になります。> d ms_u として、東西風

4

の場が変化したことを確認してみてください。コントロールファイルを開いた直後は、自動的に> set t 1 が設定されます。ちなみに、
viii.

> set t 1 24と入力すると、１番目の時間から 24 番目の時間までの時間変化をアニメー
ションで表示する設定になります。（速すぎて見づらいですか？）。ところ
で、現在の時間や座標の設定を覚えていますか？時間や座標を確認するには、ix.

> q dimsです。
	  ここまで紹介したコマンドだけでも、“GrADS は便利だなぁ”と思っていただけるかも知れません。しかし、GrADS にはもっと便利で（我々を堕落させる？）強力な機能が備わっています。例えば、NICAM で出力された東西風の 1 番目の時間から 24 番目の時間までの時間平均を表示するには、いったんある時間に固定（> set t 1 など）した後で、x.

> d ave(ms_u,t=1,t=24)です。これだけです。平均場からの偏差も> d ms_u-ave(ms_u,t=1,t=10)で表示できます。ある時間（> set t で設定）の領域平均を計算するには、xi.

> d aave(ms_u,lon=100,lon=150,lat=20,lat=60)です。図ではなく、ターミナル上に値が出力されたと思います。関数 aaveは面積の緯度依存性（同じ経度 1 度でも、長さとしては赤道側が長く、極側が短い）を補正した上で計算してくれます。賢いですね。ただし、GrADS
内での平均操作がどのように行われているかの実装を知らないまま、関数をブラックボックスとして使っているという自覚は持っていてください（ちゃんとソースコードを読めば別ですが）。他にも便利な関数が用意されているので、楽がしたいと思ったら（ちょっと我慢して）ホームページを参照してください。
	  ここまでで水平断面図については終わりです。新しい概念ばかりで大変だ
ったと思いますが、気がつけば大分慣れてきたと思いませんか？
4. 水平断面の色塗り図	  皆さんも標高に応じて山を茶色や灰色に、平野を緑に塗ったような地図を知っていると思いますが、気象のデータを可視化する際にも、図に色を塗っ5た方が便利なことがあります。気温の高いところを暖色系に、気温の低いところを寒色系に塗った方が、いちいち等値線の値を読んで 27 度とか-5 度とか確認しなくても、暑そうだったり寒そうだったり、直感的に理解できませんか？そのような訳で、ここでは気温のデータを使って色塗り図を作成してみましょう。まず、現在開いている東西風のデータファイルを閉じ、設定を初期化するため、i.

> reinitと入力してください。次に、気温データのコントロールファイルを開きます。
コントロールファイルの開き方は覚えていますか？
ii.

> open ms_tem.ctl

です。次に、図の種類を変更しましょう。色塗り図に設定変更するには、iii.

> set gxout shadedと入力します。色塗り図をやめて等値線図に設定変更したくなった場合は>set gxout contour と入力すれば戻ります。色塗り図に設定した状態でiv.

> d ms_temとすると、気温の色塗り図が描画されます。赤道の周りが暖色系で暖かそう、
北極・南極の近くは寒色系で寒そう、そんな感じがするでしょうか（人により感じ方は異なるでしょうが）。
	  色塗り図を描くのに覚える必要があるのは> set gxout shaded だけです。
簡単ですね。しかし、図を見ていて何か困りませんか？どの色がどの気温に対応しているかが分からないので、暑そう・寒そうという定性的なことしか分かりません。そこで、カラーバーを描くため、v.

> cbar.gsと打ち込んでみてください。カラーバーは表示されましたか？（表示されない場合は GASCRP の設定を確認してください。）これで、日本の気温はだい
たいこのくらい、北極の温度はだいたいこのくらい、ということが分かるよ
うになりました。
（実用上、> cbar.gs で表示されるカラーバーはいまいち“格好良くない”ため、> cbarn.gs やそれをもう少し（自力で）改良したものを使う人が多いように思います。詳しくは GASCRP に設定されたディレクト
リにあるスクリプト cbarn.gs を読んでみて下さい。）
5. 水平断面のベクトル図6	
  温度を直感的に見るために、暖色系・寒色系の色を使って色塗りをしまし
たが、風を直感的に見るにはどうしたらよいでしょうか？日本はちょうど北半球の中緯度帯に位置しているので、北から風がふく日は寒くなりがちです。
特に風が強い日は要注意です。春になると花粉が・・・。という調子で、風は方向と強さ（大きさ）で特徴づけることができます。方向と大きさを持った量を可視化するのにちょうど良いもの、と言えばベクトルです。風の可視化を目標に、ベクトルを描くことを覚えましょう。
	  まず、GrADS を初期化し、東西風・南北風のコントロールファイルを開きます。
i.

> reinitii.

> open ms_u.ctl

iii.

> open ms_v.ctl

です。これまでは同時に 1 つしかコントロールファイルを開かなかったですが、ここでは 2 つ同時に開きました。> q file と入力すると 1 つ目のファイルの情報を、> q file 2 と入力すると 2 つめのファイルの情報を表示させることができます。ついでに、
iv.

> open ms_tem.ctl

として気温のコントロールファイルも開いておきましょう。後ほどベクトルに色をつける際に使います。
	  風のベクトル図を描くには、v.

> d ms_u.1;ms_v.2（あるいは> d ms_u;ms_v.2）と入力します。ms_u や ms_v の後ろについている.1 や.2 はコントロールフ
ァイルを開いた順番に対応しています。図を見ると、なんとなく風の流れは分かるものの、ベクトルの本数が多すぎてなにやら見づらいですね。図を見易くするにはどうしたら良いでしょうか？等値線図のときのように領域を拡大するのも 1 つの方法です。しかし、ここでは矢印の側を間引いて見ましょう。矢印を間引くには、vi.

> d skip(ms_u.1,3,2);ms_v.2のように skip という関数を使います。上の例では、経度方向は 3 個につき 1個、緯度方向は 2 個につき 1 個の風ベクトルを描いています。
	  これだけでベクトル図の基本はおしまいです。なんか物足りないなぁ、という方はベクトルの太さを変えたり、単位ベクトルに対応する風の強さを変7

えたりして好みの図を作ってみると良い練習になるとおもいます（GrADSのマニュアルや Quick Reference Card を参照）。また、せっかく気温のコン
トロールファイルを開いていますので、
vii.

> d skip(ms_u.1,5,3);ms_v.2;ms_tem.3と入力してみてください。風ベクトルの矢印に気温の色がついたと思います。
（北半球では）北風が冷たい空気を運び、南風が暖かい空気を運んでいる様子が一目で分かると思います。
6. 経度平均した緯度高さ断面（緯度高さ分布）図	  せっかく東西風と気温のコントロールファイルを開いているので、このま
ま緯度高さ断面図にすすみましょう。まず、コントロールファイルを開いたまま設定をリセットするため、i.

> resetと入力します。次に、緯度高さ断面を描くために、経度を固定し、高さ方向の幅を決めます。例えば、ii.

> set lon 0（経度 0 度）

iii.

> set z 1 30（鉛直レベル１~３０）です。経度を固定し、緯度・高さに幅をもたせた状態でiv.

> d ms_uとすると、経度 0 度の東西風の緯度高さ断面図が描かれます。気象学的には
東西風の経度平均をとって、v.

> d ave(ms_u,lon=0,lon=360)とした方が面白いかもしれません。南北両半球の中緯度上空に強い西風、ジェット気流が流れていることが分かりますね。東西風の図を消さず、気温の東西平均を重ねて描いてみましょう。
vi.

> d ave(ms_tem.3,lon=0,lon=360)

赤道から南極・北極の方向に急に気温が下がる緯度帯が上空の強いジェット気流に対応していることに気づきましたか？興味のある方は、気象学の教科書で温度風の関係について勉強してみてください。
7. 経度時間断面図
	  ここに到達するまでに、知らず知らずに結構多くの事柄を学んでいます。

8

モデルも初めて、作図も初めて、という人はそろそろ辛くなってきたでしょうか？でも安心してください、経度時間断面図が最後です。気象学の勉強を始めると、なにやら“波動”なるものについて記述されている部分が多くあることに気づくと思います。気象学会に行ってみるとロスビー波や重力波のような由緒正しい波から、MJO と呼ばれている波の性質を持つような（持たないような）現象について発表している人を必ず見かけると思います。そのような波（波のようなもの）が東西方向に伝播（移動）する様子を可視化する基本的な手法が経度時間断面図です。
	  とりあえず、> reinit として初期化するところから始めましょう。これまで東西風と気温について見てきたので、ここでは趣向を変えて外向き長波放射(OLR)という量を見てみましょう。OLR は赤外線を射出する高度の気温を反映する量で、雲がないところでは（暖かいので）大きい値、高い雲があると（冷たいので）小さい値を持ちます。対流圏では上空に行くほど気温が下がることを思い出してください。NICAM の出力で OLR に相当するコント
ロールファイルは ss_lwu_toa.ctl ですので、i.

> open ss_lwu_toa.ctlと入力してコントロールファイルを開いてください。次に、緯度時間断面を描くために、緯度を固定し、時間の幅を決めます。今は、ii.

> set lat 0 （緯度 0 度）

iii.

> set t 1 72 （時間レベル 1~72）と設定しましょう。緯度を固定し、経度・時間に幅を持たせた状態でiv.

> d ss_lwu_toaとすると、緯度 0 度の OLR の経度時間断面図が描かれます。GrADS のデフ
ォルトの設定では時間は下から上に変化していますので、右上がりの青いシ
グナルは東進する雲、反対に左上がりの青いシグナルは西進する雲、ということになります。気象の分野では縦軸の時間を上から下に進行させることが多いのですが、その場合は、y 軸の上下を入れ替えるためにv.

> set yflip onと入力し、その後で> d ss_lwu_toa です。ところで、気象学的には赤道直上にたまたま存在した雲が東西どちらに移動しているか、よりも雲集団が全体として東西どちらに動いているのだろうか、ということに興味がある場合があるのですが、そのような時には、vi.

> d ave(ss_lwu_toa,lat=-10,lat=10)9と入力して、南緯 10 度と北緯 10 度の間で平均した OLR が東西どちらに移動しているかを見たりします。（残念ながら 3 日程度の実験では雲群の移動ははっきりしないですね。）
8. 図をファイルに保存する	
  せっかく描いた図ですから、ファイルに保存して GrADS を終了した後でも見られるようにしておきましょう。画面に表示されている図を png ファイルに保存するには、i.

> printim ~/a.png (or > wi a.png)のように入力します。この場合、a.png というファイルに画像が保存されます。拡張子を png から jpg や gif に変更するとそれぞれの形式で画像を保存
してくれます。GrADS を終了し（> quit）、本当に保存されているか確認してみましょう。Linux にはイメージファイルを表示するためのプログラムがいくつかありますが、例えば ImageMagick のコマンドを利用して、
ii.

$ display ~/a.pngとしてみます。ファイルは無事に開いたでしょうか？ところで、ファイルがどこに出力されたかは分かりますか？Unix に馴染みのない方は、ついでなので”~/”が自分のホームディレクトリを表すことを覚えてください。
9. あとがき	  以上で GrADS を使って NICAM の出力データを描画する方法の基礎は完璧（なはず）です。いろいろなデータをいろいろな方法で描画して、気象学的な解析を楽しんでみてください。例えば、チュートリアルで作ったデータを解析してみるのもよいでしょう。不満な点が出てきたら、それはまたとな
い成長のきっかけです。google で調べるもよし、GrADS のホームページを一生懸命解読するもよし、人に聞くのもありです。不満な点を解決して、より洗練された図を描けるようになってください。
	  GrADS は確かに便利ですが、どの変数をどのような方法で描画するのが物事を理解する上で最適か、を判断するのはあくまでもあなたの頭です。
GrADS はそこまでは教えてくれません。あくまでも、簡単な描画方法を提供してくれるだけです。データ解析を使いこなすかっこいい研究生活を目指し、気象学の勉強も忘れないでくださいね。

10