手軽に地図を作成できるツールとして、GMT(The Generic Mapping Tools)があります。
筆者はこれまでGMT5を使っていましたが、昨年2019年の11月にver6.0.0が出たようですので、GMT6に挑戦してみることにしました。
すぐ忘れてしまう筆者の備忘録も兼ねて、ここにGMT6の使い方を記録していきたいと思います。
地図描画の基本を押さえていく
basemap
gmt basemap
を使って、地図を描くのに必要な基本情報を与えていきます。
早速
①地図の投影法
②縮尺
③描画範囲
④目盛りの取り方
⑤その他の装飾
を決めていきます。
①メルカトル図法や正距方位図法など様々な地図の投影法が存在しますが、その詳細については割愛します。
そして今回はよく目にするメルカトル図法を採用します。
②縮尺(地図の大きさ)は5万分の1(1:50000)のようにも指定できますし、図の幅(例えば15cm)のようにも指定できます。今回は15cmにしましょう。
③描画範囲は「九州を描く」ことを目的にしていますので、ざっくりと東経128度〜東経133度、北緯30度〜北緯35度の範囲にします。
④目盛りの取り方は、GMTに丸投げしました(笑)
⑤最後に、軸のラベルは東西南北全方向につけることとし、**図のタイトルとして「Kyushu」**を描くようにします。
上記のような条件で地図を描く準備をします。
#!/bin/bash
gmt begin kyushu png
gmt basemap -JM15 -R128/133/30/35 -Bafg -BWSNE+t"Kyushu"
gmt end
-J
オプションで投影法と図のサイズを決めます。M15
で図の幅が15cmの地図をメルカトル図法で描くという意味です。
-R
オプションで描画範囲を決めます。128/133/30/35
で東経128度〜東経133度、北緯30度〜北緯35度の範囲という意味です。
-B
オプションで図の目盛りなどの調整をします。a
は基本となる目盛り(目盛のケバの間隔)、f
は細かい目盛り(枠のケバの間隔)、g
でグリッドの幅(格子線の間隔)が決まるようです。a2f1
のようにすれば、2度ずつの目盛りと1度ずつの小さな目盛りをつけられることになります。さらにWSNE
で東西南北に軸ラベルをつけること、+t"Kyushu"
で**「Kyushu」というタイトルをつける**ことを指定しています。
思い通りの枠と九州(概念)が描かれました!
coast
ここからは九州(概念)を顕在化させていきます。
gmt coast
を使って、陸地の情報を加えます。
#!/bin/bash
gmt begin kyushu png
gmt basemap -JM15 -R128/133/30/35 -Bafg -BWSNE+t"Kyushu"
gmt coast -Df -W0.05
gmt end
-D
オプションで地図の精度を決めます。full, high, intermediate, low, crudeの5種類で、f
が一番精細になります。c
でもやってみてください。ひどいですよ。
-W
オプションで線の幅を決めます。0.05
では0.05ポイントの幅の線となります。
見事に九州周辺を描くことができました!
陸地や海に色もつけたい
このままでは味気ないので色もつけてみましょう。ついでにスケール(縮尺)も付けておきます。
gmt coast
でいけます。
#!/bin/bash
gmt begin kyushu png
gmt basemap -JM15 -R128/133/30/35 -BWSNE+t"Kyushu"
gmt coast -Df -W0.05 -G103/202/77 -S186/223/229 -Lg130.5/29.5+c32+w300+f+l"km" -Bafg
gmt end
-G
オプションで陸地(乾いた領域)の色を、-S
オプションで海(湿った領域:水域)の色を指定することができます。今回はRGBで指定しました。
-L
オプションでスケールを書き加えます。-Lg130.5/29/7
は地図上の座標でスケールの中心位置を決めています。-Lx
で紙面における位置でも指定できます。+c32
は北緯32度における距離を用いる意味です。地球は球体ですので、指定する緯度によって経度方向の距離が変わってきます。+w300
は300kmのスケールを描画すること、+f
は白黒の棒で表現すること、+l"km"
はkmのラベルをつけることを意味しています。
また、基本的に後から加えたコマンドは上書きされていくため、グリッド線が隠れないようにgmt coast
で-Bafg
を使っています。
これでだいぶ地図らしくなったと思います!
次回予告
今回はここまでにします。
参考にしたのは以下のdocumentationです。英語ですが…
basemap
coast
次回で、DEM(数値標高モデル)を使った陰影段彩図が描けるようにしたいと思います。
ありがとうございました!