gmt basemapの使い方

basemap — GMT 6.4.0 documentation

gmt basemap は地図やグラフの枠を描くためのコマンドです。
GMT5までは、gmt psbasemapというコマンドでした。

ワンライナーで書く人には必要のないコマンドだったりします(後述)

グラフの枠を描く

gmt basemap -JX[ヨコの長さ]/[タテの長さ] -R[描画範囲] -B[x|y|z][a][f][g][+l”label”] -B[WSEN][+t”title”]
※ タテの長さを指定しない場合はヨコの長さと同じ
※ -B[WSEN]には数値を描きたい方角を入力する。ラベルも描きたい場合は大文字にする。

普通のグラフを描く

たとえば、

  • 12cm平方
  • 描画範囲は0から100まで
  • X軸・Y軸、共に10間隔の主目盛線(a)、1間隔の目盛(f)、5間隔の副目盛線(g)とする。
  • 数値は左・下に描く

というグラフを描く際は、

#!/bin/bash
gmt begin plot jpg
    gmt basemap -JX12 -R0/100/0/100 -Bxa10f1g5 -Bya10f1g5 -BWSne
gmt end

この結果が、

となる。

-Bオプションについて

GMTで面倒くさいのが -B オプション。
色々と遊んでみましょう。

  • -Bxa20f1g5 -Bya10f1g5 のとき (X軸の主目盛線は20間隔、1間隔の目盛(f)、5間隔の副目盛線(g))

  • -Bxa20 -Bya10f1g5 のとき (X軸の主目盛線は20間隔)

  • -Ba のとき (X軸もY軸も主目盛線だけ) -Ba-Bxyaの略

  • -Bxy のとき (枠だけ描く)


#!/bin/bash
gmt begin plot jpg
    gmt basemap -JX12 -R0/100/0/100 -Bxa10f1g5+l"X" -Bya10f1g5+l"Y" -BWSNE
gmt end
  • -BWSNE のとき (4辺に目盛りとラベルを描く)

  • -BWSne のとき (4辺に目盛りと2辺にラベルを描く)

  • -BWS のとき (2辺に目盛りと2辺にラベルを描く)

常用対数スケールのグラフを描く

gmt basemap -JX[ヨコの長さ][l]/[タテの長さ][l] -R[描画範囲] -B[x|y|z][a][f][g][+l”label”] -B[WSEN][+t”title”]
※ タテの長さを指定しない場合はヨコの長さと同じ
※ 常用対数スケールにしたい軸の長さの後に”l”を付ける。

たとえば、

  • 12cm平方
  • 描画範囲はX軸は0から10000まで、Y軸は1から10000まで。
  • Y軸は常用対数スケールにする。
  • X軸・Y軸、共に目盛り間隔はおまかせ。
  • 数値は左・下に描く

というグラフを描く際は

#!/bin/bash
gmt begin plot jpg
    gmt basemap -JX12/12l -R0/10000/1/10000 -Bxa10f1g5 -Bya10f1g5 -BWSne
gmt end

この結果が、

となる。

なお、10のべき乗表示にしたい場合は、

#!/bin/bash
gmt begin plot jpg
    gmt basemap -JX12/12l -R0/10000/1/10000 -Bxa10f1g5 -Bya1pg0.5p -BWSne
gmt end

のように数値の後に”p”をつければOKです。

時系列グラフを描く

gmt basemap -JX[ヨコの長さ]/[タテの長さ] -R[描画範囲] -B[x|y|z][a][y|o|d|etc.][f][y|o|d|etc.][g][y|o|d|etc.][+l”label”] -B[WSEN][+t”title”]
※ タテの長さを指定しない場合はヨコの長さと同じ
※ 日時は少なくとも日にちまで必要 (例 : 2020-04-01)。
※ 目盛り間隔は数値のあとに”y”を付けると年、”o”を付けると月、”d”を付けると日。

目盛り間隔の設定の詳細は公式ドキュメント参照

[https://docs.generic-mapping-tools.org/dev/gmt.html#b-full]

たとえば、

  • ヨコ30cm,タテ15cm
  • X軸の範囲は2000年から2020年まで
  • Y軸の範囲は0から100まで
  • 間隔は1年ごとに主目盛線、6か月ごとに副目盛線

というグラフの枠を描く場合は、

#!/bin/bash
gmt begin plot png
    gmt basemap -JX30/15 -R2000-01-01/2020-12-31/0/100 -Bxa1Yg6o -Byafg -BWSne
gmt end

この結果が、

となる。

ラベルを描く

-B(afg) オプションに +l をつけるとラベルを指定することができます。
たとえば、

#!/bin/bash
gmt begin plot jpg
    gmt basemap -JX12 -R0/100/0/100 -Bxa10f1g5+l"X" -Bya10f1g5+l"Y" -BWSne
gmt end

とすると、

となります。

タイトルを描く

-B(WSNE) オプションに +t をつけるとラベルを指定することができます。
たとえば、

#!/bin/bash
gmt begin plot jpg
    gmt basemap -JX12 -R0/100/0/100 -Bxa10f1g5+l"X" -Bya10f1g5+l"Y" -BWSne+t"hogehoge"
gmt end

とすると、

となります。

地図を枠を描く

gmt basemap -J[投影法][ヨコの長さ]/[タテの長さ] -R[描画範囲] -B[x|y|z][a][f][g][+l”label”] -B[WSEN][+t”title”]

投影法については下記参照。基本はメルカトル図法(-JM)で大丈夫。

記号図法
-JCカッシーニ図法
-JJミラー円筒図法
-JMメルカトル図法
-JO斜めメルカトル図法
-JQ等距円筒図法
-JT横メルカトル図法
-JUユニバーサル横メルカトル図法
-JY基本円筒図法
-JAランベルト正積方位図法
-JE正距方位図法
-JF心射図法
-JG正射図法
-JS一般平射図法
-JBアルベルス正積円筒図法
-JD正距円筒図法
-JLランベルト正角円錐図法
-JHハンメル図法
-JI正弦曲線図法(サンソン図法)
-JKエッケルトIV及びVI図法
-JNロビンソン図法
-JRヴィンケル第3式図法
-JVファン・デア・グリンテン図法
-JWモルワイデ図法

たとえば、

  • 投影法はメルカトル図法
  • ヨコの長さは12cm
  • 描画範囲は「北緯20度・東経120度~北緯40度・東経150度」
  • 目盛り間隔はおまかせ
  • Japanというタイトルを付ける

という地図の枠を作成する場合は、

#!/bin/bash
gmt begin plot jpg
    gmt basemap -JM12 -R120/150/20/50 -Bafg -BWSNE+t"Japan"
gmt end

となり、この結果が、

![](https://dandango.pw/wp-content/uploads/2020/07/wp_editor_md_55f94ef56206a32603cf29729ebaba66.jpg)

となります。

なお、地図のサイズは縮尺でも指定できます。
たとえば、2500万分の1の上の地図を描きたい場合は、

#!/bin/bash
gmt begin plot jpg
    gmt basemap -Jm1:25000000 -R120/150/20/50 -Bafg -BWSNE+t"Japan"
gmt end

とすればOKです。

basemapは不要?

実は、gmt basemapを使わなくても図が描けたりします。
個人的にはスクリプトが汚くなるので、おすすめしていません。

たとえば、先ほどの、

  • 投影法はメルカトル図法
  • ヨコの長さは12cm
  • 描画範囲は「北緯20度・東経120度~北緯40度・東経150度」
  • 目盛り間隔はおまかせ
  • Japanというタイトルを付ける

は海岸線を描く、gmt coastを用いて、

#!/bin/bash
gmt begin japan png
    gmt coast -JM12 -R120/150/20/50 -Bafg -BWSNE+t"Japan" -Df -W0.05
gmt end

を実行すれば、

![](https://dandango.pw/wp-content/uploads/2020/07/wp_editor_md_d068438eebb07a58e397727e84506fd8.jpg)

と一気に描けます。楽をしたい人にはお勧めです。

コメント

タイトルとURLをコピーしました