GMT(The Generic Mapping Tools)

GMTはコマンドを使って地図やグラフなどを書くためのソフトです。
ここではWindows上での操作を中心に扱っています。

グリッドファイルの作成

まず,元となるグリッドデータをダウンロードします。
今回は,陸上と海洋のデータをあわせてコンパイルしてある,GINA(Geographical Information Network of Alaska) global grid (アラスカ大学)のデータを使用することにしました。
グリッドデータは全球で8個に分けられていて,1つ1つが激重(200MB強)です。
ダウンロードの際は注意して,相手サーバに負担をかけないようにしましょう。

グリッドファイルの切り出しと結合

ダウンロードしてきたファイルを解凍してできたSouth_East.grdとNorth_East.grd.bz2から緯度 N10−S50° 経度 E20−80°のグリッドファイルAtlantisBank.grdを作成することにします。

切り出す範囲を決めるため,グリッドファイルの範囲を確認しておきます。

grdinfo [グリッドファイル名] 
//South_East.grdの情報を見る
C:\GMT>grdinfo South_East.grd
South_East.grd: Title:
South_East.grd: Command: grdcut -V -R0/90/-90/0 South_East/South_East_wings.grd
-GSouth_East/South_East.grd
South_East.grd: Remark:
South_East.grd: Pixel node registration used
South_East.grd: grdfile format # 0
South_East.grd: x_min: 0 x_max: 90 x_inc: 0.00833333 units: user_x_unit nx: 10800
South_East.grd: y_min: -90 y_max: 0 y_inc: 0.00833333 units: user_y_unit ny: 10800
South_East.grd: z_min: -6732.72 z_max: 5825 units: user_z_unit
South_East.grd: scale_factor: 1 add_offset: 0

x_min,x_max,y_min,y_maxあたりをチェックしておきます。

次に切り出しを行います。結合にはきちんと隣り合うグリッドファイルが必要となるので,同じ経度(E20-80°)で切り出すことにします。

grdcut [gridファイル名] -G[切り出しgridファイル名] -R[西(経度)]/[東(経度)]/[南(緯度)]/[北(緯度)]
//South_East.grdをE20-80 S50-0で切り出し
C:\GMT>grdcut South_East.grd -Gsouthsub1.grd -R20/80/-50/0

//North_East.grdをE20-80 0-N10で切り出し
C:\GMT>grdcut North_East.grd -Gsouthsub2.grd -R20/80/0/10

次は,2つのファイルを結合します。

grdpaste [gridファイル1] [gridファイル2] -G[作成gridファイル]
// southsub1.grdとsouthsub2.grdを結合してAtlantisBank.grdを作成
C:\GMT>grdpaste southsub1.grd southsub2.grd -GAtlantisBank.grd

これでめでたくAtlantisBank.grdが完成。

陰影ファイルの作成

grdgrdientを使います。

grdgradient [gridファイル名] -G[作成gridファイル名] -A[光を当てる方向(度)] -Ne[0.0-1.0]

-Neがよくわからないときは0.6あたりから始めると良いらしい...です。はい。私はわかってません(^_^;)
なので,以下のような感じにしました。-Aは0/90のようにして,2方向から光を当てるというのも良いらしいです。

C:\GMT>grdgradient AtlantisBank.grd -GAtlantisBank_grad.grd -A45 -Ne0.6

GMTグリッド描画

grdimage [グリッド.grd] -R[右経度]/[左経度]/[下緯度]/[上緯度] 
   -Jm[cm/1度]c -C%GMTHOME%\share\[カラーパレット.cpt] -P > [出力.eps]

・ためしてみたもの

//インド洋の海底の様子を描画
C:\GMT>grdimage AtlantisBank.grd -R20/80/-50/10 -Ba10f5g5 -Jm0.5c -C%GMTHOME%\share\GMT_topo.cpt
-IAtlantisBank_grad.grd -P > AtlantisBank.eps

日本周辺における地図の作成

クリックすると拡大します

日本周辺図と書きつつも北関東〜南東北の範囲です。原図として必要だったもので(^_^)

ここでは、海岸線を書くためのpscoastと、プロットするためのpsxy、テキストを書くためのpstextを使いました。
詳しいコマンドの使い方はそのうち書きます(^_^;

コマンドが多くなって書く量が増えるので、コマンドはバッチファイル(japan_coast.bat)にまとめました。また、県庁所在地を示すためのデータファイル(japan_pref_capital.txt)も用意しました。

pstextに使用するデータファイルの書式は、
経度 緯度 フォントサイズ 角度 フォント番号 位置合わせ 文字データ
の順番で。

フォント番号の確認は pstext -Lで。ちなみに日本語フォントはRyumin-Lightが35、GothicBBB-Mediumが37と表示されたので使えそう。と言うわけで文字データには漢字を使ってみました。なお、保存時には適当なテキストエディタで文字コードをEUC-JPにしないと表示されません。
位置合わせは、横位置(Left/Center/Right)、縦位置(Top/Middle/Bottom)の頭文字の組合せで。右上を指定座標にあわせるならRTみたいな感じに。

以上を試した結果が右の図。GSviewで問題なく表示できました。

japan_coast.bat

REM 描画範囲の設定
SET region=137.5/34.8/141.5/38.8r
 
REM 投影法・倍率の設定
SET proj=s139.5/38/1:2500000

REM 海岸線の解像度
SET resolution=h

REM 地図周りの設定
SET boundary=a1g1WSne

REM 出力ファイル名の設定
SET epsfile=japan_coast.eps

REM 調査地点名ファイルの設定
SET pointlist=japan_pref_capital_kanji.txt

REM 都市名ファイルの設定
SET citylist=japan_pref_capital_kanji.txt

pscoast -R%region% -J%proj% -B%boundary% -D%resolution% [本来は1行で]
     -A50 -G128/255/128 -S128/128/255 -W -P -K -V > %epsfile%
psxy %pointlist% -R%region% -J%proj% -Sc0.2c -G255/128/128 [本来は1行で]
     -P -O -K -V >> %epsfile%
pstext %citylist% -R%region% -J%proj% -G0/0/0 -P -O -V >> %epsfile%
PAUSE

japan_pref_capital_kanji.txt

141:20.485 43:03.515 10 0 37 RB 札幌市
140:44.244 40:49.283 10 0 37 RB 青森市
141:09.096 39:42.127 10 0 37 LB 盛岡市
140:52.206 38:16.077 10 0 37 LB 仙台市
140:06.085 39:43.069 10 0 37 RB 秋田市
140:21.487 38:14.255 10 0 37 RB 山形市
140:28.038 37:45.003 10 0 37 LT 福島市
140:26.483 36:20.304 10 0 37 LT 水戸市
139:53.000 36:33.555 10 0 37 LB 宇都宮市
139:03.391 36:23.282 10 0 37 LT 前橋市
139:38.563 35:51.276 10 0 37 LB さいたま市
140:07.223 35:36.160 10 0 37 LB 千葉市
139:41.299 35:41.221 10 0 37 RT 東京都
139:38.329 35:26.518 10 0 37 LT 横浜市
139:01.234 37:54.088 10 0 37 RB 新潟市
137:12.412 36:41.422 10 0 37 LB 富山市
136:39.268 36:33.461 10 0 37 RB 金沢市
136:13.179 36:03.546 10 0 37 RB 福井市
138:34.062 35:39.507 10 0 37 RB 甲府市
138:10.512 36:39.046 10 0 37 LB 長野市
136:43.196 35:23.281 10 0 37 LB 岐阜市
138:22.586 34:58.368 10 0 37 LT 静岡市
136:54.234 35:10.487 10 0 37 LB 名古屋市
136:30.310 34:43.488 10 0 37 LT 津市
135:52.065 35:00.157 10 0 37 LT 大津市
135:45.199 35:01.156 10 0 37 RB 京都市
135:31.107 34:41.107 10 0 37 CB 大阪市
135:10.589 34:41.285 10 0 37 RT 神戸市
135:49.582 34:41.069 10 0 37 LT 奈良市
135:10.030 34:13.336 10 0 37 LT 和歌山市
134:14.156 35:30.139 10 0 37 LB 鳥取市
133:03.017 35:28.197 10 0 37 RB 松江市
133:56.042 34:39.420 10 0 37 RB 岡山市
132:27.343 34:23.483 10 0 37 RB 広島市
131:28.148 34:11.091 10 0 37 RB 山口市
134:33.333 34:03.567 10 0 37 LT 徳島市
134:02.357 34:20.244 10 0 37 RT 高松市
132:45.562 33:50.298 10 0 37 RT 松江市
133:31.512 33:33.349 10 0 37 LT 高知市
130:25.055 33:36.223 10 0 37 RB 福岡市
130:17.589 33:14.578 10 0 37 LB 佐賀市
129:52.245 32:44.415 10 0 37 RT 長崎市
130:44.294 32:47.231 10 0 37 LT 熊本市
131:36.449 33:14.175 10 0 37 LB 大分市
131:25.246 31:54.388 10 0 37 LB 宮崎市
130:33.285 31:33.365 10 0 37 LT 鹿児島市
127:40.513 26:12.451 10 0 37 RB 那覇市

参考リンク