緊急地震速報から、P波・S波の予測円の半径を求める - Quarog

この記事は 地震界隈 Advent Calendar 2020 17日目の記事です。

はじめに

Fuku1213と申します。

最近はC#で「Quarog」というPCアプリケーションの開発を行っています。

今回はこのQuarogにある機能の話をします。

※ほぼ初めて、こういった記事を書くので至らない点しかないと思いますがご了承ください。

Quarogについて

f:id:Fuku1213:20210402175229p:plain

メインウィンドウ(画像は開発中の画面です)

QuarogはPC(Windows)向けに開発している地震アプリケーションです。

大まかにわけると

の4機能が備わっています。

f:id:Fuku1213:20210402175311p:plain

震度配色のカスタマイズ設定(画像は開発中の画面です)

また、設定を多種用意し、ユーザーが自分の感覚に合わせカスタマイズできるように制作されています。

緊急地震速報の情報からP波・S波の予測円の半径を求める

 準備

前置きはこのぐらいにして本題に入ります。

今回求める予測円の半径を求めるために準備するのは

  1. 地震の発生時刻
  2. 震源の深さ
  3. 現在時刻
  4. JMA2001走時表

の4つです。

今回Quarogの開発に用いたsvir.jpなどの緊急地震速報の電文には地震の発生時刻の情報と震源の深さの情報が含まれています。

現在時刻もソフト側でちょっと組めばかんたんに取得・設定できます。

JMA2001走時表はこれをダウンロードしてくればOKです。

これで使う情報の準備はできました。

 走時表を使いやすくしておく

多分ほかにもっといいやり方があると思いますが、Quarogでは半径の情報と、深さ10km刻みにしてS・Pにわけて配列に格納しました(アホ)

f:id:Fuku1213:20201215160445p:plain

格納した様子
(絶対効率悪い)

 半径の計算

あとは配列の参照をするコードを用意して、そしてそれをもとに半径を線形補間で求めるだけです。

f:id:Fuku1213:20201215161637p:plain

深さ10kmの場合のコード
(汚い)

DepSecというfloat配列に「深さ」と「現在時刻 - 地震の発生時刻 をした秒数」をいれて送ってます。
ただ、走時表は2000kmより大きい値を含んでいないため半径が2000kmを超えた場合は0kmを出力するようにしています。

Quarogでの利用

f:id:Fuku1213:20210402175401p:plain

2021/03/20 18:09発生の地震での動作例(画像は開発中の画面です)

半径がわかったので、描画させられました。

実際の動作はこちらから確認できます。

終わりに

記事を読んでくださりありがとうございました。Quarogは来年早々のリリースを目指して開発中です。どうぞよろしくお願いします。

何か疑問点、改善点等ありましたら、優しくご指導いただけると幸いです。

参考(一部コードの発想)と謝辞

2点間の線形補間を計算する - Qiita
(線形補間の発想)

はちさん (@Hachi_713) / Twitter
(走時表を使いやすくしてくれました)

こんぽさん (@compo031) / Twitter
(Kiwi Monitor カラースキーム 第2版 及び Kiwi Monitor カラースキームのソフトウェア内での使用許可)

フランソワ (JQuake)さん (@NoneType1) / Twitter
(JQuakeの震度配色の使用許可)

EarthquakeMap 公開ページ | kichi2004 のソフト公開ページ
(アプリケーション開発の初期段階での地図描画の大まかな発想)

おまけ(震度配色のお話)

f:id:Fuku1213:20210402175626p:plain

Quarog Color Schemeの使用例

Quarogで使用している震度配色は、Kiwi Monitorに強く影響を受けて作られています。

配色は、暖色系色と寒色系色で分けたいと考え、

  • 震度1~3を寒色(濃い青→青→水)と変化
  • 震度4~7を暖色(黄→橙→濃い橙→赤→濃い赤→黒紫)

と、Kiwi Monitor のように震度の明るさを連続的に変化させました。

(正確には紫は中間色ですが、特別警報と同じような扱いってことで紫にしています)