Prince-1302/trafficsense
GitHub: Prince-1302/trafficsense
一个基于 AI 的城市交通管理与事件响应平台,通过预测交通拥堵、智能调度警力和市民协同上报来缓解城市交通压力。
Stars: 0 | Forks: 0
# TrafficSense — 班加罗尔交通指挥平台 🚦
**TrafficSense** 是一个先进的、基于 AI 的交通管理和事件响应平台,专为 **Flipkart Gridlock Hackathon** 打造。它通过预测事件引发的交通瘫痪、智能调配交通警察、建议实时绕行路线以及赋能市民上报突发事件,来解决班加罗尔臭名昭著的交通拥堵问题。
## 🌟 核心功能
该平台分为三个全面且互联互通的仪表板:
### 1. 管理指挥中心 (Police HQ)
- **实时概览:** 显示活跃的严重警报、道路封闭和已部署警力的实时 KPI。
- **AI 事件评分:** 使用训练好的 Machine Learning 模型,自动为新增事件分配优先级(Low/Medium/High)和 Impact Score (0-100)。
- **智能部署:** 根据事件的严重程度和位置,计算所需的交通管制人员的准确数量。
- **分析与预测:** 可视化交通趋势、各区域的事件分布,并预测未来的高风险时段。
- **市民报告核实:** 管理员可以审查公众报告、查看上传的照片,并只需单击即可将经过验证的报告转化为官方的实时事件。
### 2. 交通管制仪表板 (Field Officers)
- **特定区域追踪:** 警员只能看到与其被指派区域相关的事件。
- **交互式路线规划:** 集成 Leaflet 地图,显示事件的精确位置和活跃的路障。
- **AI 路线绕行:** 自动生成并显示建议的替代路线,以引导交通避开拥堵路段。
- **事件解决:** 警员可以上传清场证明照片、添加现场记录,并将事件标记为“Resolved”(已解决),同时实时更新管理仪表板。
### 3. 公众查看仪表板 (Citizens)
- **班加罗尔实时地图:** 全屏交互式城市地图,显示所有已验证的活跃事件,并按严重程度进行颜色编码(🔴 High,🟠 Medium,🔵 Low,🟣 Road Closure)。
- **Impact Score 检查器:** 允许市民输入地点,并在开始通勤前计算潜在的交通风险。
- **市民报告门户:** 专用的表单,供公众直接向控制室报告事故、积水、坑洼或车辆故障,并支持上传 GPS 定位和照片。
## 🛠️ 技术栈与实现
**TrafficSense** 的构建重点在于绝对的性能、快速的原型开发以及令人惊艳的“glassmorphism”(毛玻璃)美学。
### 前端架构
- **核心:** 纯 HTML5、Vanilla CSS3 和 Vanilla JavaScript。(未使用 React/Angular 等庞大的 JS 框架,以确保零延迟性能和即时加载时间)。
- **地图:** [Leaflet.js](https://leafletjs.com/) 集成了 OpenStreetMap 图块,可提供丰富、交互且轻量级的地理可视化。
- **图表:** [Chart.js](https://www.chartjs.org/) 用于渲染动态的、带动画的分析图表和优先级分布图。
- **设计系统:** 自定义 CSS 变量、平滑的微动画、模糊背景,以及精致的深色/浅色模式切换。
- **状态管理:** 利用浏览器的 `localStorage` 在所有三个仪表板之间无缝同步实时数据,而无需在原型阶段使用复杂的数据库。
### 后端与 AI 架构
- **服务器:** 使用 Python 和 [Flask](https://flask.palletsprojects.com/) 提供轻量级的 REST API。
- **Machine Learning:** [Scikit-Learn](https://scikit-learn.org/) (RandomForestClassifier 和 RandomForestRegressor)。
- **数据:** 基于包含班加罗尔历史交通事件的模拟数据集 (`Astram event data_anonymized.csv`) 进行训练。
- **模型 Pipeline (`train_model.py`):**
- 提取的特征包括时间、事件原因、区域和道路封闭状态。
- 生成 `trafficsense_model.pkl`,用于预测 Priority(优先级 - 分类)和 Impact Score(影响分数 - 回归)。
## 🚀 设置与安装指南
您可以通过两种模式运行此项目:**Full AI Mode** 或 **Offline Fallback Mode**。
### 第一步:克隆并设置环境
确保您已安装 Python 3.8+。
```
git clone
cd
pip install -r requirements.txt
```
### 第二步:(可选)重新训练 AI 模型
如果您想从 CSV 数据集生成全新的模型:
```
python train_model.py
```
*这将创建一个新的 `trafficsense_model.pkl` 文件。*
### 第三步:启动后端 AI 服务器
启动 Flask API,以便仪表板可以与训练好的模型进行通信:
```
python app.py
```
*保持此终端窗口打开。服务器将在 `http://localhost:5000` 上运行。*
### 第四步:启动平台
1. 在任何现代 Web 浏览器中打开 `index.html`(或使用 VS Code Live Server)。
2. 使用着陆页上的导航按钮在 **Admin**、**Traffic Controller** 和 **Public** 视图之间切换。
3. 测试流程:在 Public Dashboard 中创建市民报告 -> 在 Admin Dashboard 中进行验证 -> 在 Controller Dashboard 中解决它!
## 🛡️ 降级机制(离线模式)
如果您需要在严格的网络环境或没有 Python 的机器上演示该项目,**前端永远不会崩溃**。
JavaScript 架构包含一个强大的**降级机制**。如果它尝试访问 `http://localhost:5000/predict` 且服务器处于关闭状态,它会自动切换到数学启发式引擎。它会在浏览器本地根据事件的参数计算优先级和分数(例如,Road Closures 会使分数瞬间增加 30 分),从而确保每次演示都能完美无瑕。
标签:Apex, Leaflet, 后端开发, 数据可视化, 智慧交通, 机器学习, 调度指挥系统, 路径规划, 逆向工具