Skip to content

BasyacatX/Keshi-MockEew

Repository files navigation

氪石 keshi

氪石 keshi 是基于 要石 kanameishi 深度改造的模拟地震预警 / 地震信息 / 海啸信息可视化与演示系统,不代表任何立场,仅适用于个人科研、仿真等用途。请仔细阅读完本篇README.md
当前版本:2.5.1-fix2

项目目标不是替代官方防灾系统,而是提供:

  • 模拟、回放、研究级演示能力
  • 日本、韩国多区域地图与测站可视化
  • 本地高精度海啸试验算法 LOCAL_HP
  • PGA / PGV / 烈度 / 震度换算与动态展示

1. 主要改动总览

相对上游 kanameishi,本仓库的主要增量包括:

  • 新增完整的 SIMULATION 模拟地震预警模式
  • 新增海啸模拟链路,支持:
    • JMA
    • NMEFC
    • LOCAL_HP(本地高精度,实验性)
  • 新增中国烈度 / 震度显示逻辑
  • 新增测站回放、P/S 波回放、回放帧率调节
  • 新增 PLUM 风格检测框与模拟预估流程
  • 新增震中 / S 波双加速度计卡片
  • 新增 GB/T 17742-2020 烈度换算与 PGA / PGV 推算
  • 新增多种震级单位显示与统一换算逻辑
  • 新增日本 JMA 震度示意图、中国地震图标、中国烈度说明卡
  • 新增个人认证服务器脚本(仅个人测试用途)
  • 新增可打包的本地网页完整功能包
  • 调整应用图标、桌面端产品名称与多平台打包配置

2. 功能列表

2.1 模拟模式

  • 统一 SIMULATION 标识,避免与真实事件混淆
  • 支持手动触发模拟地震事件
  • 可配置:
    • 震中经纬度
    • 深度
    • 震级
    • 震级类型(Mw / Ms / Mj / mb / ML / ...
    • 发震延迟 / 发报延迟
    • 多页递进发报
    • 假定震源
    • 假想 10+ 震级娱乐模拟
  • 可注入既有预警 / 告警 / 海啸展示链路,不改真实数据入口

2.2 回放模式

  • 支持历史事件回放
  • 支持测站 P 波 / S 波回放叠加
  • 支持回放帧率 1~165 FPS
  • 支持回放时选择显示震度 / 烈度 / 自动

2.3 中国扩展

  • 伪测站(不是真正的国家测站,国家测站非常保密):
    • 可按地级区划 / 地级市 / 县级区划等密度档位生成
  • 中国测量框:
    • 检测时闪烁
    • 检测完成后定格
  • 中国地震图标:
    • 蓝 / 黄 / 橙 / 红四档
  • 中国海啸图标:
    • tsu-x / i / ii / iii 图标仅作为示意

2.4 加速度与烈度

  • 强制计算震中 / S 波加速度计
  • 显示:
    • 最大烈度
    • PGA
    • PGV
  • 日本场景支持:
    • NIED 实时优先
    • 事件参数优先
  • 中国场景支持本地烈度近似推算

2.5 本地高精度海啸 LOCAL_HP

  • 作为第三个独立海啸来源并入现有 UI
  • 复用现有海啸结果数据流:
    • 来源勾选
    • 自动 / 手动区域
    • 算法下拉
    • 保守值
    • 等级映射
    • 表格
    • 地图图层
    • 自动播报
  • 运行结果包含:
    • 区域最大波高
    • 到达时间
    • 等级映射
    • 置信度
    • metadata / logs / runs 目录输出

3. 核心算法与公式

本节只写当前仓库实际使用或明确对应的公式骨架。它们用于显示、估算、演示与研究,不应当被误用为正式防灾发布口径。

3.1 震级统一与矩震级

统一参考的最终口径是 Mw

地震矩与矩震级关系:

M0 = 10^(1.5 * Mw + 9.1)      // N·m
Mw = (2 / 3) * (log10(M0) - 9.1)

断层物理约束:

M0 = μ * Af * D̄

其中:

  • μ:剪切模量
  • Af:断层面积
  • :平均滑移量

项目中对 Ms / Mj / mb / ML / mbLg 等震级做统一显示与等效换算,用于:

  • UI 标注震级单位
  • 模拟输入归一化
  • LOCAL_HP 统一进入 Mw 流程

详见:

  • 各震级单位标准与公式.md

3.2 地震能量经验关系

用于科普与超大震级说明:

log10(E) = 1.5 * M + 4.8

其中 E 单位为焦耳。

3.3 P 波 / S 波预计到时

项目中的波前显示、倒计时、回放和模拟都依赖“距离 / 波速 / 时间”近似。

骨架:

tP = d / vP
tS = d / vS
  • d:震中到目标点距离
  • vP:P 波速度
  • vS:S 波速度

实际实现会叠加:

  • 深度影响
  • 经验修正
  • 回放时间轴偏移

3.4 球面距离(海啸 / 波前 / 震中圈)

项目海啸与波前估算采用 Haversine 距离骨架:

d = 2R * asin(
      sqrt(
        sin²(Δφ/2) + cos φ1 * cos φ2 * sin²(Δλ/2)
      )
    )

其中 R ≈ 6371 km

3.5 中国烈度与 PGA / PGV(GB/T 17742-2020)

当前仓库已加入 GB/T 17742-2020 的近似换算逻辑,单位采用:

  • PGA: m/s²
  • PGV: m/s

实现中使用的核心关系:

PGA = max[a(ti)]
PGV = max[v(ti)]
IA  = 3.17 * lg(PGA) + 6.59
IV  = 3.00 * lg(PGV) + 9.77

其中:

  • IA:由 PGA 估算的烈度
  • IV:由 PGV 估算的烈度

代码位置:

  • src/utils/Gb17742Intensity.js

3.6 Demo 海啸传播近似

模拟海啸的基础传播速度采用浅水波近似:

v = sqrt(g * h)

到达时间近似:

t = d / v * slowdown

影响波高的轻量启发式:

H(d) = H0(Mw) * exp(-Depth / D) / (1 + (d / L)^p)
H0(Mw) = Href * 10^(0.5 * (Mw - Mpivot))

用于:

  • 自动区域筛选
  • 海啸到达时间表
  • 最大波高估算
  • 等级自动递进

详见:

  • tsunami-simulation-algorithm.md

3.7 LOCAL_HP 试验算法

LOCAL_HP 目前是“本地 surrogate physics + conservative envelope”的实验性实现,不是完整业务级求解器。

当前链路包含:

  1. 震级统一到 Mw
  2. 经验断层尺度估计
  3. 区域级最大波高 / 到时近似
  4. metadata.json / run.log / forecast_regions.json 输出
  5. 地图图层与右侧结果表联动

Rust 侧入口:

  • src-tauri/src/local_hp_tsunami.rs

当前 solver 标识:

solver_name    = KESHI-LOCAL-HP
solver_version = 0.1.0

当前运行模式:

  • fast
  • standard
  • replay

缓存目录约定:

app_data/tsunami_local_hp/
  bathy/
  topo/
  grids/
  events/
  runs/
  cache/
  logs/

4. 安装与开发环境

4.1 基础依赖

建议环境:

  • Node.js 20+
  • pnpm 10.22.0+(推荐) 或 npm 10.9.0+
  • Rust 1.77.2+
  • 系统包管理器 / 编译工具链:
    • macOS: Xcode Command Line Tools
    • Windows: Visual Studio C++ Build Tools
    • Linux: build-essential, pkg-config, webkit2gtk

4.2 克隆与安装

git clone https://github.com/BasyacatX/Keshi-MockEew
cd Keshi-MockEew
pnpm install

4.3 本地开发

纯 Web 开发:

pnpm dev

桌面端开发(Tauri):

pnpm tauri dev

5. 使用方法

5.1 启用模拟地震预警

  1. 打开设置
  2. 输入指令:
enableMockEew
  1. 在高级设置中开启“模拟地震预警”
  2. 打开状态面板(X)进入模拟配置

5.2 海啸模拟

在模拟地震界面中可启用:

  • JMA
  • NMEFC
  • LOCAL_HP

并配置:

  • 自动 / 手动受灾区域
  • 海啸算法
  • 保守值
  • 本页等级
  • 多页递进发报

5.3 个人认证服务器(仅个人测试)

前端认证地址可通过环境变量覆盖:

VITE_AUTH_BASE_URL

默认脚本:

  • scripts/personal-auth-server.mjs

快速启动:

cp .env.example .env.local
# 修改 .env.local
# VITE_AUTH_BASE_URL=http://127.0.0.1:8787

cp scripts/personal-auth.config.example.json scripts/personal-auth.config.json
pnpm auth:personal

注意:

  • scripts/personal-auth.config.json 已加入 .gitignore
  • 不应提交个人账号、密码或授权数据

6. 多平台编译方法

6.1 Web 生产构建

pnpm build

输出目录:

  • dist/

6.2 本地网页完整功能包

项目已提供一键脚本,将前端构建为可直接本地启动的网页包,并附带本地静态服务器。

pnpm build:web-portable

输出目录:

  • dist-web-portable/kanameishi-web
  • dist-web-portable/kanameishi-web-windows

脚本位置:

  • scripts/build-web-portable.sh

6.3 macOS App

在 macOS 主机上:

pnpm tauri build

产物通常位于:

src-tauri/target/release/bundle/macos/

6.4 Windows App

建议在 Windows 主机上执行:

pnpm tauri build

产物通常位于:

src-tauri/target/release/bundle/msi/
src-tauri/target/release/bundle/nsis/

说明:

  • 理论上可做交叉编译,但本仓库默认按原生主机构建处理
  • 若要稳定产出 Windows 安装包,优先在 Windows 上构建

6.5 Android APK

仓库已包含 src-tauri/gen/android,可使用 Tauri Mobile Android 构建链路。

前置环境:

  • Android Studio
  • Android SDK
  • Android NDK
  • Java 17
  • Rust Android target

示例流程:

pnpm tauri android init
pnpm tauri android build

调试:

pnpm tauri android dev

说明:

  • 签名、keystore、release APK / AAB 的具体流程需按本地 Android 环境配置
  • Android 产物目录一般位于 src-tauri/gen/android/app/build/outputs/

6.6 清理构建缓存

pnpm clean:build-trash

深度清理:

bash scripts/clean-build-trash.sh --deep

7. 项目目录

src/                     前端 Vue 逻辑
src/components/          地图、设置、列表、状态面板
src/components/components/
                         细分功能组件(模拟、海啸、历史等)
src/utils/               计算、换算、模拟、工具函数
src/stores/              Pinia 状态
src-tauri/               Tauri / Rust 桌面端与本地能力
public/                  静态资源、图标、音效、示意图
scripts/                 打包、清理、认证、本地网页脚本

8. 数据来源


9. 参考项目


10. 特别鸣谢


11. 免责声明

11.1 使用范围

本项目仅适用于:

  • 合法的测试
  • 演示
  • 教学
  • 研究
  • 个人可视化与回放

不适用于:

  • 真实防灾决策
  • 生产级应急响应
  • 官方发布替代
  • 任何需要生命财产安全担保的场景

11.2 算法免责声明

  • SIMULATIONLOCAL_HP、中国伪测站、烈度换算、PGA / PGV 推算、自动海啸算法都含有经验近似或启发式逻辑
  • 它们的目的主要是展示、演示、回放和研究
  • 不保证与官方业务发布完全一致

11.3 数据与授权

  • 第三方 API、地图、音效、图标、示意图仍受其原始许可、服务条款或版权约束
  • 使用者应自行确认是否符合数据源授权、地区法规与平台条款
  • 仓库不提供任何真实授权账号、密码或可直接绕过授权的方案

11.4 责任限制

因使用本项目导致的:

  • 误报 / 漏报
  • 决策错误
  • 财产损失
  • 服务中断
  • 授权风险
  • 法律争议

开发者与贡献者不承担责任。


12. 开源许可

本项目基于 AGPL-3.0 授权。
使用、修改、分发前,请先阅读仓库中的 LICENSE

About

一个基于要石地震预警应用改版的地震模拟软件,内置如今大部分的地震、海啸的预警、推算、反演等算法。所有公式均为国标、地震台网、JMA、USGS等机构给出的标准、论文、文档数据

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors