# aqi-forecast-system **Repository Path**: he-needs/aqi-forecast-system ## Basic Information - **Project Name**: aqi-forecast-system - **Description**: 基于Spring Boot + Vue3 + Python的昆明市空气质量(AQI)数据分析与预测系统。前后端分离架构,支持AQI历史数据管理、ECharts可视化、ARIMA与LSTM双模型预测。技术栈:Spring Boot 3.2 + MyBatis-Plus + Sa-Token + Vue 3.5 + Naive UI + TensorFlow,提供数据导入、清洗、分析、预测功能。 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2025-12-28 - **Last Updated**: 2026-06-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 项目使用说明 ## 📁 项目结构 ``` weather/ ├── backend/ # 后端 Spring Boot 项目 ├── frontend/ # 前端 Vue3 项目 ├── python/ # Python 数据分析脚本 └── aqi_data/ # 原始CSV数据 ``` ## 🚀 快速开始 ### 1. 数据库初始化 ```bash # 在MySQL中执行初始化脚本 mysql -u root -p < backend/init.sql ``` ### 2. 启动后端服务 ```bash cd backend # 使用Maven编译运行 mvn clean install mvn spring-boot:run # 或者使用IDE(IntelliJ IDEA/Eclipse)直接运行AqiSystemApplication ``` 后端服务默认运行在: http://localhost:8080/api ### 3. 启动前端服务 ```bash cd frontend # 安装依赖(如果还没安装vue-router) npm install vue-router # 启动开发服务器 npm run dev ``` 前端服务默认运行在: http://localhost:5173 ### 4. 导入AQI数据 方式一: 使用前端界面导入 1. 登录系统(admin/admin123) 2. 在Dashboard页面输入数据目录路径 3. 点击"导入数据"按钮 方式二: 使用Python脚本导入 ```bash cd python pip install -r requirements.txt python data_import.py ``` ### 5. 运行数据分析 ```bash cd python # 安装Python依赖 pip install -r requirements.txt # 1. 数据清洗 python data_clean.py # 2. 探索性数据分析 python eda.py # 3. ARIMA模型训练与预测 python arima_model.py # 4. LSTM模型训练与预测 python lstm_model.py ``` ## 📊 主要功能 ### 后端API接口 #### 认证模块 - `POST /api/auth/login` - 用户登录 - `POST /api/auth/logout` - 用户登出 - `GET /api/auth/info` - 获取当前用户信息 #### AQI数据管理 - `POST /api/aqi/import` - 批量导入CSV数据 - `GET /api/aqi/history` - 查询历史数据 - `GET /api/aqi/statistics/monthly` - 月度统计 - `GET /api/aqi/correlation` - 相关性数据 - `GET /api/aqi/echarts/line` - ECharts折线图数据 #### WebSocket - `ws://localhost:8080/api/ws/predict` - 实时推送预测结果 ### 前端页面 - `/login` - 登录页面 - `/` - Dashboard主页(AQI趋势图、月度统计、数据导入) - `/data` - 数据管理页面(开发中) ### Python分析脚本 - `data_import.py` - 数据导入到MySQL - `data_clean.py` - 数据清洗预处理 - `eda.py` - 探索性数据分析 - `arima_model.py` - ARIMA时序预测 - `lstm_model.py` - LSTM深度学习预测 ## 论文对应章节 ### 第3章 系统设计 - 3.1 总体架构设计 - 3.2 数据库设计(见backend/init.sql) - 3.3 登录鉴权模块(Sa-Token) ### 第4章 系统实现 - 4.1 用户登录模块(AuthController) - 4.2 数据管理模块(AqiController, AqiHistoryService) - 4.3 数据可视化模块(Dashboard.vue, ECharts) - 4.4 WebSocket实时推送(PredictionWebSocket) ### 第5章 数据分析与建模 - 5.1 数据预处理(data_clean.py) - 5.2 探索性分析(eda.py) - 5.3 ARIMA模型(arima_model.py) - 5.4 LSTM模型(lstm_model.py) ## ⚠️ 注意事项 1. **数据库配置**: 请根据实际情况修改`backend/src/main/resources/application.yml`和`python/data_import.py`中的数据库连接信息 2. **数据目录**: 导入数据时,请确保数据目录路径正确(默认为`d:\jiedan\weather\aqi_data`) 3. **Python环境**: 建议使用Python 3.8+,TensorFlow 2.13可能需要特定版本的CUDA(如果使用GPU) 4. **端口冲突**: 确保8080(后端)和5173(前端)端口未被占用 ## 🎓 答辩演示建议 1. **系统演示流程**: - 登录系统 → 数据导入 → 查看可视化图表 → 展示预测结果 2. **技术亮点**: - 前后端分离架构 - Sa-Token鉴权 - WebSocket实时推送 - ECharts可视化 - ARIMA + LSTM双模型对比 3. **论文图表**: - Python脚本生成的所有PNG图片都可用于论文 - ECharts图表可以截图使用 ## 🛠️ 技术栈总结 **后端**: Spring Boot 3.2.0 + MyBatis-Plus 3.5.5 + Sa-Token 1.37.0 + MySQL 8.0 **前端**: Vue 3.5 + Vite 6.0 + Naive UI 2.39 + ECharts 5.4 + Pinia 2.1 **数据分析**: Python 3.8+ + Pandas + NumPy + Scikit-learn + Statsmodels + TensorFlow ## 📧 问题反馈 如有问题,请查看日志或联系开发团队。