地震 ripple の算定方式
地震マークを click すると地図上に伝播する 2 重 ripple は、 観測データと 物理モデルから動的に算定しています。「どの程度の正確性で何を描いているか」 を以下に明示します。
1. 描画する波
- P 波 (= primary, 縦波) ・ 地殻内速度 6.5 km/s で固定。
- S 波 (= secondary, 横波) ・ 速度 3.5 km/s で固定 (= Vp/Vs ≈ √3)。
実際の地殻速度は地域・深度で異なるため、 上記は「標準的な値」 です。 アニメ尺は M に依存させず、 P 波が約 7 秒で最大半径に到達するよう simRate を動的に調整しています (= 大地震は時間圧縮が強くダイナミック、 小地震はゆっくり伝播)。
2. 最大半径 (= 波の到達範囲)
以下の優先順で決定します:
- 実観測ベース (1st 優先)・震度 1+ を観測した最遠 観測点までの haversine 距離 × 1.10 (= 「揺れが届いた」 範囲に近づける)。
- 物理モデル (fallback)・ M と 震源深度から経験則で推定。
M = magnitude、 h = depth_km。 観測値が theoretical の 20% 未満の 場合は theoretical を採用 (= 強震計の sparse 配置で過小評価になる ケースに対する保守的 fallback)。
- 司宏俊・翠川三郎 (1999)・「断層タイプ及び地盤条件を考慮した最大加速度・最大速度の距離減衰式」 日本建築学会構造系論文集 No.523 pp.63-70。 JMA / 防災科研採用の標準距離減衰式。
- Bakun (2005)・"Magnitude and location of historical earthquakes in Japan" JGR Solid Earth 110 B02304。 IJMA = -1.89 + 1.42·MJMA - 0.00887·Δh - 1.66·log(Δh) で felt radius 推定。
- Bakun & Wentworth (1997)・BSSA 87(6) 1502-1521。 MMI 距離減衰の標準法 (= felt area scaling)。
- Frankel (1994)・BSSA 84(2) 462-465。 felt area の magnitude scaling 理論的根拠。
log-log 傾き 0.35 は anelastic Q attenuation (= 地殻内の振動エネルギー 減衰係数) 由来。 物理的に 0.30-0.40 が標準範囲で、 0.35 はその中央値。
3. データ source
- 気象庁 (JMA) 地震情報 JSON・5 分毎 cron で取得、 raw payload を Supabase に永続化。 出典: JMA bosai 地震ポータル
- 観測点座標・ JMA payload の
Body.Intensity.Observation.Pref[].Area[].City[].IntensityStation[].latlonから抽出 (= 全国 数千観測点の実座標、 ~5 km 精度)。 - 過去地震 (= 2011 以降の主要 震度 6+)・JMA 過去 archive は open JSON API がないため、 Wikipedia + JMA 公開 検索ページ から手動 curated list で 17 件を backfill 済 (= 東日本大震災、 熊本地震、 北海道胆振東部、 能登半島 等)。 これらは marker / popup まで表示するが、 raw 観測 station データは持たない (= replay 中の 「県別震度 chip」 は historical event では表示なし)。
- 震源座標 / Magnitude / 深さ・JMA payload の
Body.Earthquake.Hypocenterから抽出。
4. 現状の limitation
- 地盤増幅率は未反映・J-SHIS / K-NET の堆積層補正は将来 phase で導入予定。
- 異常震域 (= 深発局所強震)・太平洋プレート沿いの深発地震で、 震央より遠方が局所的に強く揺れる 現象は円形 ripple では原理的に表現不可。
- M ≥ 8 大地震は点震源近似が破綻・断層長が 100km+ になる超巨大地震は、 震央 1 点からの円ではなく 「断層線からの距離」 でモデル化すべき (= 円形 ripple は便宜的近似)。
- felt radius は本質的に ±70% のばらつき・σ ≈ 0.25-0.30 (log10 scale) で、 同じ M でも実観測の到達距離は 最大 70% 程度ばらつく。 これは観測式の精度限界 ではなく物理的不可避。
- 地域別減衰係数差・浅発内陸 vs 沈み込み境界、 火山フロント前面 vs 背面 で減衰係数が 異なる。 現在は全国一律式のため ±0.3·M 程度の精度誤差を含む。
- 多重リング表示は未対応・震度 7/6/5/4 別の段階リング (= 強震界 / 弱震界) は visual polish として別 phase。
- 時刻精度・P/S 到達時刻は OriginTime + 距離計算の推定値。 観測 ArrivalTime の直接利用は別 phase。
上記により、 visual は「現実に近い説得力」 を優先しつつ、 厳密な earthquake science のシミュレーションではない 点をご了承ください。 特に「波の到達半径」 は震央周辺の felt radius を log-log 経験式で オーダー一致させた近似値であり、 ±70% 程度のばらつきがあることを 前提に視覚的説得力を担保しています。
5. 関連 source code
- lib/quake/wave-physics.ts ・数式の本体 (maxRadiusKm, resolveMaxRadiusKm, haversineKm)
- lib/data-source/jma.ts ・JMA payload の parse (= 観測点 lat/lng 抽出)
- components/map/QuakeReplayLayer.tsx ・MapLibre 上の ripple アニメーション render