GMTでカッコいい地図を作る方法

海域のデータをGISで処理したいなと調べていたところGMTでの作成例を見つけて、これはカッコいい!真似したいと思ったので、その方法をハッキング?試行錯誤したのでメモっときます。(オリジナルの作者さまに感謝です)


↑できあがり

0.インストール

ここを参考にしました。
http://www19.atwiki.jp/suisan/

1.データを取ってくる。

http://topex.ucsd.edu/cgi-bin/get_srtm30.cgi
ここからSRTM30 PLUSのデータを取ってきます。範囲は任意ですが、W135 E150 N46 S36にしました。今回は、data.txtというファイル名にしました。(これはchromeよりIEで作業した方がいいかも。)

2.netCDF(grd)データに変換

data.txtを作業フォルダに移動して、以下のコマンドを打ってdata.grdを作成します。

surface data.txt -I30c -Gdata.grd -R135/150/36/46

3.陰影データを作成

data.grdからdata.iniを作成します。

grdgradient.exe data.grd -A270 -Gdata.int -Ne0.9 -M

4.地形画像を作成

C:\programs\GMT4\share\cpt\GMT_relief.cpt を作業フォルダにコピーして以下のコマンドを打ちます。

grdimage.exe  data.grd  -Idata.int -R135/150/36/46 -Jm0.7 -CGMT_relief.cpt -P -K > test.eps

5.フォントの設定を変更

軸のフォントを変更します。

gmtset ANNOT_FONT_SIZE_PRIMARY 10p
gmtset ANNOT_FONT_PRIMARY Times-Roman

6.海岸線を重ねあわせ

地形画像に海岸線と枠を重ね合わせます。

pscoast.exe -R135/150/36/46 -BWSne2 -Jm0.7 -Dh -W0.1p/50/50/50 -O >> test.eps

7.画像に変換

test.epsをtest.jpgに変換します。

ps2raster.exe  test.eps -A -Qt -Qg

8.上記作業を一括で

テキストに以下を貼り付けてtest.shというファイル名で保存します。(terapadとかで改行コードをLFに)

surface data.txt -I30c -Gdata.grd -R135/150/36/46
grdgradient.exe data.grd -A270 -Gdata.int -Ne0.9 -M
grdimage.exe  data.grd  -Idata.int -R135/150/36/46 -Jm0.7 -CGMT_relief.cpt -P -K > test.eps
pscoast.exe -R135/150/36/46 -BWSne2 -Jm0.7 -Dh -W0.1p/50/50/50 -O >> test.eps
ps2raster.exe  test.eps -A -Qt -Qg
#gsviewで確認したければ↓のコメントをはずして下さい
#gswin32 test.eps

以下のコマンドを打ては、上記の作業を一括で実行できます。

bash test.sh

データについてメモ

「Satellite Geodesy at the Scripps Institution of Oceanography」

http://topex.ucsd.edu/WWW_html/mar_topo.html

Google Earthにも採用されている地形データ(SRTM30 PLUS)
SRTM30 PLUSは、陸域は30秒メッシュ(約1km)のSRTM30のデータで(高緯度地域はGTOPO30で補完)、海域は1分メッシュを他の詳細なデータで補完したデータ。

参考

「500mメッシュ水深データ」

http://jdoss1.jodc.go.jp/cgi-bin/1997/depth500_file.jp

日本周辺海域の詳細なデータ。日本周辺でSRTM30 PLUSとどれぐらいデータの精度が違うのかな?

詳細はこちら