【初心者向け】Python + GMT の (たぶん) 一番簡単な環境構築
少し前に「PyGMT で海底地形図を描く」という記事を書きました.Python ユーザーはこれで良いと思うのですが,そもそも Python になじみのない方にとっては環境構築でつまずく部分があったかもしれません.
Google アカウントを持っていれば,Google Colaboratory という Python の実行環境を無料で利用することができます.初心者の方はここでお試しをするのが良いんじゃないかなと思います.
1. Google Colaboratory を始めてみる
※この章は Google Colaboratory のチュートリアルです.既に使っている方は 2 に飛んでください.
下のリンクにアクセスし,トップページから「ノートブックを新規作成」をクリックします.
以下のような画面が表示されます.この時点で既に,基本的なライブラリがインストールされた Python の実行環境ができています.
試しに,グレーの箇所に 3 + 4 と実行して三角のマークを押してみましょう(数字や記号は半角で入力する必要があります).
「+コード」をクリックすると,新しいコードブロックができます.今度は 3 * 4 と入力して Shift + Enter を押してみましょう.
チュートリアルはこれくらいにしておきます.
「Google Colaboratory 始め方」などで検索するとわかりやすい解説記事がたくさん出てくるので,色々遊んでみてください.
2. Google Colaboratory で海底地形図を描く
2.1. ライブラリのインストール
先ほど「既に基本的なライブラリはインストールされている」と書きましたが,PyGMT のようなニッチな(?)ライブラリは自分でインストールしてあげる必要があります.
ライブラリのインストールについては以下の記事を参考にさせて頂きました.
新しいコードブロックを作成し,以下を入力して実行します.
# ライブラリのインストール
!pip install -q condacolab
import condacolab
condacolab.install()
!mamba install pygmt
実行ボタンを押して数分待ちます.数分すると「セッションがクラッシュしました」という表記が出ますが,そのまま次に進んで大丈夫です.
ライブラリがインストールできたことを確認するため,新しいコードブロックで以下を実行してみましょう.
# ライブラリのバージョンを表示
import pygmt
pygmt.__version__
これでバージョンが表示されれば,インストールができています.私が試した際には 'v0.13.0' と表示されました.
このまま白地図を描いてみましょう.せっかくなので前回の記事とは違うパターンにしました.
fig = pygmt.Figure()
fig.coast(region="g", frame="afg", land="gray", projection="A30/-20/60/12c")
fig.show()
2.2. 地形データのダウンロード
# メッシュデータのダウンロード
!wget https://www.ngdc.noaa.gov/mgg/global/relief/ETOPO1/data/bedrock/grid_registered/netcdf/ETOPO1_Bed_g_gmt4.grd.gz
# ダウンロードしたファイルの展開
!gzip -d ETOPO1_Bed_g_gmt4.grd.gz
左にあるフォルダのアイコンをクリックするとファイルを見ることができます.ETOPO1_Bed_g_gmt4.grd という展開されたファイルがあれば OK です.
2. 3 地形図の描画
ここから先は前回の記事と同じです.
grid = 'ETOPO1_Bed_g_gmt4.grd' #グリッドファイルへのパス
region = [135, 155, 5, 25] # 描画範囲
fig = pygmt.Figure()
fig.grdimage(grid,
cmap = 'haxby',
region = region,
frame = ['WSen', 'xaf', 'yaf']
)
fig.colorbar()
# マリアナ海溝最深部
ChallengerDeep = {"lat": 11.373333,
"lon": 142.591667}
# 点を打つ
fig.plot(x = ChallengerDeep["lon"],
y = ChallengerDeep["lat"],
fill = 'black',
style = 'a0.7c',
pen = '1p,white'
)
# 文字を書く
fig.text(text = 'Challenger Deep',
x = ChallengerDeep['lon'] + 0.5,
y = ChallengerDeep['lat'],
font = '12p,black',
justify='LM' # Left Middle
)
fig.show()
3. 注意点
この記事では,なるべくコピペした呪文を打つだけで描画できることを重視しています.
その代償として,プログラムを起動するたびにライブラリとデータセットをダウンロードする必要があり,非常に遅いです.
お試ししてみて,「悪くないかも」と思って頂けたら,ローカル環境に PyGMT のインストールをしてみてはいかがでしょうか?少々面倒ではあるのですが,,,