nrahaman1/aegis-threat-dashboard

GitHub: nrahaman1/aegis-threat-dashboard

这是一个专注于美国农业威胁早期预警的实时全球情报地理空间仪表板。

Stars: 0 | Forks: 0

# AEGIS — 农业预警地理空间智能系统 **[实时仪表板](https://aegis-threat-dashboard.onrender.com/)** 用于早期检测美国农业威胁的实时全球智能仪表板。AEGIS 监控气候异常、贸易壁垒、疾病爆发、粮食不安全和海运中断——将来自 10 多个实时数据源的数据融合为统一的运营视图。 ## 功能 - **5 个实时数据层**,带有独特的地图标记,可即时进行视觉区分 - **AG 风险指数 (0–100)**,根据所有活动层计算的综合威胁评分 - **30 秒雷达扫描**自动刷新周期使数据保持近乎实时 - **可切换的底图** — 暗色、亮色、卫星和地形 - **交互式工具提示**,鼠标悬停时显示详细的威胁元数据 - **实时警报滚动条**,在底部栏滚动播报突发威胁 - **响应式侧边栏**,带有图层切换、威胁卡片和警报源 ## 架构 ``` ┌─────────────────────────────────────────────────┐ │ Browser (localhost:4200) │ │ ┌──────────────┐ ┌────────────────────────┐ │ │ │ MapLibre GL │ │ deck.gl MapboxOverlay │ │ │ │ (basemap) │ │ (5 data layers) │ │ │ └──────────────┘ └────────────────────────┘ │ │ │ │ │ │ └────── Vite Dev Server ───────────┐ │ │ (port 4200) │ │ │ │ /api/* proxy │ │ └───────────────────────┼──────────────────────────┘ ▼ ┌─────────────────┐ │ Express Proxy │ │ (port 3001) │ │ │ │ • CORS bypass │ │ • RSS fetching │ │ • AIS WebSocket│ │ • WFP/WTO APIs │ └────────┬────────┘ │ ┌──────────────┼──────────────┐ ▼ ▼ ▼ Open-Meteo WFP HungerMap WTO ePing ERA5 API API API ▼ ▼ ▼ ReliefWeb GDACS AISStream.io RSS feeds RSS feed WebSocket ``` ## 数据层 ### 1. 气候压力 — ◆ 菱形标记 | 属性 | 值 | |----------|-------| | **来源** | [Open-Meteo Archive API](https://archive-api.open-meteo.com) (来自 ECMWF 的 ERA5 再分析) | | **数据** | 25 个主要农业区的 30 天温度和降水异常 | | **刷新** | 每 **3 小时** (客户端缓存) | | **上游** | ERA5 每日更新,延迟约 5 天 | | **严重性** | 极端:>5°C 温差或 >80mm 降水差 · 中度:>3°C 或 >40mm · 正常:低于阈值 | | **颜色** | 红色 = 极端 · 黄色 = 中度 · 绿色 = 正常 | ### 2. WTO SPS 壁垒 — ▲ 三角形标记 | 属性 | 值 | |----------|-------| | **来源** | [WTO ePing](https://epingalert.org) SPS/TBT 通报系统 | | **数据** | 经过农业相关性过滤的卫生与植物检疫贸易壁垒通报 | | **刷新** | 每 **6 小时** (客户端缓存) | | **上游** | WTO 成员提交时发布的新通报 | | **紧急程度** | 紧急:禁令/暂停 · 加急:限制/检疫 · 常规:标准通报 | | **颜色** | 红色 = 紧急 · 黄色 = 加急 · 蓝色 = 常规 | ### 3. 粮食安全新闻 — ✚ 十字标记 | 属性 | 值 | |----------|-------| | **来源** | 服务器端聚合的 5 个 RSS 源 | | | • [ReliefWeb](https://reliefweb.int) — 粮食安全与农业警报 | | | • [ReliefWeb](https://reliefweb.int) — 流行病/爆发/干旱警报 | | | • [GDACS](https://www.gdacs.org) — 全球灾害警报 (过滤至农业相关) | | | • [The New Humanitarian](https://www.thenewhumanitarian.org) | | | • [BBC Science & Environment](https://www.bbc.co.uk/news/science_and_environment) (过滤至农业/食品/气候) | | **刷新** | 每 **5 分钟** (客户端缓存) | | **类别** | 疾病爆发 · 粮食危机 · 害虫入侵 · 一般粮食安全 | | **严重性** | 严重:饥荒/流行病/IPC 阶段 4-5 · 高:危机/检疫 · 中:警告/风险 · 低 | | **颜色** | 深红色 = 严重 · 红色 = 疾病 · 橙色 = 粮食危机 · 紫色 = 害虫 · 黄色 = 一般 | ### 4. WFP HungerMap — ■ 方形标记 | 属性 | 值 | |----------|-------| | **来源** | [WFP HungerMap API](https://api.hungermapdata.org/v1/foodsecurity/country) (联合国世界粮食计划署) | | **数据** | 约 80 个国家的食物消费得分 (FCS) 和削减应对策略指数 普及率 | | **刷新** | 每 **30 分钟** (客户端缓存) | | **上游** | WFP 通过近实时移动调查 每日更新 | | **严重性** | FCS 和 rCSI 普遍率的组合平均值 (0–1 等级) | | **颜色** | 红色 = >60% · 橙色 = >40% · 黄色 = >20% · 绿色 = <20% | ### 5. AIS 航运 — ⟿ 弧线 + 船只圆点 | 属性 | 值 | |----------|-------| | **来源** | [AISStream.io](https://aisstream.io) WebSocket (实时船只位置) + [WorldMonitor](https://worldmonitor.app) 咽喉要道 API | | **数据** | 农业航运咽喉要道(苏伊士、巴拿马、马六甲等)附近的货船和油轮 | | **刷新** | 每 **30 秒** (客户端缓存) | | **上游** | AIS 位置实时传输;咽喉要道状态每几分钟更新一次 | | **显示** | 从起点到咽喉要道的弧线 + ScatterplotLayer 船只圆点 | ## AG 风险指数计算 AG 风险指数是一个从 **0 到 100** 的综合评分,由 4 个子评分计算得出(每个最高 25 分): ``` AG Risk Index = Climate Sub + WTO Sub + Food Security Sub + Shipping Sub ``` ### 子评分公式 **气候 (0–25):** ``` min(25, (extreme_zones × 6) + (moderate_zones × 1.5)) ``` **WTO SPS (0–25):** ``` min(25, (emergencies × 3) + min(total_notifications × 0.4, 6)) ``` **粮食安全 (0–25):** ``` min(25, (critical_alerts × 2) + (outbreaks × 1) + (hungermap_critical × 0.5) + min(total_alerts × 0.15, 3)) ``` **航运 (0–25):** ``` min(25, min(12, log₂(max(1, flagged_routes)) × 1.5) + (high_risk_chokepoints × 0.5)) ``` ### 威胁级别阈值 | 评分 | 级别 | |-------|-------| | 70–100 | 严重 | | 45–69 | 高 | | 25–44 | 中 | | 0–24 | 低 | 权重经过调整,使典型的全球状况得分为 35-70;80 分以上的得分标志着真正令人担忧的威胁汇聚。 ## 开始使用 ### 前置条件 - [Node.js](https://nodejs.org/) v18+ - npm (随 Node.js 附带) ### 安装 ``` # Clone 仓库 git clone https://github.com/nrahaman1/aegis-threat-dashboard.git cd aegis-threat-dashboard # 安装 dependencies npm install # 配置 environment variables cp .env.example .env # 编辑 .env 并添加你的 API keys(见下文) ``` ### 环境变量 | 变量 | 必填 | 描述 | 获取途径 | |----------|----------|-------------|-------------| | `AISSTREAM_API_KEY` | 是 | 实时 AIS 船只追踪 | [aisstream.io](https://aisstream.io) (免费) | | `WTO_EPING_API_KEY` | 是 | WTO SPS/TBT 通报 | [epingalert.org](https://epingalert.org) (免费) | ### 运行仪表板 ``` # 同时启动 Express proxy server 和 Vite dev server npm run dev:all ``` 这将启动: - **Express 代理**,位于 `http://localhost:3001` (处理 CORS,RSS 抓取,WebSocket 中继) - **Vite 开发服务器**,位于 `http://localhost:4200` (提供仪表板 UI) 在浏览器中打开 **http://localhost:4200**。 ### 生产环境构建 ``` npm run build # Outputs to dist/ npm run preview # Preview the production build ``` ## 项目结构 ``` aegis-threat-dashboard/ ├── index.html # Main HTML entry point ├── server.js # Express proxy server (port 3001) ├── start-all.js # Concurrent dev server launcher ├── package.json # Dependencies and scripts ├── vite.config.js # Vite configuration (port 4200, proxy) ├── .env.example # Environment variable template ├── .gitignore └── src/ ├── main.js # App entry: map init, deck.gl overlay, UI wiring ├── layers/ │ ├── climate-stress.js # ERA5 climate anomaly layer │ ├── wto-sps-barriers.js # WTO trade barrier layer │ ├── food-security-news.js # RSS-aggregated food security layer │ ├── wfp-hungermap.js # WFP food insecurity layer │ └── ais-shipping.js # AIS vessel tracking layer ├── utils/ │ ├── geo-data.js # Country coordinates, aliases, ag zones │ └── rss-parser.js # RSS/XML feed parser └── styles/ └── index.css # Full design system and component styles ``` ## 技术栈 | 技术 | 用途 | |------------|---------| | [deck.gl](https://deck.gl) v9.1 | WebGL 数据可视化图层 | | [MapLibre GL JS](https://maplibre.org) v4.7 | 地图渲染引擎 | | [Vite](https://vitejs.dev) v6.2 | 前端构建工具和开发服务器 | | [Express](https://expressjs.com) v5.1 | 后端代理服务器 | | [ws](https://github.com/websockets/ws) | 用于 AIS 流传输的 WebSocket 客户端 | ## 致谢 - [WFP HungerMap LIVE](https://hungermap.wfp.org/) — 世界粮食计划署 - [Open-Meteo](https://open-meteo.com/) — 免费天气和气候 API - [WTO ePing](https://epingalert.org/) — SPS/TBT 通报系统 - [ReliefWeb](https://reliefweb.int/) — 联合国人道主义事务协调厅人道主义信息 - [GDACS](https://www.gdacs.org/) — 全球灾害警报协调系统 - [AISStream.io](https://aisstream.io/) — 实时 AIS 船只数据 - [CARTO](https://carto.com/) — 底图切片
标签:AG风险指数, deck.gl, GIS数据层, MapLibre GL, MITM代理, Vite, 交互式地图, 全球态势感知大屏, 前端大屏架构, 地理信息系统, 多源数据融合, 威胁情报, 实时情报监控仪表盘, 实时雷达扫描刷新, 开发者工具, 数据可视化, 气候变化异常监测, 海事航运中断监控, 疾病爆发监测, 美国农业威胁预警系统, 自定义脚本, 贸易壁垒监控, 食品安全监控