201 lines
4.8 KiB
Markdown
201 lines
4.8 KiB
Markdown
# 全国交通脉络数据可视化分析
|
||
|
||
## 📋 项目简介
|
||
|
||
基于 Flask + MySQL 的高速公路智能交通分析系统,集成可视化展。系统通过Mock技术获取交通数据,运用大数据技术进行数据分析,并提供直观的数据可视化界面。
|
||
|
||
## ✨ 主要功能
|
||
|
||
### 📊 大数据架构
|
||
- **Hadoop**:使用Hadoop进行存储原始数据
|
||
- **Sqoop**:使用Sqoop将Mysql数据导入到Hive中
|
||
- **Hive**:使用Hive SQL进行数据分析
|
||
- **Flask**:将分析后的数据进行接口调用和编写Echarts可视化展示
|
||
|
||
### 🗺️ 大数据流程
|
||
- Python Mock数据
|
||
- MySQL存储原始数据
|
||
- Sqoop数据转换
|
||
- Hdfs数据存储
|
||
- Hive映射Hdfs数据并进行数据分析
|
||
- Spark读取Hive将数据保存到MySQL中
|
||
- Flask+html+css+js+echarts将数据进行可视化展示
|
||
|
||
### 📈 数据大屏
|
||
- 拥堵延时排名TOP
|
||
- 高速驾驶行为风险指数
|
||
- 道路情况分析
|
||
- 拥堵延时排名
|
||
- 交通指数分析
|
||
- 拥堵城市参数排名
|
||
- 交通健康城市排名
|
||
|
||
## 🏗️ 技术架构
|
||
|
||
### 后端技术栈
|
||
- **Flask**: Web框架
|
||
- **Flask-RESTful**: RESTful API开发
|
||
- **Flask-SQLAlchemy**: ORM数据库操作
|
||
- **PyMySQL**: MySQL数据库连接
|
||
- **Requests**: HTTP请求库
|
||
- **Pandas**: 数据处理
|
||
|
||
### 前端技术栈
|
||
- **Bootstrap**: UI框架
|
||
- **Chart.js**: 图表库
|
||
- **ApexCharts**: 高级图表库
|
||
- **jQuery**: JavaScript库
|
||
- **DataTables**: 数据表格
|
||
|
||
### 数据库
|
||
- **MySQL**: 主数据库
|
||
- **SQLAlchemy**: ORM映射
|
||
|
||
## 📁 项目结构
|
||
|
||
```
|
||
bigdata-highway-analytics/
|
||
├── app.py # 应用主入口
|
||
├── config.py # 配置文件
|
||
├── README.md # 项目说明文档
|
||
├── db/
|
||
│ └── bs_jaotong.sql # 数据库初始化脚本
|
||
└── App/ # 核心应用模块
|
||
├── __init__.py # 应用初始化
|
||
├── apis.py # RESTful API接口
|
||
├── views.py # Web页面路由
|
||
├── models.py # 数据模型
|
||
├── exts.py # 扩展初始化
|
||
├── urls.py # URL路由配置
|
||
├── templates/ # HTML模板
|
||
│ └── index.html
|
||
└── static/ # 静态资源
|
||
├── assets/ # 第三方资源
|
||
├── css/ # 样式文件
|
||
├── js/ # JavaScript文件
|
||
└── images/ # 图片资源
|
||
```
|
||
|
||
## 🚀 安装与部署
|
||
|
||
### 环境要求
|
||
- Python 3.7+
|
||
- MySQL 5.7+
|
||
- Windows/Linux/macOS
|
||
|
||
### 1. 克隆项目
|
||
```bash
|
||
git clone <your-repo-url>
|
||
cd bigdata-highway-analytics
|
||
```
|
||
|
||
### 2. 创建虚拟环境(推荐)
|
||
```bash
|
||
# Windows
|
||
python -m venv venv
|
||
venv\Scripts\activate
|
||
|
||
# Linux/macOS
|
||
python3 -m venv venv
|
||
source venv/bin/activate
|
||
```
|
||
|
||
### 3. 安装依赖包
|
||
```bash
|
||
pip install flask==2.3.3
|
||
pip install flask-restful==0.3.10
|
||
pip install flask-sqlalchemy==3.0.5
|
||
pip install pymysql==1.1.0
|
||
pip install requests==2.31.0
|
||
pip install tqdm==4.66.1
|
||
pip install pandas==2.1.1
|
||
pip install statsmodels==0.14.0
|
||
pip install numpy==1.24.3
|
||
pip install scipy==1.11.1
|
||
```
|
||
|
||
### 4. 数据库配置
|
||
1. 创建MySQL数据库:
|
||
```sql
|
||
CREATE DATABASE bs_jaotong CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||
```
|
||
|
||
2. 导入数据库结构:
|
||
```bash
|
||
mysql -u root -p bs_jaotong < db/bs_jaotong.sql
|
||
```
|
||
|
||
3. 修改数据库连接配置(`config.py`):
|
||
```python
|
||
class BaseConfig:
|
||
HOST = 'localhost' # 数据库主机
|
||
PORT = '3306' # 数据库端口
|
||
USERNAME = 'root' # 数据库用户名
|
||
PASSWORD = 'your_password' # 数据库密码
|
||
DATABASE = 'bs_jaotong' # 数据库名称
|
||
```
|
||
|
||
### 5. 启动应用
|
||
```bash
|
||
python app.py
|
||
```
|
||
|
||
访问地址:http://127.0.0.1:5000/
|
||
|
||
## 📊 数据库设计
|
||
|
||
### 主要数据表
|
||
|
||
#### 用户表 (sys_user)
|
||
- `id`: 用户ID(主键)
|
||
- `username`: 用户名
|
||
- `password`: 密码
|
||
- `create_time`: 创建时间
|
||
|
||
#### 城市代码表 (city_code)
|
||
- `code`: 城市代码(主键)
|
||
- `name`: 城市名称
|
||
- `pinyin`: 城市拼音
|
||
|
||
#### 拥堵数据表 (jam)
|
||
- `id`: 记录ID(主键)
|
||
- `freeFlowSpeed`: 畅通速度
|
||
- `realSpeed`: 实际速度
|
||
- `idxRatio`: 周环比数
|
||
- `idxRatioState`: 周环比状态
|
||
- `idx`: 拥堵延时指数
|
||
- `label`: 城市标签
|
||
- `name`: 城市编号
|
||
- `create_time`: 创建时间
|
||
|
||
#### 预测数据表 (prediction)
|
||
- `id`: 记录ID(主键)
|
||
- `idx`: 拥堵指数
|
||
- `create_time`: 预测日期
|
||
|
||
## 🔧 配置说明
|
||
|
||
### 环境变量配置
|
||
建议创建 `.env` 文件进行环境配置:
|
||
```
|
||
DB_HOST=localhost
|
||
DB_PORT=3306
|
||
DB_USER=root
|
||
DB_PASSWORD=your_password
|
||
DB_NAME=bs_jaotong
|
||
FLASK_ENV=development
|
||
```
|
||
|
||
### 数据库连接配置
|
||
在 `config.py` 中修改数据库连接参数:
|
||
```python
|
||
class BaseConfig:
|
||
DIALECT = 'mysql'
|
||
DRIVER = 'pymysql'
|
||
HOST = 'localhost'
|
||
PORT = '3306'
|
||
USERNAME = 'root'
|
||
PASSWORD = 'your_password'
|
||
DATABASE = 'bs_jaotong'
|
||
```
|