氪石 keshi 是基于 要石 kanameishi 深度改造的模拟地震预警 / 地震信息 / 海啸信息可视化与演示系统,不代表任何立场,仅适用于个人科研、仿真等用途。请仔细阅读完本篇README.md。
当前版本:2.5.1-fix2
项目目标不是替代官方防灾系统,而是提供:
- 模拟、回放、研究级演示能力
- 日本、韩国多区域地图与测站可视化
- 本地高精度海啸试验算法
LOCAL_HP - PGA / PGV / 烈度 / 震度换算与动态展示
相对上游 kanameishi,本仓库的主要增量包括:
- 新增完整的
SIMULATION模拟地震预警模式 - 新增海啸模拟链路,支持:
JMANMEFCLOCAL_HP(本地高精度,实验性)
- 新增中国烈度 / 震度显示逻辑
- 新增测站回放、P/S 波回放、回放帧率调节
- 新增 PLUM 风格检测框与模拟预估流程
- 新增震中 / S 波双加速度计卡片
- 新增
GB/T 17742-2020烈度换算与 PGA / PGV 推算 - 新增多种震级单位显示与统一换算逻辑
- 新增日本 JMA 震度示意图、中国地震图标、中国烈度说明卡
- 新增个人认证服务器脚本(仅个人测试用途)
- 新增可打包的本地网页完整功能包
- 调整应用图标、桌面端产品名称与多平台打包配置
- 统一
SIMULATION标识,避免与真实事件混淆 - 支持手动触发模拟地震事件
- 可配置:
- 震中经纬度
- 深度
- 震级
- 震级类型(
Mw / Ms / Mj / mb / ML / ...) - 发震延迟 / 发报延迟
- 多页递进发报
- 假定震源
- 假想
10+震级娱乐模拟
- 可注入既有预警 / 告警 / 海啸展示链路,不改真实数据入口
- 支持历史事件回放
- 支持测站 P 波 / S 波回放叠加
- 支持回放帧率
1~165 FPS - 支持回放时选择显示震度 / 烈度 / 自动
- 伪测站(不是真正的国家测站,国家测站非常保密):
- 可按地级区划 / 地级市 / 县级区划等密度档位生成
- 中国测量框:
- 检测时闪烁
- 检测完成后定格
- 中国地震图标:
- 蓝 / 黄 / 橙 / 红四档
- 中国海啸图标:
tsu-x / i / ii / iii图标仅作为示意
- 强制计算震中 / S 波加速度计
- 显示:
- 最大烈度
- PGA
- PGV
- 日本场景支持:
NIED 实时优先事件参数优先
- 中国场景支持本地烈度近似推算
- 作为第三个独立海啸来源并入现有 UI
- 复用现有海啸结果数据流:
- 来源勾选
- 自动 / 手动区域
- 算法下拉
- 保守值
- 等级映射
- 表格
- 地图图层
- 自动播报
- 运行结果包含:
- 区域最大波高
- 到达时间
- 等级映射
- 置信度
- metadata / logs / runs 目录输出
本节只写当前仓库实际使用或明确对应的公式骨架。它们用于显示、估算、演示与研究,不应当被误用为正式防灾发布口径。
统一参考的最终口径是 Mw。
地震矩与矩震级关系:
M0 = 10^(1.5 * Mw + 9.1) // N·m
Mw = (2 / 3) * (log10(M0) - 9.1)
断层物理约束:
M0 = μ * Af * D̄
其中:
μ:剪切模量Af:断层面积D̄:平均滑移量
项目中对 Ms / Mj / mb / ML / mbLg 等震级做统一显示与等效换算,用于:
- UI 标注震级单位
- 模拟输入归一化
LOCAL_HP统一进入Mw流程
详见:
各震级单位标准与公式.md
用于科普与超大震级说明:
log10(E) = 1.5 * M + 4.8
其中 E 单位为焦耳。
项目中的波前显示、倒计时、回放和模拟都依赖“距离 / 波速 / 时间”近似。
骨架:
tP = d / vP
tS = d / vS
d:震中到目标点距离vP:P 波速度vS:S 波速度
实际实现会叠加:
- 深度影响
- 经验修正
- 回放时间轴偏移
项目海啸与波前估算采用 Haversine 距离骨架:
d = 2R * asin(
sqrt(
sin²(Δφ/2) + cos φ1 * cos φ2 * sin²(Δλ/2)
)
)
其中 R ≈ 6371 km。
当前仓库已加入 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
模拟海啸的基础传播速度采用浅水波近似:
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
LOCAL_HP 目前是“本地 surrogate physics + conservative envelope”的实验性实现,不是完整业务级求解器。
当前链路包含:
- 震级统一到
Mw - 经验断层尺度估计
- 区域级最大波高 / 到时近似
metadata.json / run.log / forecast_regions.json输出- 地图图层与右侧结果表联动
Rust 侧入口:
src-tauri/src/local_hp_tsunami.rs
当前 solver 标识:
solver_name = KESHI-LOCAL-HP
solver_version = 0.1.0
当前运行模式:
faststandardreplay
缓存目录约定:
app_data/tsunami_local_hp/
bathy/
topo/
grids/
events/
runs/
cache/
logs/
建议环境:
- Node.js
20+ - pnpm
10.22.0+(推荐) 或 npm10.9.0+ - Rust
1.77.2+ - 系统包管理器 / 编译工具链:
- macOS: Xcode Command Line Tools
- Windows: Visual Studio C++ Build Tools
- Linux:
build-essential,pkg-config,webkit2gtk等
git clone https://github.com/BasyacatX/Keshi-MockEew
cd Keshi-MockEew
pnpm install纯 Web 开发:
pnpm dev桌面端开发(Tauri):
pnpm tauri dev- 打开设置
- 输入指令:
enableMockEew
- 在高级设置中开启“模拟地震预警”
- 打开状态面板(
X)进入模拟配置
在模拟地震界面中可启用:
JMANMEFCLOCAL_HP
并配置:
- 自动 / 手动受灾区域
- 海啸算法
- 保守值
- 本页等级
- 多页递进发报
前端认证地址可通过环境变量覆盖:
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- 不应提交个人账号、密码或授权数据
pnpm build输出目录:
dist/
项目已提供一键脚本,将前端构建为可直接本地启动的网页包,并附带本地静态服务器。
pnpm build:web-portable输出目录:
dist-web-portable/kanameishi-webdist-web-portable/kanameishi-web-windows
脚本位置:
scripts/build-web-portable.sh
在 macOS 主机上:
pnpm tauri build产物通常位于:
src-tauri/target/release/bundle/macos/
建议在 Windows 主机上执行:
pnpm tauri build产物通常位于:
src-tauri/target/release/bundle/msi/
src-tauri/target/release/bundle/nsis/
说明:
- 理论上可做交叉编译,但本仓库默认按原生主机构建处理
- 若要稳定产出 Windows 安装包,优先在 Windows 上构建
仓库已包含 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/
pnpm clean:build-trash深度清理:
bash scripts/clean-build-trash.sh --deepsrc/ 前端 Vue 逻辑
src/components/ 地图、设置、列表、状态面板
src/components/components/
细分功能组件(模拟、海啸、历史等)
src/utils/ 计算、换算、模拟、工具函数
src/stores/ Pinia 状态
src-tauri/ Tauri / Rust 桌面端与本地能力
public/ 静态资源、图标、音效、示意图
scripts/ 打包、清理、认证、本地网页脚本
- 中国大陆地图: 阿里云 DataV.GeoAtlas
- 中国台湾地图: GeoJSON
- 中国断层: 国家地震科学数据中心
- 中国城市注记: 中国城市经纬度坐标点集
- 日本地图: 日本気象庁 GIS 数据
- 韩国地图: NGII
- 世界地图: GeoJSON Maps of the globe
- SREV 音效: scratch-realtime-earthquake-viewer-page
- 中文倒计时播报素材: 地牛Wake Up!
- Kanameishi
- JQuake
- scratch-realtime-earthquake-viewer-page
- TREM-Lite
- TREM-tauri
- EarthQuakeWarning
- Zero-Quake
本项目仅适用于:
- 合法的测试
- 演示
- 教学
- 研究
- 个人可视化与回放
不适用于:
- 真实防灾决策
- 生产级应急响应
- 官方发布替代
- 任何需要生命财产安全担保的场景
SIMULATION、LOCAL_HP、中国伪测站、烈度换算、PGA / PGV 推算、自动海啸算法都含有经验近似或启发式逻辑- 它们的目的主要是展示、演示、回放和研究
- 不保证与官方业务发布完全一致
- 第三方 API、地图、音效、图标、示意图仍受其原始许可、服务条款或版权约束
- 使用者应自行确认是否符合数据源授权、地区法规与平台条款
- 仓库不提供任何真实授权账号、密码或可直接绕过授权的方案
因使用本项目导致的:
- 误报 / 漏报
- 决策错误
- 财产损失
- 服务中断
- 授权风险
- 法律争议
开发者与贡献者不承担责任。
本项目基于 AGPL-3.0 授权。
使用、修改、分发前,请先阅读仓库中的 LICENSE。