PR-CYBR/PR-CYBR-MAP
GitHub: PR-CYBR/PR-CYBR-MAP
面向波多黎各的交互式应急响应态势感知平台,集成气象雷达、飓风追踪、SDR 无线电监控、避难所导航和 Mesh 网络规划于一体。
Stars: 0 | Forks: 0
# PR-CYBR Map
## 描述
波多黎各的交互式应急响应和态势感知地图,采用 Jawg Matrix 主题风格,通过动态标记和实时应急数据展示关键位置。
## 功能
### 核心功能
- **交互式地图**:通过城市和区域的动态标记探索波多黎各
- **弹窗**:标记位置的信息弹窗
- **响应式设计**:兼容桌面和移动设备
### 应急响应功能(新增)
- **NOAA 气象雷达图层**:可随时开关的实时气象雷达数据
- **天气预警**:自动显示波多黎各活跃的 NOAA 天气预警
- **飓风追踪器**:实时追踪活跃的飓风和热带风暴及其预报路径
- **公用设施统计网格**:展示供水和供电情况的基础设施图层(夜间模式可用)
- **避难所位置**:
- 带有容量信息的应急飓风避难所位置
- 从任意地址到最近避难所的路线规划
- 使用 OSRM 路由的逐步导航
- **在线 SDR 无线电监控**:
- 来自波多黎各无线电频率的实时语音转文本
- 滚动小部件展示开放使用频率上的无线电通信
- 分类消息(紧急、天气、避难所等)
- **实时 SITREP 动态**:
- 汇总来自多个来源的情况报告
- 集成 NWS、FEMA 和当地应急管理的 RSS 源
- 带有时间戳更新的滚动小部件
## 如何查看
访问实时网站:[PR-CYBR Map](https://pr-cybr.github.io/PR-CYBR-MAP/)
该网站是一个多页面的 Astro 应用程序,包含以下部分:
- **主页**:项目概述和快速链接
- **地图**:带有应急数据图层的交互式 Leaflet 地图
- **Mesh 网络**:社区 mesh 网络浏览器 (M3SH-BROWSER)
- **培训中心**:Mesh 网络培训和学习资源 (M3SH-EDU)
- **统计**:仓库指标和活动图表
- **讨论**:来自 GitHub Discussions 的社区对话
- **开发看板**:项目任务和进度追踪
- **创建 Issue**:带有模板的快速 Issue 创建
- **文档**:项目文档(README、FEATURES、TESTING、PR_SUMMARY)
- **可视化**:Mermaid 图表和可视化内容
## 架构
### 多页面 Astro 站点
项目已迁移至位于 `site/` 目录的现代 Astro 站点:
- **框架**:Astro + React + TailwindCSS + daisyUI
- **主题**:10 个用户可选的暗色主题,支持 localStorage 持久化
- **数据快照**:在构建期间将 GitHub API 数据缓存为 JSON
- **地图资产**:为了向后兼容,将旧版 CSS/JS 复制到构建目录中
- **自动化数据**:CI 工作流同步应急数据并构建站点
- **Mesh 工具**:用于 Meshtastic mesh 网络规划和部署的 M3SH 套件
### 数据流
1. **应急数据** (`data/cache/`):由 `.github/workflows/update-data.yml` 每 30 分钟更新一次
2. **地图资产** (`css/`、`js/`):在构建期间复制到 `site/public/`
3. **GitHub 数据**:在 CI 构建期间通过 `site/scripts/` 中的脚本进行快照
4. **部署**:构建好的站点通过 `.github/workflows/pages.yml` 部署到 GitHub Pages
## 实时代码库思维导图
每次推送时自动生成:**repo-map.html**(通过 GitHub Pages 和 CI 产物)。
当 Pages 启用时,访问地址为:`https://pr-cybr.github.io/PR-CYBR-MAP/repo-map.html`
## 使用地图
### 控制面板
左上角的控制面板提供对以下功能的快速访问:
- 切换气象雷达图层
- 切换公用设施网格(仅限夜间模式)
- 刷新飓风数据
- 刷新天气预警
- 从任意地址规划到最近避难所的路线
- **切换 Mesh 构建器** (M3SH-BLDR)
### 仪表盘小部件
右下角的两个小部件提供实时更新:
- **无线电通信小部件**:显示转录的无线电通信内容
- **SITREP 小部件**:显示情况报告和应急动态源
### 交互元素
- 点击标记查看位置详情
- 在弹窗中点击“查看更多”获取详细信息
- 使用避难所弹窗获取前往应急位置的路线
- 查看实时天气和飓风数据图层
## M3SH Mesh 网络工具
PR-CYBR-MAP 包含用于规划和部署 Meshtastic mesh 网络的 **M3SH** (mesh-network) 套件:
### M3SH-BLDR - 虚拟 Mesh 构建器
- 直接在地图上的**交互式网络构建器**
- 放置节点、绘制链路、配置设备
- **Deploy-M3SH 分析**提供:
- 网络可靠性评分
- 覆盖范围估算
- 孤立和超范围检测
- 针对单个节点的配置建议
- 环境感知分析(城市/郊区/乡村/开阔地)
- 10 多种设备模板(Spec5、RAKWireless、LILYGO、MorosX 等)
### M3SH-L0S - 视距助手
- 计算节点间的距离
- LOS(视距)概率估算
- 为扩展覆盖范围建议中继/上行链路位置
- 在地图上为建议的上行位置提供可视化标记
### M3SH-BROWSER - 社区网络浏览器
- 浏览所有已知的波多黎各 mesh 网络
- 按波多黎各区域筛选并按名称搜索
- 查看网络配置文件,包括:
- 节点数量和状态
- 覆盖范围和可靠性指标
- 配置摘要
- 联系信息
### M3SH-EDU - 培训中心
- 涵盖 5 个类别的 **50 多份培训指南**:
- 硬件设置(设备和无线电)
- 软件配置(应用和工具)
- 网络概念(协议和路由)
- 系统管理(操作系统配置)
- 平台指南(协作工具)
- 可搜索的指南库
- 难度级别和标签
- 外部文档链接
### 设计说明
M3SH 工具使用**启发式分析**进行部署规划。该架构旨在支持未来与以下工具的集成:
- 用于 RF 覆盖分析的 **Meshtastic Site Planner**
- 用于吞吐量建模的 **Meshtastic Simulator**
- 用于地形感知 RF 传播的 **SPLAT!**
所有分析接口均设计为可直接替换的模块,无需更改 UI。
## 开发
### 本地站点开发
要在本地进行 Astro 站点开发:
1. 克隆仓库:
git clone https://github.com/PR-CYBR/PR-CYBR-MAP.git
cd PR-CYBR-MAP
2. 安装站点依赖:
cd site
npm install --legacy-peer-deps
3. 复制用于本地开发的数据:
# 从仓库根目录运行
mkdir -p site/public/data/cache
cp -r data/cache/* site/public/data/cache/
cp data/PR-CYBR-MAP.json site/public/data/cache/
4. 添加 API token(可选 - 如果缺少将回退到 OSM):
# 创建 site/public/data/config.json
{
"MAPBOX_ACCESS_TOKEN": "your_token_here",
"JAWG_ACCESS_TOKEN": "your_token_here"
}
5. 启动开发服务器:
npm run dev
打开 http://localhost:4321
6. 构建生产版本:
npm run build
npm run preview
### 添加文档
将 Markdown 文件放在仓库根目录中。它们将自动链接到文档页面。
### 添加 Mermaid 图表
1. 在 `mermaid/` 目录中创建 `.mmd` 文件
2. 它们将在构建期间自动复制到站点
3. 通过可视化页面访问它们
### 主题定制
编辑 `site/tailwind.config.cjs` 以添加或修改 daisyUI 主题。
### 本地设置(旧版地图)
1. 克隆仓库:
git clone https://github.com/PR-CYBR/PR-CYBR-MAP.git
cd PR-CYBR-MAP
2. 将所需的 access token 添加到 `data/config.json`:
{
"MAPBOX_ACCESS_TOKEN": "your_token_here",
"JAWG_ACCESS_TOKEN": "your_token_here"
}
3. 在本地提供服务(使用任何静态文件服务器):
python -m http.server 8000
然后打开 http://localhost:8000
### 部署
当更改推送到 `main` 分支时,站点会自动部署:
1. **更新数据工作流** (`.github/workflows/update-data.yml`):
- 每 30 分钟运行一次
- 获取飓风、天气预警和避难所数据
- 将更新提交到 `data/cache/`
2. **Pages 部署工作流** (`.github/workflows/pages.yml`):
- 在推送到 `main` 时触发
- 将旧版地图资产复制到站点
- 运行 GitHub API 快照脚本
- 构建 Astro 站点
- 部署到 GitHub Pages
推送到 `main` 后,站点将在 2-5 分钟内自动更新。
### CI/CD 数据快照
在 CI 构建期间会对以下数据进行快照:
- **stats.json**:仓库 star、fork、watcher、语言、提交活动
- **discussions.json**:最新的 25 个 GitHub Discussions
- **projects.json**:GitHub Projects v2 看板或按状态分组的 issue
这些快照由 `site/scripts/` 中的 TypeScript 脚本生成,供统计、讨论和开发看板页面使用。
### 自动化数据更新
系统使用 GitHub Actions 每 30 分钟自动更新一次应急数据:
- 来自 NOAA NHC 的飓风追踪数据
- 来自 NOAA Weather Service 的天气预警
- 避难所状态和可用性
无需人工干预——系统是完全自主的。
## 架构
### 仅限客户端
整个应用程序在浏览器中运行,没有服务器端依赖:
- 纯 HTML5、CSS3 和 JavaScript
- 使用 Leaflet.js 进行地图渲染
- 直接调用公共应急数据源的 API
- 本地缓存以提高性能和可靠性
### 数据源
- **气象雷达**:NOAA RIDGE WMS 服务
- **天气预警**:NOAA Weather Service API
- **飓风数据**:NOAA 国家飓风中心 GeoJSON 源
- **路由**:OSRM (Open Source Routing Machine)
- **地理编码**:Nominatim (OpenStreetMap)
### 轻量化设计
- 最小依赖(仅 Leaflet.js)
- 高效的缓存策略
- 针对 GitHub Pages 托管进行了优化
- 无需构建过程
## 文件结构
```
PR-CYBR-MAP/
├── index.html # Main page
├── css/
│ ├── styles.css # Core styles
│ ├── widgets.css # Widget styles
│ └── ascope_sidebar.css # ASCOPE report styles
├── js/
│ ├── map.js # Main map initialization
│ ├── weather.js # Weather radar & alerts
│ ├── hurricane.js # Hurricane tracking
│ ├── utilities.js # Utility grid overlay
│ ├── shelters.js # Shelter locations & routing
│ ├── sdr.js # Radio monitoring widget
│ ├── sitrep.js # SITREP feed widget
│ ├── controls.js # UI control handlers
│ └── ascope_report.js # ASCOPE reporting
├── data/
│ ├── PR-CYBR-MAP.json # Location data
│ ├── ascope_template.json
│ └── cache/ # Auto-updated emergency data
│ ├── hurricanes.json
│ ├── weather_alerts.json
│ └── shelters.json
├── .github/workflows/
│ ├── deploy.yml # Deployment automation
│ └── update-data.yml # Data update automation
└── README.md # This file
```
## 许可证
详情请参见 LICENSE 文件。
## 致谢
- 地图瓦片:[Jawg Maps](https://jawg.io)
- 气象数据:[NOAA](https://www.noaa.gov)
- 飓风数据:[National Hurricane Center](https://www.nhc.noaa.gov)
- 路由服务:[OSRM Project](http://project-osrm.org/)
- 基础地图:[OpenStreetMap](https://www.openstreetmap.org)
标签:Astro, CISA项目, ESC4, FEMA, GPT, HTTP/HTTPS抓包, Leaflet, NOAA, OSINT, OSRM, RSS, SDR, Syscall, Web开发, 交互式地图, 仪表盘, 公众安全, 前端, 地图, 基础设施监控, 实时处理, 库, 应急响应, 应急管理, 态势感知, 情报收集, 数据可视化, 数据聚合, 无线电监控, 气象监测, 水电统计, 波多黎各, 漏洞研究, 漏洞管理, 灾难避难所, 社区协作, 社区网络, 网格网络, 网络威胁, 网络安全, 自然灾害, 语音转文本, 路径规划, 隐私保护, 飓风追踪