GMTをWindowsで使う - #3 台風経路図を描く

## はじめに
今回は気象庁の台風位置表のデータを用いて、台風の経路図を描いてみたいと思います。単に経路を線で示すだけでなく、その時々の中心気圧もわかるようにプロットに色をつけていきます。

## 入力データの作成
気象庁の[台風位置表のページ](https://www.data.jma.go.jp/yoho/typhoon/position_table/index.html)に行くと、2001年以降の台風のデータを取得できます。PDF形式とCSV形式があり、PDFは台風ごと、CSVは年ごとのデータになっています。ここでは2019年のCSVファイルをダウンロードして、そこから台風19号の緯度・経度・中心気圧のデータを抜き出します。

抜き出してきたデータを「track.csv」という名前のCSVファイルとして保存します。ここで、このCSVファイルの中身は下のように、1列目を経度、2列目を緯度、3列目を中心気圧とします。緯度⇒経度と並べたくなりますが、GMTへの入力に際しては経度⇒緯度の順にする必要があります。

``` name:track.csv
164.4  15.7  1008
162.7  15    1006
161.1  15.3  1004
  ︙
```

## スクリプトの解説
スクリプト
```
set track=track.csv
set cpt=color.cpt
gmt makecpt -Cseis -T920/980/10 -D > %cpt%
gmt begin output png
  gmt coast -R135/145/25/40 -JM10 -BWesN -Bxa5f1 -Bya5f1 -Ggray
  gmt plot %track% -W1
  gmt plot %track% -C%cpt% -Sc0.3 -W1
  gmt colorbar -C%cpt% -DJCB+o0/0.5+w10.0/0.4+e0.3 -B10+l"Central pressure (hPa)"
gmt end
pause
```

出力結果
<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3576166/aa54f4c5-77d8-33a5-ca10-3839f73fcd95.png" >

### makecpt
`makecpt`は#2でも扱いましたが、その際に出てこなかったオプションを今回は使っているので、それらについて説明したいと思います。

`-T`のオプション：CPTのレンジの最小値と最大値、色分けの間隔を指定します。#2ではレンジがデフォルトで-8000～8000となっている「geo」というCPTを使っており、地形を表す際にはこれを変更する必要がありませんでした。今回使っている「seis」というCPTはデフォルトではレンジが0～1となっているので、このレンジを変更する必要があります。

`-D`のオプション：CPTのレンジの最小値より小さい値に対して最小値の色を使い、最大値より大きい値に対して最大値の色を使う、ということを指定します。これをつけずにデフォルトのままだと、最小値より小さい値には黒、最大値より大きい値には白が与えられてしまいます。

### plot
`plot`は経度と緯度（x座標とy座標）のデータが与えられたときに、それらを点や線としてプロットするモジュールです。データはCSVファイルなどで与えることができ、`plot`の直後にそのファイルの名前を記載すればOKです。

今回のスクリプトでは`plot`を使っている行は2行あります。1行目で与えられた座標をつなぐ線を描画し、2行目でその上から中に色をつけた○でプロットしています。

1行目のように線を描画したい場合には`-W`のオプションを使います。2行目のように○や△などでプロットしたい場合には`-S`のオプションを使います。`-S`と`-W`のオプションを同時に使うと、`-S`で指定したプロットの外枠の線の属性を`-W`で指定するという意味になります。

`-W`のオプション：線の属性を指定します。今回は数字の「1」のみが与えられていますが、これは線の太さ（単位：ポイント、1ポイント＝1/72インチ＝約0.35mm）を指定しています。デフォルトでは結構細いので太さを調整しています。ちなみに、線の色をデフォルトの黒から他の色（例えば青）に変えたい場合は「1,blue」とすればOKです。

`-S`のオプション：プロットの形とサイズを指定します。今回は○なので形は「c」（<INS>c</INS>ircleのc）で指定し、サイズは「0.3」（単位：cm）としています。他にもいろいろな形を指定することができます。以下によく使われそうな形とそれを指定する文字を書いておきます。ちなみに、○以外の形の場合のサイズは、指定したサイズの○に内接する大きさとなります。（さらにちなみに、形を指定する文字を大文字にすると、指定したサイズの○と同じ面積をもつような大きさとなります。）

- △：「t」（<INS>t</INS>riangleのt）
- □：「s」（<INS>s</INS>quareのs）
- ◇：「d」（<INS>d</INS>iamondのd）
- ☆：「a」（st<INS>a</INS>rのa）


`-S`で指定したプロットの中に色をつけたい場合は、`-C`でCPTファイルを指定したうえで、その色を決める値を経度、緯度に続く3列目のデータとして与えます。今回は台風の中心気圧で色を決めるので、ファイルの3列目を中心気圧にしています。

### colorbar
今回使っている`colorbar`のオプションの中で、#2では使わなかったものについて説明したいと思います。

`-D`のオプション：#2ではバーのサイズを自動で決めてもらっていましたが、今回は本体の図と同じ幅になるよう具体的に指定しています。「+w10.0/0.4」でバーの長さと幅（単位：cm）を、「+e0.4」でCPTの最小値より小さい値と最大値より大きい値に対する色のバーへの追記とその部分の長さ（単位：cm）をそれぞれ指定しています。ちなみに、バーの位置を、#2で使った「JRM」や「JLM」で指定した場合（図の右か左に配置する場合）にはバーはタテになり、今回使った「JCB」や「JCT」で指定した場合（図の下か上に配置する場合）にはバーはヨコになります。

`-B`のオプション：このオプションに「+l"ラベル"」をつけることでバーにラベルを付けることができます。今回のように値が示しているものや値の単位を示したい場合に使うとよいと思います。

## おまけ
今回のスクリプトを見て、`plot`のオプションとして`-R`と`-J`を与える必要はないのか？と思った人がいるかもしれません。たしかに、`plot`にも`-R`と`-J`のオプションを与える必要があるのですが、その前の`coast`の段階ですでに`-R`と`-J`のオプションが与えられているので、何も書かない場合にはこれらが引き継がれます。

## 参考文献
- [plot - GMT documentation](https://docs.generic-mapping-tools.org/latest/plot.html)

## #1と#2はこちら

https://qiita.com/dosukoi_1/items/d9e1f99f5f8e83dbca64

https://qiita.com/dosukoi_1/items/fa9eed891cf064c40143