gmt convertとはwgetだったりgawkやpandas.concat()みたいなことができるモジュールらしいです。
私自身、今までwgetを使ってデータ取得してgawkでいじって…としてplotに投げてきたのですが、どうやらgmt convertを使うと一気にできるらしいです。
ただ、いじれるファイルはカンマ区切りだったり空白やタブ区切りに限りそうで、勿論固定長データには使えないのでした。
gmt convert [データ] [オプション等]
データはURLでも可。
色々オプションがあるので、今回はその一部分を紹介します。
USGSの震源を取得して整理する
というわけで、今回はカンマ区切りで地震情報を提供してくれているUSGSからデータを頂き整理してみましょう。
USGSからデータを取得する
取得方法は下記を見てみてください。
例に倣って取得する地震データは、
2020年1月1日から2020年12月31日までの日本周辺(-R120/150/20/50)で発生した深さ20km~50kmまでの地震
としましょう。
データのアドレスは下記です。
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
これを実行すると、
となるはずです。便利!
コメント