# 应急指挥 Demo：AI 驱动的地震应急响应

> 一个 5 分钟的演示脚本，展示 cesium-mcp 如何让 AI Agent 操控 3D 地图进行应急分析——一句话完成过去需要 GIS 专业人员 30 分钟的操作。

## 场景背景

**2024 年 1 月 1 日**，日本石川县能登半岛发生 M7.6 地震，引发海啸警报。作为应急指挥人员，你需要快速评估灾情、划定疏散区域、规划救援路线。

传统方式：打开 GIS 软件 → 加载基础数据 → 手动标注震中 → 绘制疏散圈 → 计算路线 → 导出报告。**耗时 30+ 分钟**。

使用 cesium-mcp：对 AI 说话就行。

## 演示前准备

### 1. 启动 Runtime

```bash
# 方式 A: 开发模式（推荐）
cd packages/cesium-mcp-runtime
npx tsx src/index.ts

# 方式 B: 全局安装
npx cesium-mcp-runtime
```

### 2. 打开地图页面

- 使用 `packages/cesium-mcp-runtime/demo/index.html`
- 或运行你自己的 Cesium 应用（需集成 cesium-mcp-bridge）
- 确保 WebSocket 连接状态为 **已连接**（绿点）

### 3. 配置 AI Agent

VS Code `.vscode/mcp.json`:
```json
{
  "servers": {
    "cesium-mcp": {
      "command": "npx",
      "args": ["cesium-mcp-runtime"],
      "type": "stdio",
      "env": { "CESIUM_TOOLSETS": "all" }
    }
  }
}
```

## 演示脚本

> 💡 以下每一步是你在 Copilot 聊天中输入的提示词，AI 会自动调用对应的 MCP 工具操控地图。

---

### 第 1 幕：定位灾区

**你说：**
> 日本能登半岛发生了 7.6 级地震，帮我飞到震中位置（137.27°E, 37.50°N），高度 50 万米，我要先看全局。

**AI 执行：** `flyTo` → 相机从当前位置飞到日本上空

**你说：**
> 再近一点，高度降到 15 万米，俯瞰整个能登半岛。

**AI 执行：** `flyTo` → 相机下降，能清晰看到海岸线和城市

---

### 第 2 幕：标注震中与余震

**你说：**
> 在震中（137.27, 37.50）添加一个红色标记，标注"M7.6 震中"。然后在附近添加 4 个余震标记：
> - M5.6 (137.12, 37.35) 橙色
> - M5.2 (137.40, 37.58) 橙色
> - M4.8 (136.95, 37.22) 黄色
> - M4.5 (137.55, 37.68) 黄色

**AI 执行：**
1. `addMarker` → 红色震中标记
2. `batchAddEntities` → 4 个余震标记一次性添加

---

### 第 3 幕：划定应急响应区

**你说：**
> 以震中为圆心，画一个 50 公里半径的疏散圈，红色半透明填充，带红色边框。名字叫"50km应急响应区"。

**AI 执行：** `addPolygon` → 看到一个半透明红色圆环覆盖在能登半岛上，直观展示影响范围

**你说：**
> 再画一个 100 公里的预警圈，黄色半透明。

**AI 执行：** `addPolygon` → 更大的黄色圆环

---

### 第 4 幕：热力分析

**你说：**
> 用热力图显示地震强度分布，震中最强（红色），向外递减。生成大约 50 个随机点模拟余震分布。

**AI 执行：** `addHeatmap` → 红黄渐变的热力图覆盖在半岛上

---

### 第 5 幕：救援路线

**你说：**
> 从小松机场（136.41, 36.39）到震中规划一条救援路线，绿色粗线，标注"空中救援通道"。

**AI 执行：** `addPolyline` → 一条亮绿色粗线连接机场与震中区域

**你说：**
> 再从富山港（137.22, 36.76）到受灾海岸（137.30, 37.40）画一条海上救援路线，蓝色。

**AI 执行：** `addPolyline` → 蓝色海上路线

---

### 第 6 幕：场景渲染

**你说：**
> 打开阴影效果，调整光照为下午 4 点的低角度光线，增加一点泛光效果。

**AI 执行：**
1. `setGlobeLighting` → 阴影和光照
2. `setPostProcess` → 泛光后处理

---

### 第 7 幕：全景展示

**你说：**
> 开始绕震中旋转，速度慢一点，我要录一段视频。

**AI 执行：** `startOrbit` → 相机缓慢绕场旋转

**你说：**
> 截一张图。

**AI 执行：** `screenshot` → 返回高清截图

**你说：**
> 停止旋转，保存当前视角为"能登地震应急"。

**AI 执行：**
1. `stopOrbit`
2. `saveViewpoint` → 视角书签

---

### 第 8 幕：收尾

**你说：**
> 导出当前场景配置，我要保存到报告里。

**AI 执行：** `exportScene` → 返回完整场景 JSON（图层、实体、视角）

---

## 自动化演示

如果你想录制一个流畅的演示视频，不依赖 AI 对话交互，可以运行自动化脚本：

```bash
node examples/emergency-response/auto-demo.mjs
```

此脚本通过 HTTP POST 逐步发送命令到 Runtime（端口 9100），每步之间有适当延迟，确保视觉效果连贯。

## 涉及的 MCP 工具

| 工具 | 用途 | 工具集 |
|------|------|--------|
| `flyTo` | 飞行到指定位置 | view |
| `addMarker` | 添加点标记 | entity |
| `batchAddEntities` | 批量添加实体 | entity |
| `addPolygon` | 添加多边形（疏散圈） | entity |
| `addHeatmap` | 地震热力图 | heatmap |
| `addPolyline` | 救援路线 | entity |
| `setGlobeLighting` | 光照与阴影 | animation |
| `setPostProcess` | 泛光后处理 | scene |
| `startOrbit` / `stopOrbit` | 绕场旋转 | camera |
| `screenshot` | 截图 | interaction |
| `saveViewpoint` | 保存视角书签 | view |
| `exportScene` | 导出场景报告 | view |

**共计 12 种工具，覆盖 5 个工具集**——这就是 cesium-mcp 一站式地图操控的价值。

## 演示要点

1. **对比传统方式**：开场提到"传统 GIS 操作需要 30 分钟"，然后用 AI 5 分钟完成
2. **逐步叠加**：每一步都在前一步基础上增加信息，最终呈现完整的应急态势图
3. **配乐推荐**：紧张感的背景音乐增强效果（用于录制视频时）
4. **录屏区域**：同时录制 Copilot 聊天窗口和地图窗口，展示"对话→地图响应"的实时联动
