10 月 12 日,一场由秸秆焚烧引发的空气污染席卷湖南,长沙市及周边区域达到中重度污染。


为了弄清这股污染到底覆盖了多大范围,我们直接用百度天气 API 拉取了当天全省各区县的空气质量数据,结合 Leaflet 做了个 WebGIS 可视化。

最开始遇到的问题是,百度天气接口返回的数据里到底有没有 AQI。实际用下来,通过 location_code 和日期查询可以拿到包含 aqi 字段的结果,再配合空间数据表,就能拼出每个区县的几何形状和空气质量指数。
数据库这边,用 PostgreSQL 加 PostGIS 存储行政区划。查询当天的数据用了这么一条 SQL:
SELECT t2.*, T.province_code, T.province_name, T.city_code, T.city_name, T.area_code, T.area_name, t1.geom, st_asgeojson(T.geom) geomJson, st_x(t1.geom) lon, st_y(t1.geom) lat
FROM biz_weather_now t2, biz_area T, biz_geographic_name t1
WHERE to_char(t2.uptime, 'YYYY-MM-DD') = '2025-10-12'
AND T.province_code = '430000'
AND T.area_name = t1.NAME
AND T.area_code = t2.location_code
AND st_contains(T.geom, t1.geom)
ORDER BY T.area_code;
这样拿到的结果集直接包含了 AQI 指数,以及各区县中心点的经纬度、GeoJSON 几何数据。接下来就是前端怎么渲染。
在 Leaflet 里展示空气质量,核心是给不同的 AQI 区间配上颜色。我参考了环保部的六级划分,定义了颜色数组:
var aqiColorList = [
{name:,:,: (, , ),:},
{:,:,: (, , ),:},
{:,:,: (, , ),:},
{:,:,: (, , ),:},
{:,:,: (, , ),:},
{:,:,: (, , ),:}
];






