pygmtの使い方 その1 地図を描く

pygmtを用いて以下のような地図を作成する方法をご紹介します。


図1 japan.png

図2 world.png



1.日本地図を描く

まずは日本地図を描いてみましょう。

例として図1のような日本地図を作成するコードを示します。

import pygmt

fig = pygmt.Figure()

fig.coast(
    projection  = 'M12c',
    region      = (120,150,20,50),
    shorelines  = '0.5p,black',
    area_thresh = 10,
    resolution  = 'f',
    land        = '230/250/220',
    water       = '180/180/250',
)

fig.basemap(
    frame       = ['WSEN', 'xa10f5', 'ya10f5']
)

fig.savefig('japan.png')

以下、詳しく解説していきます。

最初にpygmtをインポートします。

import pygmt

次にpygmtで図を作成するために、

fig = pygmt.Figure()

としています。


こうすることで、fig.○○○のような形式でGMTと同じようなコマンドを使うことができるようになります。


次の段では、pygmt.Figure.coastを用いて地図を描いています。

fig.coast(
    projection  = 'M12c',
    region      = (120,150,20,50),
    shorelines  = '0.5p,black',
    area_thresh = 10,
    resolution  = 'f',
    land        = '230/250/220',
    water       = '180/180/250',
)

fig.coast()のカッコ内でオプションを指定しています。


projectionは投影方法を指定しており、'M'はメルカトル図法を表しています。メルカトル図法以外にも様々な投影法が指定できるのでこちらを参考にしてください。'12c'は図のサイズの指定で、12センチメートルを意味しています。


regionは作図する地図の範囲を指定しています。regionは(最低経度, 最高経度, 最低緯度, 最高緯度)のように緯度経度の範囲を()内にカンマ区切りで指定します。今回は、(東経120°, 東経150°, 北緯20°, 北緯50°)の範囲を指定しています。


shorelinesは海岸線を書く時のペンの太さと色を指定しています。


area_threshは地図を描く時の下限の指定で、指定した面積よりも小さい島などは地図描写されなくなります。面積の単位は㎢で、今回は10㎢としています。


resolutionは海岸線の解像度の指定で、f(full)、h(high)、i(intermediate), l(low), c(crude)の5段階で指定できます。fが最も細かく、cが最も粗いです。


landとwaterはそれぞれ陸域と海域の塗りつぶしの色を指定しています。塗りつぶしの色はR/G/Bで指定できます。


次に、pygmt.Figure.basemapで図の枠を描写しています。

fig.basemap(
    frame       = ['WSEN', 'xa10f5', 'ya10f5']
)

frameでは、枠の形式を指定しています。'WSEN'は東西南北のどの方角に軸を描写するかを指定できます。大文字の方角に軸が描写されます。例えば、'WSen'とすると、西側と南側に軸が描写され、東側と北側には軸が描写されません。


'xa10f5'と'ya10f5'はそれぞれ、縦軸と横軸の間隔を指定しています。aの後の数値は数字の表示する数字の間隔、fのあとの数値は目盛りの間隔を指定しています。例えば、'a10f5'では、数値が10°ごと、目盛りが5°ごとに描写されます。


最後に、

fig.savefig('japan.png')

とすることで、図1のような'japan.png'というファイル名の日本地図が作成されます。


2.世界地図を描く

次は世界地図を描いてみましょう。

例として図2のような世界地図を作成するコードを示します。

import pygmt

fig = pygmt.Figure()

fig.coast(
    projection  = 'N20c',
    region      = (-30,330,-90,90)
    shorelines  = '0.5p,black',
    area_thresh = 10,
    resolution  = 'f',
    land        = '230/250/220',
    water       = '180/180/250',
)

fig.basemap(
    frame       = ['WSEN','xa60f30g30','ya30f15g30']
)

fig.savefig('world.png')

日本地図の場合と同様、fig.coast()でオプションを指定して世界地図を描いています。

今回は、projectionを'N20c'として、ロビンソン図法での描写を指定しています。


regionでは(-30,330,-90,90)とすることで、日本付近の東経150°が地図の中心に来るようにしています。


次に、pygmt.Figure.basemapで図の枠を描写していますが、'xa60f30g30'のようにa、fの後ろにgが追加されています。gの後の数字はグリッド線の間隔を指定しています。例えば、'a30f15g30'では、数値が30°ごと、目盛りが15°ごと、グリッド線が30°ごとに描写されます。


最後に、

fig.savefig('world.png')

とすることで、図2のような'world.png'というファイル名の世界地図が作成されます。



閲覧数:5回0件のコメント