cachu's page


Last modified: Tue May 22 19:16:18 JST 2007


GMT で矢羽を描くためのパッチ

[English| ホーム| GMT トップ| 研究 ]

Contents

現在本家に取り込んでもらうための交渉中です。
近い将来 suppl パッケージに 入れられると思います。

Sample

はじめに

GMT は地球物理学分野における図を作成するのに非常に有用な ソフトです。非常に詳細な地図情報を持っており、出力したいデータ を出力したい地図の上に投影してポストスクリプトファイルに することが出来ます。そして、何よりも出来上がった図が非常に 奇麗であることが私が利用し、勧める大きな理由です。

しかしながら、GMT にはベクトルの表示の際、矢印による表示は 可能なのですが、気象学で用いられるような矢羽に関しては、 (おそらく作者が気象関係者ではないからでしょうけども) 残念ながらありません。

そこで今回、矢羽を GMT で描画するためのパッチを作成しました。 このパッチをあてることにより、grdbarb というコマンドが 作成されます。このコマンドにより作成した図のサンプルを ここで示します。 psxyからも矢羽を描画することも可能です(-Sr/-SR または -Su/-SU または -Swb/-SWB オプション).

インストール

現在 GMT 矢羽拡張パッチは GMT-3.4.6/4.5.9 用が 用意されています(過去バージョンへのパッチはこのページの一番下にあります). 以下よりダウンロードをして下さい。

対象GMT
バージョン
ファイル名ファイル
サイズ
パッチ
バージョン
4.5.9 gmt4.5.9_barb_src.patch2013011846.9kB 20130118
3.4.6 gmt_3.4.6_barb.patch_v0.5b427.8kB 20060522
gmt_3.4.6_man_barb.patch_v0.5b423.0kB

インストールする GMT のバージョンに合わせてダウンロードしてください。 以前のバージョンのものもこのページの一番下に置きましたのでそこから 入手して下さい。

GMT のインストール方法ですが,Ver.4.5.9 に関して簡単に紹介します。 まず GMT のインストールに必要なファイルを展開をします。

% tar zxvf gmt-4.5.9.tar.bz2
% cd GMT4.5.9
% tar zxvf gshhg-gmt-nc3-2.2.2.tar.bz2
% mv gshhg-gmt-nc3-2.2.2/ share/coast/

つづいてパッチをあてます.

% cd GMT4.5.9
% patch -p1 < gmt4.5.9_barb_src.patch20130118

以下は通常のインストール方法と同じです.

% ./configure
% make
% make install-gmt
% make install-data
% make install-man
% make install-doc
% make install-suppl (必要ならば)

詳しい GMT のインストール方法は展開したファイルの中にある README を 参考にして下さい.なお、Vine 4.x,5.x,6.x Linux の場合 NetCDF ライブラリの インストール先が若干特殊なため、configure 時に NETCDF_INC=/usr/include/netcdf NETCDF_LIB=/usr/lib ./configure のように明示的に NetCDF ライブラリと インクルードファイルのパスを指定する必要があります。

使い方

grdbarb

このコマンドは grdvector のソースを利用しましたので、grdvector を使ったことのある人は 比較的すぐ利用できると思います。grdvector とのオプションの 違いは くらいです。初めて GMT を扱う人、あるいは grdvector を扱ったこと のない人は、マニュアルを参考にして下さい(将来的には最低限の説明 が書ければいいとは思いますが…)。

grdbarb はさまざまなオプションを持っています。ここでは、 矢羽の形状等を指定するオプション Q について解説します。

書式 -Q<barbwidth>/<barblength>/<barbangle>/<barbscale>
サンプル
-Q0.1i/0.2i/120/5
オプション Q はさらに4つのパラメータを指定します。barbwidth は羽根の長さを、barblengthは支柱の長さ、barbangle は支柱と羽根の角度(o)を、そしてbarbscaleは 羽根一本を表す大きさをそれぞれ表しています。上の図も参考にしてみて 下さい。

その他のオプションについてはマニュアルを参考にして下さい。

psxy / psxyz (psxyz は GMT-4.1.2 以降)

psxy を用いて矢羽を表示させるには GMT-4.1.2 以降 の場合 -Swb, GMT-4.0/GMT-4.1.1 の場合 -Su, GMT3.4.x の場合 -Sr, GMT3.1.1 の場合 -Sw オプションを利用します。バージョンによって オプションが違うことに注意をしてください。 このオプションを利用の時には入力するファイルの書式が
X  Y  角度  大きさ
のように4列になります。また、grdbarbと同様に、-Su/-Sr/-Sw/-Swb につづいて サイズを指定することができます。書式は (GMT4.1.2 以降の場合)
-Swb<barbwidth>/<barblength>/<barbangle>/<barbscale>
です。それぞれの説明は上のgrdbarbを参考にして下さい。 通常矢羽は風の吹いてくる方向に向けて描画します(例えば西風に対して 矢羽は西側に描画)。psxy に関して GMT Ver.3.4.1 以降に対するパッチの 場合は b2 以前、Ver.3.1.1, 3.2 に関してはバージョン番号に b がついて いないものは矢羽を矢印と同じ方向に向けて描画をしていましたので、 最新版にバージョンアップの際、今までと反対の矢羽が表示される可能性 がありますので注意して下さい。なお、grdbarb に関してはこれに 関するバグはありませんでした。

psxy で矢印を描く場合 -Sv, -SV の2種類選べると思います。これと 同様に矢羽パッチでは -Swb, -SWB の2種類選択できます(GMT-4.1.2以降の場合)。 大文字と小文字の 違いは矢印と同じです。詳しくはオンラインマニュアルを参考にして下さい。

また、GMT-4.1.2 のパッチより psxyz でも矢羽根を作成できるようになりました。

注意事項(仕様の変更について)

GMT-3.2 以前に対するパッチ(Ver.0.4)と GMT-3.4.1 以降に対するパッチ(Ver.0.5b3) ではコマンド名も異なり(grdbulb → grdbarb)ますし,psxy でのオプション も異なります(-Sw → -Sr).最初の変更は私が矢羽を bulb だと勘違いして いたためです.本家にマージしてもらう野望を果たすためにも綴間違いは 直しておいた方が良いだろうということで grdbarb に変更しました. また,psxy のオプションの変更ですが,GMT-3.4.1 では -Sw が意味を持つ ようになりましたのでそれ以外に変更する必要が出てきました.そこで ba(r)b と非常に分かりにくい場所から -Sr となりました.このことからも やっぱり本家になんとかマージしてもらうことを考える必要があるのかも しれませんね ^^; 以下表にしてまとめます.

- GMT3.1.1版
GMT3.2版
GMT3.4.x版 GMT4.0
GMT4.1.1版
GMT4.1.2
以降
grd データ用 grdbulb grdbarb grdbarb grdbarb
psxy オプション -Sw/-SW -Sr/-SR -Su/-SU -Swb/-SWB

GMT-3.1.1, 3.2 版を利用する場合には昔の文章も 参考にして下さい.

GMT Ver.3.1.1, 3.2 版では Ver.0.4b2 以降、 GMT Ver.3.4.x 版では Ver.0.5b3 以降で psxy での矢羽の描画方向がそれまでと180度変わっています。これは 通常の矢羽を描画する感覚に合わせたものです(というか以前のがバグでした)。

おまけ (バイナリパッケージ)

矢羽根パッチを適用して私の環境でコンパイルしたバイナリパッケージを 作成しました。必要な方はご利用下さい。

■ Vine 5.x 用 RPM/SRPM パッケージ

ファイル名必須サイズ内容備考
GMT459-4.5.9_barb-1.x86_64.rpm 必須 35,920kB GMT 本体 CJK パッチ適用済
GMT459-document-4.5.9_barb-1.x86_64.rpm 選択 35,962kB PDF/HTML ドキュメント/サンプル  
GMT459-full-gshhs2.2.2_barb-1.x86_64.rpm 選択 49,743kB フル解像度海岸線データ  
GMT459-high-gshhs2.2.2_barb-1.x86_64.rpm 選択 12,971kB 高解像度海岸線データ  
GMT459-suppl-4.5.9_barb-1.x86_64.rpm 選択 24,917kB 補助ツール群  
GMT459-4.5.9_barb-1.src.rpm 選択 86,372kB ソースパッケージ  

最低限一番上のパッケージだけをダウンロードすれば動作します。 インストール先は /usr/local/gmt459 になります。 残りのパッケージは必要に応じてご利用下さい。 自分の環境に合わせて再構築したい場合にはソースパッケージを ダウンロードしてリビルドして下さい。

Vine5.x における netCDF パッケージがライブラリのインストール先 /usr/lib, インクルードファイルのインストール先 /usr/include/netcdf と GMT の Makefile の想定と異なっているため、これを解消するため configure 時に NETCDF_INC, NETCDF_LIB が定義されています。 その他のディストリビューションでコンパイルをする場合は ソースパッケージの SPEC ファイルを適切に修正して下さい。 後日一般的なディストリビューション用のパッケージを用意出来れば と思います(多忙につき期待しないでください)。

■ Windows 用パッケージ

現在作っていません

お願い

この拡張パッチは現在のところ試作段階です。このためマニュアル、 引数処理等バグが潜んでいるおそれがあります。

また、要望がありましたら、メール ( mkato at pastel.ocn.ne.jp ) にてお願いします。質問なども受け付けています。

今後の予定

参考 URL

Q & A

Q:すでに GMT を導入しているのですが,パッチをあてて できた grdbarb だけをコピーすればよいでしょうか?
A:他のプログラムにも影響がありますので,全ての プログラムをインストールしなおして下さい.
 
Q:このパッチを再配布してもよいですか?
A:GMT は GPL 配布ですので,このパッチも GPL に従って 配布しています.従って再配布可能です(ただし試作中ですので注意して下さい).
 
Q:日本語化パッチをあてても大丈夫ですか?
A: はい、大丈夫です。
 
Q:昔は grdbulb だったような気がしますが?
A:bulb ではなく barb が正しい綴りでしたので変更させて いただきました
 
Q:psxy のオプションは -Sw ではなかったでしょうか?
A:本家でオプションが利用されてると変更を余儀なくされる 関係上 -Sw -> -Sr -> -Su -> -Swb と変更を繰り返して います。やはり本家にマージしてもらう必要があるみたいです (交渉をして動いてくれたっぽいのですがいつ採用されるのやら…)。
 
Q:使い方は誰にすればよいでしょうか?
A:遠慮なく私までどうぞ。 メール( mkato at pastel.ocn.ne.jp )でお願い します。
 
Q:Windows 版はないのですか?
A: Cygwin 環境でコンパイルした Windows版バイナリを用意してみました。 ただし、私は Windows 使いではありませんのでほとんど動作確認を していませんのでご注意下さい。なお、現在は Windows を再インストール した関係で Cygwin 環境がなくなっておりますのでバイナリを作成 できません。
 
Q:Linuxを使っているのですが RPM版はありませんか?
A: Vine でコンパイルをした最新版のみ提供しています。

謝辞

作成にあたって以下の方にアドバイスをいただきました。ここでお礼を申しあげます。
Alexander (from Belarus) さん
GMT-4.5.9 版の動作確認(…と作成の催促)をしていただきました。
Herm Wojdylakさん
GMT-4.1.4 版の動作確認(…と作成の催促)をしていただきました。
檜垣@気象庁さん
  • GMT-4.5.8 へのパッチを作って頂きました(4.5.9 のパッチはこれをかなり参考に させてもらいましたl)。
  • GMT-4.1.x のパッチに関してアドバイスをしていただきました(内部処理の大半を 檜垣さんのものに修正しました)。
Magne Rudy さん
GMT-4.1.1 版の動作確認(…と作成の催促)をしていただきました。
LE LAY Patrickさん
南半球における表示に関するパッチをいただきました。
佐藤@衛星センターさん
GMT-3.4.1 版のバグを指摘していただきました。
鈴木@つくばさん
バグの指摘と要望をいただきました。

更新履歴

古いバージョンへのパッチ

対象GMT
バージョン
ファイル名ファイル
サイズ
パッチ
バージョン
4.4.0 gmt4.4.0_barb_src.patch2009022446.3kB 20090224
4.2.1 gmt4.2.1_barb_src.patch2007121144.1kB 20071211
4.2.0 gmt4.2.0_barb_src.patch2007052131.6kB 20070521
gmt4.2.0_barb_man.patch2007051911.5kB
4.1.4 gmt4.1.4_barb_src.patch2007052130.7kB 20070521
gmt4.1.2_barb_man.patch2006052211.5kB
4.1.3 gmt4.1.3_barb_src.patch2006060130.5kB 20060601
gmt4.1.2_barb_man.patch2006052211.5kB
4.1.2 gmt4.1.2_barb_src.patch2006052230.3kB 20060522
gmt4.1.2_barb_man.patch2006052211.5kB
4.1.1 gmt4.1.1_barb_patch.diff35.9kB 0.6
gmt4.1.1_barb_man_patch.diff10.5kB
4.0 gmt4.0_barb_patch.diff27.8kB 0.6
gmt4.0_barb_man_patch.diff10.8kB
3.4.5 gmt_3.4.5_barb.patch_v0.5b327.1kB 0.5b3
gmt_3.4.5_man_barb.patch_v0.5b38.0kB
3.4.4 gmt_3.4.4_barb.patch_v0.5b326.5kB 0.5b3
gmt_3.4.4_man_barb.patch_v0.5b37.5kB
3.4.3 gmt_3.4.3_barb.patch_v0.5b326.5kB 0.5b3
gmt_3.4.3_man_barb.patch_v0.5b37.5kB
3.4.2 gmt_3.4.2_barb.patch_v0.5b326.4kB 0.5b3
gmt_3.4.2_man_barb.patch_v0.5b37.5kB
3.4.1 gmt_3.4.1_barb.patch_v0.5b326.4kB 0.5b3
gmt_3.4.1_man_barb.patch_v0.5b37.5kB
3.1.1 gmt_3.1.1_bulb.patch_v0.4b239.4kB0.4b2
3.2 ---

e-mail address