Google ColaboratoryでGMT(PyGMT)を使う #1

[Google ColaboratoryでGMT(PyGMT)を使う #2 ->](https://qiita.com/after-a-rain/items/80782fd97e27e8627326)

# はじめに
GMT(Generic Mapping Tools)は地震や気象，地質などの地球科学分野では白地図や地形図の作図するときに使われる，ハワイ大学が作成したツールです．体裁の整った綺麗な図ができることが特徴で，シェルスクリプトを書くことで地震データや気象データをプロットして凝った作図ができるため広く使われています．

しかし，bash環境がベースとなっているため，Mac/Linuxではネイティブ対応していますが，Windows環境ではCygwinやWSL等でbash環境を構築しなければなりません．また，複雑な作図にはシェルスクリプトを作成しなければならず，プログラミング経験のない/少ない地球科学分野の研究者や学生にとって，しばしば障壁となっています．

このGMTですが、PyGMTというPythonライブラリが提供されています．更に，Google ColabratoryでPyGMTを動かすことで，ブラウザ上でGMTの作図を行うことができます．今回はその紹介をしたいと思います．

#1では日本地図の描画を，#2ではその日本地図の上に気象庁の震源データをプロットしてみます．



# 用語の解説
+ Python
プログラミング言語．比較的簡単とされる．ライブラリが沢山あってそれを駆使すると大体やりたいことができる．
+ Google Colabratory
Pythonをインターネット上で使うことができるGoogleのサービス．ブラウザで使えるのでPC上でPythonを構築しなくていい．Jupyter Notebookという，ノートにプログラムを書いてその都度動かせることが特徴．
+ pyGMT
今回の真打．GMTの機能をPython上で動かせる．GMTの機能はほぼ全部使えそう。

# やりかた
### 1.Google Colabratoryにアクセス
まず，google colabratoryにアクセスします．
https://colab.research.google.com/
「Colaboratory へようこそ」が開かれるので一旦無視して，左上のファイルから「ノートブックを新規作成」を選択します．すると，「Untitled1.ipynb」が作られますので，適当に名前を変えておきましょう．
このとき，Googleアカウントのログインを求められたら，ログインしてください．

次のような画面になればOKです．
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/884474/0b00793a-e1fe-1f06-a34e-a56ba08815d2.png)



### 2.Colabへのpygmtのインストール
最初のセルに次のコードを入力してCtrl+Enterするか，左の再生ボタンをクリックし，2分ほど待ちます．
この時，「セッションがクラッシュしました」と表示されますが，無視して問題ありません．

※2023/10/20: condacolabを使ったインストール方法に変更しました．
```Python
!pip install -q condacolab
import condacolab
condacolab.install()
!mamba install pygmt
```

まず，Google Colabratory上にpyGMTとpyGMTに必要なライブラリをインストールします．Google Colabは一定時間でその環境が消えてしまいますので，毎回インストールする必要があります．後述のearth_reliefのダウンロードも同様です．


pyGMTは予めGMTがインストールされた環境上でPythonからアクセスするものですので単にpipでインストールしただけでは現在は使えません．mambaではGMTのインストールもするようで，manbaでpygmtをインストールする必要があります．(公式でconda/mamba環境でのインストールを推奨しています．)

### 3.日本地図の描画
次に，左上の[+コード]をクリックしてセルを増やし，以下のコードを入力します．
```Python
import pygmt
fig = pygmt.Figure()

# 1.Define region of interest around Japan
region = [120, 150, 20 , 50]

title = f"Japan Map"

# 2.Load sample grid (1 arc-minute global relief) in target area
grid = pygmt.datasets.load_earth_relief(resolution="01m", region=region)

# 3.Plot original grid
fig.basemap(region=region, projection="M12c", frame=["afg", f"+t{title}"])
fig.grdimage(grid=grid, cmap="geo")
fig.coast(region=region, resolution='f', shorelines=True, area_thresh=50)
fig.show()

```
1.で日本周辺の緯度経度をリストで定義しておきます．2.では1.で定義した地域のearth relief画像をロードしています．3.で描画をしていますが，流れは基本的にGMTと同じで、basemap, gridimage, coastを順に設定しています．

参考: [Clipping grid values — PyGMT](https://www.pygmt.org/latest/gallery/images/grdclip.html)


### 4.出力
![JapanMap.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/884474/4027d281-3246-d109-6b76-be92ec9dd453.png)

# おわりに
PythonでGMTを使うメリットは，データスクレイピングやpandasでの大量のデータの処理，numpyやscipyでの計算の結果を一気に可視化できる点にあると思います．GMTの~~めんどくさい~~bashスクリプトを，Pythonでは関数の引数で書けるので扱いやすく，とっつきやすくなっているのではないでしょうか．また，Google Colabratory上で動かせるのでローカルで環境構築をしなくてよく，PCの能力やOSを問わず使える点もメリットかと思います．
[#2](https://qiita.com/after-a-rain/items/80782fd97e27e8627326)では，気象庁のデータをスクレイピング→データ整形→GMTでプロットを行ってみたいと思います．

[#2へ続く](https://qiita.com/after-a-rain/items/80782fd97e27e8627326)

# 参考文献
+ pyGMT関連
    + [PyGMT](https://www.pygmt.org/latest/)
    + [PyGMT-HOWTO — pygmt-howto](https://tktmyd.github.io/pygmt-howto-jp/pygmt.html)
+ インストール関連
    + [COLAB example on github "Try PyGMT online" not working any more - Q&A / PyGMT Q&A - GMT Community Forum](https://forum.generic-mapping-tools.org/t/colab-example-on-github-try-pygmt-online-not-working-any-more/1790/10)
    + [新潟県の月ごとの温度変化を衛星データで取得する #Python - Qiita](https://qiita.com/oz_oz/items/6b6ae789a8c6ccacb98a)