GMT(The Generic Mapping Tools)とは、直訳すると"汎用地図作成ツール"となるでしょうか。地球物理や地質学の分野でよく用いられているグラフィックプログラム群で、60種類ほどのプログラムの集合です(ライブラリではない)。出力は綺麗です。地理情報を扱う方は、評価の価値があるでしょう。
このページは作りはじめたばかりで、まだ不完全です。
まずは下の図を見て下さい。
これらはオホーツク海の流氷の量(密接度)を表す図です。グラフの性質上、地図はAlbers図法と呼ばれる、等面積写像を用いています。GMTはPostScriptファイルを出力するのですが、図はこれをJPEG画像に変換したものです。なお、 2枚の図のデータは同じで、表現方法が異なるだけです。
GMTの特徴に関しては、次のページに非常によくまとめられています。まずはこちらをご一読下さい。
GMT information(日本語)
(地質調査所のページ内)
マニュアルを読んだときの印象は、たくさんのプログラムを組み合わせて使うので、覚えることが多くて難しいのではないかと感じました。しかし、使ってみての印象は、実に簡単に地図を描けるということです。出力が非常にきれいなのにも感心しました。ちなみに通常のx-yプロットも出来ます。
GMTの出力は、(Encapsulated) PostScriptです。PostScriptを用いることで、高品位の出力を実現しています。わずかな努力で、非常にきれいなグラフを作成できます。しかしその分、表示や印刷には制限が加わります。
PostScript, Ghostscriptについては、このページの下の方にリンク集があります。参考になれば幸いです。
GMTを使うときの基本的な考え方は、グラフをどんどん重ね書きしていく、というものです。グラフの枠や地図など、背景を描くためのコマンドと、点や線を描いたり、等値線図やイメージマップを描くコマンド、文字を入れるコマンドなどを順番に呼び出して、グラフを書き込んで行きます。具体的には、上の等値線図の場合には、
pscoast
grdcontour
を順番に呼び出して、図を作成しました。イメージマップの場合には、この逆に、
grdimage
使用)
psscale
使用)
pscoast
)
の順で描きました。もちろん、この上にさらにグラフを重ね書きすることも出来ます。
上に書いたように、GMTはいくつものコマンドを順番に呼び出して、図を作っていきます。UNIXに慣れている方なら、これをすぐにシェルスクリプトに固めてしまえばいいじゃないか、と思うことでしょう。GMTの作者も、コマンドの呼び出し順序やオプションの指定を、シェルスクリプトに固定して利用することを期待しているようです。
もちろん"シェル"スクリプトでなくともよいはずで、私はデータの変換処理の部分も含めて、Perlによるスクリプトに固定しています。
(この項未完)
GMTのコンパイルには netCDFライブラリが必要です。これのコンパイルについてです。
netCDFはmemmove()
という関数を使っていますが、SunOS 4.1.x
など、この関数を持たないOSでは、以下のようにbcopy
で代用します。引数の順序が違う点に注意。
@SHARP@ifdef BSD @SHARP@define memmove(d, s, n) bcopy(s, d, n) @SHARP@endif
修正する必要があるのは、memmove
を用いている
src/libsrc/ffio.c
およびsrc/libsrc/posixio.c
です。
上の例と同じくSunOS 4.1.xでは、マクロEXIT_SUCCESS
,
EXIT_FAILURE
がありません(POSIX適合でない?)。したがって以下のようにこのマクロを定義してやる必要があります。
@SHARP@ifndef EXIT_SUCCESS @SHARP@define EXIT_SUCCESS 0 @SHARP@define EXIT_FAILURE 1 @SHARP@endif
修正する必要があるのは、src/gmt.h
,
src/pslib_inc.h
およびsrc/gmthex2ras.c
です。
引数がIEEE NaN(Not a Number)かどうかを調べる関数isnanf
およびisnand
が無いシステムでは、gmt_math.h
を作り直す必要があります。gmt_math.h
を作成するスクリプト、
gmt_math_init.csh
などがあるのでそれを参考にして下さい。
Ghostscriptの利用については、次のページをご覧下さい。ページで紹介している情報量は少ないのですが、リンクは参考になると思います。
Ghostscriptを用いると、非PSプリンタをPSプリンタとして利用できます。私の作っている「みんなでプリンタを使おう」というページの中で、その方法について説明しています。興味があればご覧下さい。BSD編とSolaris編があります。
リンクはご自由に。でもメールをくれると嬉しいな。
金野 祥久 konno@researchers.jpLast modified: Fri Jan 8 22:09:38 JST 1999