浙江空气质量项目的数据、模型与看板链路
浙江空气质量系统依次处理采集、清洗、分析、建模和 API 数据,再由 Three.js 与 ECharts 看板展示结果。
总体链路
浙江省空气质量项目按下面的路径处理数据:
数据采集 -> 数据清洗 -> 统计分析 -> 机器学习 -> Flask API -> Three.js/ECharts 前端看板。
历史数据、实时采集结果和模型输出沿着这条链路进入同一套接口与看板。静态趋势分析和当前城市状态因此使用同一份系统数据。
数据层
项目里有三类数据:
- 浙江省 11 个地市的月度 AQI 数据。
- 杭州、宁波、温州等城市的历史天气数据。
- 通过 aqicn 和 Open-Meteo 获取的实时 AQI 与天气数据。
历史数据用于趋势、季节性和城市间对比;实时数据更新看板状态和预警提示。
实时采集结果写入 SQLite。后端读取每个城市的最新记录,整理为前端可直接使用的 JSON。
分析层
统计分析先处理四类基础问题:
- 哪些城市 AQI 水平更高?
- AQI 是否存在季节变化?
- 温度、湿度、风速和 AQI 是否存在相关性?
- 不同污染物在各城市中如何分布?
这些结论来自原始数据和统计图表,是模型结果的对照基础。
机器学习层
机器学习模块承担四类任务:
- 回归:预测 AQI 数值。
- 分类:判断空气质量等级。
- 聚类:发现城市或时间段的相似模式。
- 时间序列:观察 AQI 的周期变化和未来趋势。
模型输出与统计图表同时呈现,用于解释数值变化、等级判断、相似模式和时间趋势。单独展示预测结果无法说明其数据背景。
后端 API
Flask 后端将数据和模型结果整理为接口,路由调用独立模块完成具体工作:
- crawler 负责实时采集。
- analysis 负责统计和图表输出。
- ml 负责模型训练和预测。
- app 里的规则引擎和推荐系统负责解释与建议。
APScheduler 按固定间隔触发实时采集,新的记录会进入 SQLite,供看板后续读取。
前端看板
前端由三个页面组成:
3d.html:3D 浙江地图和全省监测大屏。detail.html:城市详情和算法分析。charts.html:全省图表、模型结果和预测天数控制。
Three.js 负责地图与空间入口,ECharts 负责趋势、对比、雷达图和排行榜。页面按这两类信息划分,地图和统计图表各自承担清晰的阅读任务。
3d.html 将城市列表转换为空间入口。浙江 GeoJSON 先由 D3 投影为平面坐标,再由 Three.js 拉伸为地市区块。实时 AQI 数据到达前端后,会更新城市颜色、标签纹理、悬浮卡片和顶部统计。
看板按两层路径组织信息:
- 先通过 3D 地图理解全省空气质量分布。
- 再通过 ECharts 图表和城市详情解释污染物、天气因素和模型结果。
Three.js 的实现细节放在另一篇知识卡片中;这篇只说明系统中的数据和页面职责。
可复用经验
类似项目可以按同样的顺序推进:
- 先让数据来源稳定。
- 再做清洗和统计分析。
- 然后补模型层。
- 最后把结果组织成看板和 API。
先确认数据采集和清洗链路稳定,再增加模型。数据来源或更新频率不稳定时,复杂模型的结果也难以解释。