2026-07-05 / 6 min

浙江空气质量项目的数据、模型与看板链路

浙江空气质量系统依次处理采集、清洗、分析、建模和 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 数据到达前端后,会更新城市颜色、标签纹理、悬浮卡片和顶部统计。

看板按两层路径组织信息:

  1. 先通过 3D 地图理解全省空气质量分布。
  2. 再通过 ECharts 图表和城市详情解释污染物、天气因素和模型结果。

Three.js 的实现细节放在另一篇知识卡片中;这篇只说明系统中的数据和页面职责。

可复用经验

类似项目可以按同样的顺序推进:

  1. 先让数据来源稳定。
  2. 再做清洗和统计分析。
  3. 然后补模型层。
  4. 最后把结果组织成看板和 API。

先确认数据采集和清洗链路稳定,再增加模型。数据来源或更新频率不稳定时,复杂模型的结果也难以解释。