1. お絵描きの基礎(1) 〜GrADS篇

1.1 GrADSとは?

GrADS (Grid Analysis and Display System)は地球科学関連のデータを 処理・図化するための対話式ソフトで, 基本的には4次元(x, y, z, t)の 大量格子データを扱うのに適している. アメリカのCenter for Ocean-Land-Atmosphere Studies (COLA)という研究機関の専属 グループが開発・維持しており, 現在はUnix, LinuxのみならずWindows, MacIntosh にも対応している. 詳しくはGrADSサイトを見てください.

GrADSユーザとなるにあたって, 基本的なことはこの演習でやりますが もっといろいろなことがやりたくなったら一度はGrADSのドキュメントに目を通すことをお勧めします. これは 英文ですが, 専攻で以前作った日本語の手引 日本語の手引もあります.

1.2 まずは何かプロットしてみましょう

user maroさんが, 以下のことをします.
[/home/maro/data/%] cp ~hiro/public/data/z500.mon.mean.* .
[/home/maro/data/%] grads -l
ga-> open z500.mon.mean.ctl  # .ctlを略してもOK
ga-> q file                  # q dimsと打ってみても?
ga-> d z                     # display zでも同じです
ga-> quit

高度場の等値線図が描けました. 今度は, 極投影図法で, ベタ塗りに等値線を重ねてみます.

[/home/maro/data/%] grads -l
ga-> open z500.mon.mean.ctl
ga-> set mproj nps       # デフォルトはmproj latlon 
ga-> set lat 20 90       # 北緯20-90°までの領域を指定
ga-> set gxout shaded    # デフォルトはgxout contour
ga-> d z
ga-> set gxout contour
ga-> d z
ga-> 
画面上にはこんな図が出ていると思います.
単なる同心円みたいでつまらないので, ちょっと気象風味に定常波を描きましょう. ついでにタイトルもいれます.
[/home/maro/data/%] grads -l
ga-> c                   # 画面のクリア(clearと打っても同じ)
ga-> define zm=ave(z,lon=0,lon=360,-b) # 東西平均量zmを定義する(defineはなくても可)
ga-> set gxout shaded    
ga-> d z-zm              # 定常波成分(東西平均からのずれ)をプロット
ga-> set gxout contour
ga-> d z-zm
ga-> draw title Z500 Stationary Waves, Jan1948
ga-> 
こんな図ができましたか?

1.3 GrADSのサポートするデータ形式

1.4 .ctlファイルの読み方

GrADSデータを制御する小さなテキストファイルが, .ctlファイルと 呼ばれるもので, GRIBやnet CDFなどの自己記述式データ以外は 必ずデータファイルとセットになっています. 逆に, .ctlファイルなしで 普通のバイナリGrADSデータがあっても, 中身が何なのか, どう読めばよいかは全く分かりません. 従って, .ctlファイルとデータファイルは できるだけ同じ場所に置いておく, 自分でデータを作ったらまず.ctlファイルを 添える(そうしないとGrADS上で結果も確認できません)などを心がけましょう.

以下は, 上で使った500hPa高度場データの.ctlファイルです.

*
* NCEP/NCAR reanalysis during 1948-2002
*
DSET   ^z500.mon.mean.grd
* BYTESWAPPED
* OPTIONS SEQUENTIAL YREV
TITLE   monthly NCEP reanalysis
UNDEF  -999.
XDEF    144 LINEAR    0. 2.5
YDEF     73 LINEAR  -90. 2.5
ZDEF      1 LEVELS 500
TDEF    652 LINEAR 15JAN1948 1MO
VARS      1
z      0 99 geopotential height [m]
ENDVARS

では, 自己記述型のデータファイルはどうやってGrADSで開くのでしょう? maroさんが, 今度はnet CDFの海面気圧データをとってきて GrADSで絵を書いてみます. 違いはファイルを開くコマンドだけですね. ただし, こうした自己記述型のファイルをFortranで読むには 専用のパッケージやコマンド群が必要になり, やや繁雑なので ここでは解説しません. もし興味があるようならば, net CDFに ついては 専攻内の手引, GRIBについてはコマンド wgribのページなど を参照してください(後述のfwriteで通常のバイナリに変換することもできる).

[/home/maro/data/%] cp ~hiro/public/data/slp.mon.mean.nc .
[/home/maro/data/%] grads -l
ga-> sdfopen slp.mon.mean.nc
ga-> q file
ga-> d slp
ga-> quit

[作業1] maroが開いたnet CDFデータに対応するGrADSバイナリデータ が/home/hiro/kiso/data/にslp.mon.mean.grdという名前で置いてあります. net CDFのヘッダを見ながら自分でこのデータに対する.ctlファイルを 書き, 開いてみましょう.

1.5 いろいろな図を描く

とりあえず図は描きましたが, GrADSではもっといろいろなことができます. 再び500hPa高度場データ(z500.mon.mean.grd)を例に とってそれらを説明しますが, 高度場と海面気圧だけでは 面白くないので実際にGrADSで遊ぶ前に他のデータも使えるようにしましょう. /home/hiro/public/data/にある次の5つの.ctlファイルを, 自分の ホーム以下の適当なディレクトリにコピーします(:以下はデータの説明).

precip.mon.mean.ctl           :CMAP月平均降水量
sst.mon.mean.ctl              :Reynold's月平均海面水温  
usfc.mon.mean.ctl             :NCEP/NCAR再解析  月平均地表(海面)東西風
vsfc.mon.mean.ctl             :NCEP/NCAR再解析  月平均地表(海面)南北風
uwnd.mon.mean.ctl             :NCEP/NCAR再解析  月平均東西風(17気圧レベル)
また, カラーバー表示用のGrADSスクリプトをコピーします.

[/home/maro/data/%] cp ~hiro/public/gs/* .
[作業3] これまでのコマンドを組み合わせて図を描き, 印刷してみましょう

1.6 便利なスクリプト

以上のコマンドを組み合わせれば, 思い通りの作図作業ができます. しかし, 細かく設定するとGrADSプロンプトから入力するコマンドも 多くなりますから, いちいち何度も打つのが面倒になってきますね. それを解消してくれるのがスクリプトです.

[作業4] 自分でexecファイルを作って実行してみましょう
[作業5] sample.gsを編集して実行可能なgsファイルを作ってみましょう
[作業6] 使えるデータ(用意したものでもいいし, 自分でどこかからとってきたものでもOK) で何か1〜2枚, 気象学・海洋学的に意味のある図をexecもしくはgsを使って 描いてみて, そこから何が言えるかを考えてみましょう.


[作業X] さきほどプロットした500hPa高度場のデータは, 書式なし直接アクセスファイルです. fortran演習を思い出してこのデータを読むプログラムを書いてみましょう.
[作業Y] 周期2年で鉛直伝播する波を作り, GrADSでt-z断面図を書いてみましょう. ただし, 簡単のためデータの時間間隔は月とします.
前のページに戻る

大気海洋圏環境科学専攻ページに戻る


Last modified: Mon Jun 9 16:12:13 JST 2003