兰州空气质量大数据可视化分析系统
基于 Django + Vue3 + ECharts 的兰州空气质量大数据可视化分析系统。
项目结构
lanzhou_air/
├── backend/ # Django后端
│ ├── config/ # 项目配置
│ ├── apps/
│ │ ├── users/ # 用户模块
│ │ ├── airdata/ # 空气数据模块
│ │ └── analysis/ # 数据分析模块
│ ├── spiders/ # 爬虫模块
│ └── utils/ # 工具函数
├── frontend/ # Vue3前端
│ ├── src/
│ │ ├── views/ # 页面组件
│ │ ├── components/ # 公共组件
│ │ ├── api/ # API接口
│ │ ├── stores/ # 状态管理
│ │ └── router/ # 路由配置
│ └── public/
└── docs/ # 文档
功能模块
项目演示
327-基于Django的兰州空气质量大数据可视化分析系统




























1. 用户中心
- 用户注册/登录
- 个人信息管理(用户名、性别、出生日期、手机号、头像)
- 密码修改
2. 空气质量查看
- 年空气质量查询
- 月空气质量查询
- 空气质量等级筛选
- 区县数据下钻
3. 月空气质量总结
- 月空气质量等级
- 月度数据对比
- 优良天数统计
4. 年空气质量总结
- 年空气质量等级
- 年度数据对比
- 污染物浓度变化趋势
5. 数据大屏
- 兰州市地图展示
- 区县空气质量排名
- 实时AQI指数
- 污染物浓度分布
- 历史趋势图表
6. 管理后台
- 用户管理
- 数据管理
- 爬虫控制
技术栈
后端
- Python 3.10+
- Django 4.2
- Django REST Framework
- MySQL 8.0
- JWT认证
前端
- Vue 3
- Vite
- Element Plus
- ECharts 5
- Pinia
- Vue Router
爬虫
- Requests
- BeautifulSoup4
快速开始
1. 环境准备
确保已安装:
- Python 3.10+
- Node.js 18+
- MySQL 8.0
2. 后端配置
bash
# 进入后端目录
cd backend
# 创建虚拟环境
python -m venv venv
# 激活虚拟环境
# Windows:
venv\Scripts\activate
# Linux/Mac:
source venv/bin/activate
# 安装依赖
pip install -r requirements.txt
# 创建数据库
mysql -u root -p
CREATE DATABASE design_327_air_quality CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
exit
# 修改数据库配置
# 编辑 config/settings.py 中的 DATABASES 配置
# 执行数据库迁移
python manage.py makemigrations
python manage.py migrate
# 初始化数据
python init_data.py
# 启动后端服务
python manage.py runserver
3. 前端配置
bash
# 进入前端目录
cd frontend
# 安装依赖
npm install
# 启动开发服务器
npm run dev
4. 爬取数据
bash
cd backend
# 爬取兰州空气质量数据(2020年至今)
python spiders/lanzhou_spider.py --start-year 2020
# 生成汇总数据
python spiders/summary_generator.py
默认账户
| 账户类型 | 用户名 | 密码 |
|---|---|---|
| 管理员 | admin | admin123 |
| 测试用户 | test | test123 |
API接口
用户接口
- POST /api/users/register/ - 用户注册
- POST /api/users/login/ - 用户登录
- GET /api/users/profile/ - 获取个人信息
- PUT /api/users/profile/ - 更新个人信息
- POST /api/users/change-password/ - 修改密码
空气数据接口
- GET /api/airdata/districts/ - 获取区县列表
- GET /api/airdata/data/ - 获取空气质量数据
- GET /api/airdata/monthly/ - 获取月度汇总
- GET /api/airdata/yearly/ - 获取年度汇总
- GET /api/airdata/dashboard/ - 获取大屏数据
分析接口
- GET /api/analysis/yearly/ - 年度分析
- GET /api/analysis/monthly/ - 月度分析
- GET /api/analysis/trend/ - 趋势分析
- POST /api/analysis/predict/ - AQI预测
兰州区县
| 代码 | 名称 | 级别 |
|---|---|---|
| lanzhou | 兰州市 | 市 |
| chengguan | 城关区 | 区 |
| qilihe | 七里河区 | 区 |
| xigu | 西固区 | 区 |
| anning | 安宁区 | 区 |
| honggu | 红古区 | 区 |
| yongdeng | 永登县 | 县 |
| gaolan | 皋兰县 | 县 |
| yuzhong | 榆中县 | 县 |
空气质量等级
| AQI范围 | 等级 | 颜色 |
|---|---|---|
| 0-50 | 优 | 绿色 |
| 51-100 | 良 | 黄色 |
| 101-150 | 轻度污染 | 橙色 |
| 151-200 | 中度污染 | 红色 |
| 201-300 | 重度污染 | 紫色 |
| >300 | 严重污染 | 褐红色 |
注意事项
- 爬虫使用请遵守目标网站的robots.txt规则
- 建议设置合理的爬取间隔,避免对目标网站造成压力
- 生产环境请修改SECRET_KEY和数据库密码
- 建议使用HTTPS部署