スポンサーリンク
スポンサーリンク

gmt convertの使い方(抜粋)

スポンサーリンク
スポンサーリンク
スポンサーリンク
スポンサーリンク
convert — GMT 6.6.0 documentation

gmt convertとはwgetだったりgawkpandas.concat()みたいなことができるモジュールらしいです。

私自身、今までwgetを使ってデータ取得してgawkでいじって…としてplotに投げてきたのですが、どうやらgmt convertを使うと一気にできるらしいです。
ただ、いじれるファイルはカンマ区切りだったり空白やタブ区切りに限りそうで、勿論固定長データには使えないのでした。

gmt convert [データ] [オプション等]
データはURLでも可。

色々オプションがあるので、今回はその一部分を紹介します。

スポンサーリンク
スポンサーリンク

USGSの震源を取得して整理する

というわけで、今回はカンマ区切りで地震情報を提供してくれているUSGSからデータを頂き整理してみましょう。

USGSからデータを取得する

取得方法は下記を見てみてください。

USGS提供の震源データをプロットする
USGSの震源データを取得してプロットする方法を記載しています。

例に倣って取得する地震データは、

2020年1月1日から2020年12月31日までの日本周辺(-R120/150/20/50)で発生した深さ20km~50kmまでの地震

としましょう。
データのアドレスは下記です。

(https://earthquake.usgs.gov/fdsnws/event/1/query.csv?starttime=2020-01-01&endtime=2020-12-31&minlatitude=20&maxlatitude=50&minlongitude=120&maxlongitude=150&mindepth=20&maxdepth=50&orderby=magnitude)

wgetとawkで処理する

上記の記事では以下のようにコードを書いています。

#!/bin/bash
wget --no-check-certificate "https://earthquake.usgs.gov/fdsnws/event/1/query.csv?starttime=2020-01-01&endtime=2020-12-31&minlatitude=20&maxlatitude=50&minlongitude=120&maxlongitude=150&mindepth=20&maxdepth=50&orderby=magnitude"
gmt begin hogehoge png
    gmt basemap -JM12 -R120/150/20/50 -Bafg -BWSNE
    gmt coast -Df -W0.25 -Slightcyan -Glightgray -LJBR+jTL+o-1/1+c20+w500+f
    gmt makecpt -Cseis -T0/50/1
    awk -F"," '{print $3, $2, $4, $5*0.1}' query.csv | gmt plot -Sc -W0.25 -C
    gmt colorbar -DJBR+jBL+o1.5/0+w-5/0.2 -C -Baf
gmt end

これをgmt convertで書いてみましょう。

gmt convert

gmt convertではアドレスを入力することでwgetのようにオンラインでダウンロードができます。
もちろん、ローカルファイルを指定してもOKです。

#!/bin/bash
gmt convert "https://earthquake.usgs.gov/fdsnws/event/1/query.csv?starttime=2020-01-01&endtime=2020-12-31&minlatitude=20&maxlatitude=50&minlongitude=120&maxlongitude=150&mindepth=20&maxdepth=50&orderby=magnitude"

また、awkのように順番を入れ替えるには、-iを用います。ゼロオリジンであることに気を付けます。

#!/bin/bash
gmt convert "https://earthquake.usgs.gov/fdsnws/event/1/query.csv?starttime=2020-01-01&endtime=2020-12-31&minlatitude=20&maxlatitude=50&minlongitude=120&maxlongitude=150&mindepth=20&maxdepth=50&orderby=magnitude" -i2,1,3,4

+sをつけると、なんとスケーリングをすることもできます。
図にはマグニチュード(4列目)の0.1倍を円の直径にしたいので、

#!/bin/bash
gmt convert "https://earthquake.usgs.gov/fdsnws/event/1/query.csv?starttime=2020-01-01&endtime=2020-12-31&minlatitude=20&maxlatitude=50&minlongitude=120&maxlongitude=150&mindepth=20&maxdepth=50&orderby=magnitude" -i2,1,3,4+s0.1

とします。

データにはヘッダ行があるので、その行数分スキップして読み込んでもらいます。
ヘッダ行を指定するには -hi を用います。ついでに、plot とも組み合わせましょう。

#!/bin/bash
gmt begin hypo png
    gmt makecpt -Cseis -T20/50/1 -Z
    gmt coast -JM12 -R120/150/20/50 -Bafg -BWSNE -W0.25 -Df 
    gmt convert "https://earthquake.usgs.gov/fdsnws/event/1/query.csv?starttime=2020-01-01&endtime=2020-12-31&minlatitude=20&maxlatitude=50&minlongitude=120&maxlongitude=150&mindepth=20&maxdepth=50&orderby=magnitude" -i2,1,3,4+s0.1 -hi1 | gmt plot -Sc -C -W0.25
    gmt colorbar -DJBR+jBL+o1.5/0+w-5/0.2 -Baf
gmt end

これを実行すると、

となるはずです。便利!

コメント

スポンサーリンク