強震モニタ考察 - データおよび情報の処理方法

最終更新日:

当初は、国立研究開発法人防災科学技術研究所が提供する強震モニタには 緊急地震速報の機能が含まれてなく、強震モニタに緊急地震速報の機能(フリーのSignalNow Express)をプラスしたアプリがあればいいのに、という思いから、2012年に EqWatchというアプリを開発・公開しました。

その後、強震モニタが「新強震モニタ」となってから、緊急地震速報の機能を搭載するようになり、EqMini、EqMaxなどの開発が可能になりました。
そこで、国立研究開発法人防災科学技術研究所が公開している強震モニタの データおよび情報、さらにそれらの処理方法について再考したいと思います。

さらに、準備が整えば、テストアプリをソースコード付きで公開して、任意の地点のリアルタイムの揺れの検出方法、 そして強震モニタ画像から現在地の「主要動の到達時間」および「予想震度」の算出の方法を説明します。
ここに公開したアプリの基本動作には、強震モニタ以外のデータはいっさい使用していません。

このサンプルアプリはUIについてはほとんど考慮していません。
コードソースの著作権は放棄していますから、UI部分を修正すれば、強震モニタのアプリとして使用できると思います。また、それを公開しても構いません。

ただし、当ソースコードの使用に起因する、いかなる結果も当方は責任を負いません。
また、当ソースコードの一部または全部を使用してアプリを作成し、それを公開する際は、 防災科研の強震モニタの使用条に十分配慮するようにお願いします。

あと、超個人的なことですが、来年には自分は古希となるので、いつまでプログラミングを続けられるか分からないので、 このあたりで、これまでの経験をまとめて公開しておこうと考えました。
つたないソースコードを公開するのに結構勇気がいりますが...多少のソースコードの汚さは、爺さんが書いたコードと大目に見てください。

当テストアプリは防災目的で使用しないでください。あくまでも強震モニタを観察・考察するために利用してください。


ダウンロードへ(Windows用とAndroid用のソースコードと実行ファイルを用意しています)


1. 強震モニタから得られるデータ

強震モニタ オリジナル画像
オリジナルの強震モニタ (©防災科学技術研究所)

EqMiniを作成するに先だって、強震モニタのテストを行なうためにテストアプリを作成しました。
強震モニタから得られるデータをチェックし、そのデータの処理方法を開発するためのものです。

以下が強震モニタから得られるデータです。
  • 日本地図
    強震モニタの背景に使用されます。
  • 各観測点のデータ
    GIF画像として1秒ごとに更新されます。
  • EEW時: 緊急地震速報データ
    JSONデータとして取得できます。
  • EEW時: 予想震度図
    緊急地震速報の発報時に、各報の更新ごとに日本中の予想震度が色分けされたGIF画像として取得できます。
  • EEW時: P/S波の画像
    緊急地震速報の発報時に、P/S波の円および震央が描画されたGIF画像が1秒ごとに更新されます。
以上の各画像を重ねわせたものが強震モニタです。

実はこれ以外にメンテナンスメッセージ等も取得できます。が、更新があまりなく、かなり古いメッセージも含まれているため、無視して構わないと思います。


以下に、各データの詳細を記述します。



2. 日本地図

強震モニタのオリジナル地図
オリジナルの地図

強震モニタの拡張地図 melanion
別枠を移動させて着色したテストアプリで使用する地図




3. 強震モニタの観測点

強震モニタ画像に現れる観測点の位置 melanion
強震モニタ画像に現れる観測点(観測点の中央の赤い点は経度緯度から計算で得られたスキャン位置)

観測点編集ツールを使って、スキャン位置を修正 melanion
観測点編集ツールを使って、スキャン位置を編集



4. 各観測点の色を数値に変換

強震モニタのカラースケールから100色を抽出 melanion
カラースケールから100色を抽出

青色のバリエーション
強震モニタのカラースケールと異なり、実際に現れる青系統の色は非常に限られます。ほとんどが一番値が低い青色です。
出現頻度について右で話したように、この出現率1位の青色と出現率2位の明るい緑色の間の色の出現頻度が極めて低いのはなぜか?

理由は簡単で、サーバー側でこの間の値はノイズとしてカットし、出現率1位の青色と出現率2位の明るい緑色に振り分けているからだと思われます。 このために、色の出現率に偏りが生じてるのでしょう。

下の「ノイズ低減」でも説明しますが、テストアプリ(および他の自作アプリ)では、 基本的に、出現率2位の明るい緑色以下の色を持つ観測点はノイズとして描画しません。

「現在の震度」の震度表示色
「現在の震度」の震度表示色 melanion

3.11の直後、当時はまだ存在していなかった強震モニタと緊急地震速報ツール(SingalNow Express)を組み合わせたツールを作成しようと思い立ったとき、 最初に直面したのが、強震モニタで得られる各観測点の色を数値に変換する方法です(そう、当時の強震モニタには緊急地震速報の機能を含んでいなかったのです)。
というのも、EqWatchはメルカトル地図を使用する予定で、強震モニタの観測点画像をそのままでは利用できないからです。
なお、観測点の詳細はここからダウンロードできます。
🔳 今回のサンプルプログラム公開に先だって、ネット上をいろいろ検索したんですが、フランソワさんが多項式補間を使用して色を数値に変換しているそうです。 当時の自分には思いつかないような素晴らしい成果だと思います。
同アルゴリズムはサンプルプログラム内でPascalコード化して含めてますが、アプリでは使用していません。



5. 観測点画像のノイズ低減

強震モニタ ノイズ低減 melanion

強震モニタの画像が昼と夜とでは大きく異なることは周知の事実です。
別に夜には地震が少ないはずはなく、これは人間による間接・直接的な影響が現れているにすぎません。
そこで、EqWatch以降、自作の地震ツールでは、強震モニタの画像から可能な限りノイズを除去する工夫がなされています。

行なっているノイズ低減処理は以下の2点です。



6. 緊急地震速報データ

強震モニタ 緊急地震速報 melanion




7. 予想震度図

強震モニタ 予想震度 melanion




8. P/S波の画像

強震モニタ オリジナルPS波画像 melanion
元の画像

強震モニタ 拡張PS波画像 melanion
奄美・沖縄の別枠を元の位置に移動
この画像からP波S波をスキャンする

強震モニタ PS波画像からP波・S波・震央の位置をスキャン melanion
震央、P波およびS波の位置がスキャンされた(小さい四角の場所)




PS波画像から位置を検出している様子。
円周上の四角いマークが、検出されたP波S波の円周位置です。


テストアプリでは、参考として簡易走時表を使って、P波およびS波の位置を計算する関数を用意しています。
ただ、ツール内で使用しているだけで、本アプリの基本動作ではいっさい使用していません。



9. サイトへのアクセス

強震モニタ サイトへのアクセス melanion

サイトからEEW情報や各種画像を取得するとき
これらを改善するために、いくつかの措置を講じています。




10. 微小地震の検出

強震モニタ 微小地震の検出 melanion

緊急地震速報発令未満の微小地震の検出機能です。
これには、 があるようです。

EqWatch当時より、後者の方法を採用しています。また、上のノイズ低減機能が前提となっています。

具体的には、データを走査し、「反応」している観測点を見つけると、一定距離内にある近傍の観測点を走査し、 同じく「反応」していれば同じグループに追加していきます。
最終的にグループ内の観測点の数が規定数を超えていれば、そのグループは「反応」しているとみなし、微小地震の発生と位置を通知する仕組みです。

当然ですが、奄美・沖縄などの離島部では観測点自体が少なく、かつ観測点同士が離れているので、検出は不可能です。

この部分はサンプルプログラムには実装していません。



11. テストアプリ

強震モニタ テストアプリ melanion
下からダウンロードできます。


開発環境はDelphi(Pascal言語の亜種)です。Pro相当をフリーでダウンロードできます。
また、デスクトップとモバイルではレイアウトを変更する必要がありまが、モバイルアプリ化もできます。

強震モニタの を行なう方法を公開したいと思っています。

プログラム自体は2014~2015年ごろに作成したものですが、多少の変更を加えて、動作チェック中です (開発環境のアップデートが何度かあり、そのままでは実行できなかったので)。

ちなみに、テストアプリでは強震モニタからacmap_sおよびjma_sの2種の画像を1秒ごとに常時取得し、全観測点の色を検出して数値に変換し、 前者は地図上に観測点ごとに色付きの円として描画し、後者は最大で上位4観測点を「現在の震度」に表示します。
これらの処理を行なっても、普通のPC環境でタスクマネージャー上のCPU使用率は通常は「0%」で、まれに「1%」くらいまで増える程度です。
EEWの受信中は3%くらいになります。

処理によるCPU使用率には、あまり気を配らなくても良いと思います。
ただ、グラフィックス処理等をCPUでやるかGPUでやるかで、CPUの使用率は変わってくると思いますが。



Androidアプリのサンプル melanion
Androidアプリのサンプル
強震モニタ使用条件改定に対応したバージョン(2023-09-08)



ソースコードおよび実行ファイルのダウンロード (2023-09-08版)


念のため、zipファイル内のbinフォルダにそれぞれWindows用とAndroid用の実行ファイルがあります。

最初に書いたように、UIについてはまったく考慮していません。
あくまでも強震モニタから取得したデータをどのようにして処理しているのかを示すためのアプリです。

そのため、各プラットフォーム固有の部分は省略しているため、Windows以外のプラットフォームではそのままでは動作しません。
EqLite風のモバイルアプリを作ってみました。 機能はデスクトップ版とほぼ同じで、レイアウトを縦向きに修正しているだけです。

なお、基本部分はかなり前に作成し、今回、公開にあたって、その後の知見を追加しています。 そのため、返ってソースコードが見づらくなり、かつ、統一性に欠けたものになったことはご承知おきください。


Windows版とそれ以外の修正点

Android版に含まれるソースコードで以下にようになっている部分が、Windowsとそれ以外で処理を分けているところです。

{$IFDEF MSWINDOWS}
  // ここにWindows用のコード
{$ELSE}
  // ここにAndroidなどのコード
{$ENDIF}

基本的に高速画像処理のために、ピクセル配列に対して直接操作している部分です(Windowsとそれ以外でRGBの並び順が異なるためです)。



何かご不明な点、質問等がありましたら、以下のメアドにお願いします。
eqmini@melanion.info (@は半角にして)