ObsPyを触ってみる その2

Overview — ObsPy Documentation (1.2.0)

もう少しObsPyで遊んでみよう。

WIN32形式をObsPyで読み込む

WIN32形式をObsPyで読み込むには、SACWINに変換して、読み込ませます。

support reading WIN32 format by seisman · Pull Request #1692 · obspy/obspy
This PR adds basic support for reading WIN32 format. It's a little similar to obspy.io.datamark. It works under Python 3.5 but fails under Python 2.7, since...

SACに変換する

これは説明済みです。

SACのインストール
IRISが提供するSACのインストール方法について説明しています。

WINに変換する

WIN32形式からWIN形式に変換するには、win32toolsw32tow1を用います。

w32tow1 [入力ファイル] [出力ファイル]

たとえば、0101_202005030000_60.cntというWIN32形式のファイルを変換するには、

w32tow1 0101_202005030000_60.cnt 0101_202005030000

とすればよい。簡単。

連続ウェーブレット変換をしてみる

26. Continuous Wavelet Transform — ObsPy Documentation (1.2.0)

ここでは焼岳周辺で発生している、深部低周波地震の波形を連続ウェーブレット変換してみよう。

ObsPyでは、なんと標準で連続ウェーブレット変換ができてしまう。

地震波形を取得する

というわけで早速Hi-netから、地震波形を取得します。
おすすめの観測点は、N.FRKHN.KOKH

今回は2020年5月3日0時0分から45分間の波形を取得します。

HinetPyなら、

from HinetPy import Client, win32
client = Client("UserID", "Password")
client.
data, ctable = client.get_continuous_waveform('0101', 202005030000, 45)
win32.extract_sac("0101_202005030000_45.cnt", "0101_20200503.ch")

で波形取得とSACに変換ができます。

連続ウェーブレット変換を行う

早速変換してみよう。今回はN.KOKH.N.SACを変換してみる。

import numpy as np
import matplotlib.pyplot as plt

import obspy
from obspy.imaging.cm import pqlx
from obspy.signal.tf_misfit import cwt

st = obspy.read("./N.KOKH.N.SAC")
tr = st[0]
npts = tr.stats.npts
dt = tr.stats.delta
t = np.linspace(0, dt * npts, npts)
f_min = 1
f_max = 50

scalogram = cwt(tr.data, dt, 8, f_min, f_max)

fig = plt.figure()
ax = fig.add_subplot(111)

x, y = np.meshgrid(
    t,
    np.logspace(np.log10(f_min), np.log10(f_max), scalogram.shape[0]))

ax.pcolormesh(x, y, np.abs(scalogram), cmap=pqlx)
ax.set_xlabel("Time after %s [s]" % tr.stats.starttime)
ax.set_ylabel("Frequency [Hz]")
ax.set_yscale('log')
ax.set_ylim(f_min, f_max)
fig.savefig("hogehoge.png")

この結果が、

となります。

コメント

タイトルとURLをコピーしました