GMTで等高線を描く方法



0.はじめに

 今回は要望の多かったGMTで等高線(コンター)を描く方法を説明
します。『GMTでグラフを描く方法』で説明した基礎的なことももう
一度解説してあるので、いきなり『GMTで等高線を描く方法』から読
んでも(おそらく)等高線を描くことができると思います。前回も書き
ましたが、ここで示す簡単な例でコツを掴んでそれ以上の進んだことを
やる時にはマニュアルを見れば何とかなるようになりましょう。

1.下準備(前回とほとんど同じ)

 GMTは直接ディスプレイに絵を表示するソフトではありません!G
MTは、ポストスクリプトという形式の画像データを標準出力に出力し
ます。従って、普通は出力結果を1回ファイルに落としてから、表示し
たり、プリントアウトすることになります。
% GMTのコマンド > honyarara.ps
てな具合です。「GMTのコマンド」は具体的にはマニュアルを見て下
さい。今回は、grdcontourというコマンドです。出力ファイルの名前は
何でも良いですが、ポストスクリプトファイルなので最後に.psを付ける
のが慣例です。
 GMTは基本的には、1命令で1つのことしかしませんから、線を2
本引きたいようば場合には命令を2回繰り返して、ファイルに追加書き
をします。
% GMTのコマンド > honyarara.ps
% GMTのコマンド >> honyarara.ps
 ちょっと複雑な絵を描きたい時は毎回コマンドラインから命令を打ち
込むのは面倒なので、シェルスクリプトを作ってしまうのが便利です。
% cat mk_honyarara
#!/bin/sh
GMTのコマンド > honyarara.ps
GMTのコマンド >> honyarara.ps
% mk_honyarara
こんな感じにやるのが楽です。

 さて、本題に入る前に出来た絵を見るにはどうすれば良いのか説明し
ておきます。GMTに限らず、ポストスクリプトファイルを表示するに
は、ghostscriptを使います。X-window 上で、
% gs honyarara.ps
とすれば、表示されます。ただし、表示されているものと、実際の画像
ファイルの内容は多少異なります。例えば、ギリシャ文字などは正常に
表示されないので注意して下さい。
 絵をプリントアウトするには、
% lpr honyarara.ps
でOKです。

2.grdcontour による等高線の描き方(1)

 GMTを使って等高線を描く方法は幾つかあるのですが、ここでは
grdcontour というコマンドを使って描く方法を説明します。マニュア
ルでは Example 1です。等高線を描く場合は2段階の作業が必要です。
一つ目は、自分の用意したデータファイルをGMT専用のフォーマット
のファイルに変換することです。二つ目は、変換されたファイルから等
高線のポストスクリプトファイルを作製することです。

 この節では、第一段階の自分のデータファイルをGMT専用のフォー
マットのファイルへの変換について説明します。等高線の元となるデー
タは以下のような物を用いることにします。
% cat cont.dat
1.0 0.0 0.3
1.0 1.0 0.7
1.0 2.0 1.0
1.0 3.0 0.5
1.0 4.0 0.2
1.5 0.0 0.1
1.5 1.0 0.8
1.5 2.0 1.4
1.5 3.0 1.1
1.5 4.0 0.8
2.0 0.0 0.0
2.0 1.0 0.2
2.0 2.0 0.9
2.0 3.0 0.7
2.0 4.0 0.7
データの並びは、x座標、y座標、その点での値です。この例では
(1,0)-(2,4)の範囲に中央が盛り上がったような等高線が描ければ大成
功ということになります。
 このデータファイル(cont.dat)をGMT専用のフォーマットのファイ
ル(cont.grd)に変換するコマンドは、
% xyz2grd cont.dat -Gcont.grd -R1/2/0/4 -I0.5/1
です。これは、「cont.dat というファイルのデータを cont.grd とい
う名前のGMT専用のフォーマットのファイルに変換しなさい。ただし
x座標の範囲は1から2、y座標の範囲は0から4で、データの間隔は
x方向は0.5、y方向は1です。」という意味です。数字の対応から、
-G、-R、-I の意味は分かりますね。"cont.grd"というファイルは、バ
イナリファイルなので、"cat"、"less"、"vi"といったコマンドでは中
身を見ることはできません。
 なお、この段階ではまだポストスクリプトファイルを作製しないので、
コマンドの最後に "> xxxx.ps" といった感じのものは付けてはいけま
せん。

3.grdcontour による等高線の描き方(2)

 今度は、"cont.grd"から等高線を描きましょう(正確には、ポストス
クリプトファイルを作りましょう)。コマンドは、
% grdcontour cont.grd -JX3/2 -R1/2/0/4 -C0.1 -Bnews -X2.5 -Y5.0 
> cont.ps
です。上の例では2行に渡って書いてありますが、実際には1行で書い
て下さい。"cont.ps"というファイルができたはずです。
% gs cont.ps
とすると、等高線図が表示されるはずです。
 コマンドの解説をします。
 grdcontour は等高線を描くGMTのコマンドです。
 次に書いてある cont.grd は等高線の元となるデータのファイル名で
す。GMTで定められたフォーマットです。
 -JX3/2 とは等高線図のサイズが、3インチ×2インチだということで
す。
 -R1/2/0/4 は等高線図の範囲を(1,0)-(2,4)にするということです。
数字の順番に注意して下さい。xの最小値/xの最大値/yの最小値/
yの最大値の順です。
 -C0.1 は等高線を描く間隔です。このオプションは省略できないので
注意して下さい。
 -Bnews は四角い枠付きで等高線図を描くという命令です。"news"は
それぞれ上右左下の枠線に対応しています。例えば、-Bnw と指定する
と上と右だけ枠線を描いてくれます。また、"news"の順番は特に決まっ
ていません。
 -X2.5 -Y5.0 というのは、描き始める始点の指定です。A4サイズの
紙を横においた時の左下が基準(0,0)で、そこからインチ単位で図の
左下の位置を指定します。

 grdcontour 以下の"cont.grd"、"-JX3/2"、"-R1/2/0/4"、"-C0.1"、
"-Bnews"、"-X2.5"、"-Y5.0"はどういう順番に書いても構いません。

4.高度な使い方

 毎回、キーボードから命令を打ち込むのは大変なのでシェルスクリプ
トを作ると便利です。例えば、
% cat grd_ex
#!/bin/sh
xyz2grd cont.dat -Gcont.grd -R1/2/0/4 -I0.5/1
grdcontour cont.grd -JX3/2 -R1/2/0/4 -C0.1 -Bnews -X2.5 -Y5.0 > cont.ps
gs cont.ps
というファイル("grd_ex")を作っておけば
% grd_ex
一発で等高線図を表示してくれます。シェルスクリプトの書き方の詳し
い解説はしませんが、見ての通りやりたいことを上から順番にならべて
書くだけです。一番上の行の"#!/bin/sh"というのは『おまじない』だ
と思って下さい。そして、絶対に忘れてはならないのは、"grd_ex"とい
うファイルを作ったら、最初に一回だけ
% chmod +x grd_ex
とやることです。これをやらないと、
% grd_ex
grd_ex: Permission denied.
というエラーが出てしまします。

 "grdcontour"というコマンドには色々なオプションがあります。幾つ
か紹介しておきます。
 -A数字 -Aの後の数字の間隔で等高線の値を自動的に書き込んでくれ
ます。
 -L数字/数字 -L以下の数字の範囲のみの等高線を描きます。
 -Wc数字 -Wc以下の数字の太さで等高線を描きます。
 -Wa数字 -Aで指定した間隔の線を描くときの太さの指定です。

 -W数字 は線の太さを指定する一般のオプションです。"psxy"とかでも
使えます。太さを指定する数字はポイント数です。このオプションの最
後に"to"を付け加えると点線になります。同様に"ta"を付けると破線に
なります。

 等高線に関してはまだまだたくさんの『技』があります。それらにつ
いては別の機会に紹介します(『予定』は『未定』と同義です!)。

GMTはじめの一歩(1) GMTでグラフを描く方法 へ行く


岩瀬 康行 (iwase@sci.hiroshima-u.ac.jp)

コンピュータに関するあれこれに戻る

岩瀬康行のホームページ
本多研のホームページ
地球惑星システム学科のホームページ