跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
JavaScript大前端算法

基于百度天气接口的空气质量 WebGIS 可视化实践——以湖南为例

综述由AI生成介绍基于百度天气接口和 Leaflet 库实现湖南省空气质量 WebGIS 可视化的技术方案。内容包括空气质量等级标准、PostgreSQL 空间数据查询 SQL 语句、前端颜色映射逻辑及图例切换功能。通过实际案例展示了中重度污染与优质地区的分布情况,并提供了污染严重及质量优的前 10 区县排名数据。实现了从数据获取到地图交互展示的完整流程。

数字游民发布于 2026/4/6更新于 2026/5/2034 浏览
基于百度天气接口的空气质量 WebGIS 可视化实践——以湖南为例

前言

地理信息系统(GIS)技术与网络技术的深度融合催生了 WebGIS,能够将复杂的空间数据以直观、交互的方式呈现给用户。空气质量作为重要的环境指标,其数据的可视化呈现对于公众健康、环境管理和决策支持具有重要意义。本文基于百度天气接口开展空气质量 WebGIS 可视化实践,将空气质量数据与地理空间信息相结合,构建动态、交互的展示平台。

文章配图

一、空气质量展示需求

本节结合百度的天气接口,对湖南省的一次空气污染需求展示进行讲解。

1、满城火辣味周末

互联网上关于周末空气情况的新闻如下:

文章配图

长沙市生态环境保护委员会办公室发布最新回应,受上游地区秸秆露天焚烧传输影响,长沙市空气质量达到中重度污染。

文章配图

2、空气质量状况

我们需要查看全省的空气质量情况。本次空气污染过程除了长沙,其它城市的空气质量情况如何?除了表格数据,我们更想基于 WebGIS 来进行空间数据展示,能够识别出空气污染的大致范围。

二、WebGIS 展示百度天气

本文将介绍空气质量等级的基本知识,了解空气质量等级包含的内容。本小节还将详细讲述如何基于百度的天气接口进行数据查询的实现,最后讲解如何使用 Leaflet 来集成百度的空气质量进行可视化展示。

1、关于空气质量等级

空气指数空气状况对健康影响情况建议采取的措施
0-50优空气质量令人满意,基本无空气污染,对健康没有危害各类人群可多参加户外活动,多呼吸一下清新的空气。
51-100良好除少数对某些污染物特别敏感的人群外,不会对人体健康产生危害除少数对某些污染物特别容易过敏的人群外,其他人群可以正常进行室外活动。
101-150轻度污染敏感人群症状会有轻度加剧,对健康人群没有明显影响儿童、老年人及心脏病、呼吸系统疾病患者应尽量减少体力消耗大的户外活动。
151-200中度污染敏感人群症状进一步加剧,可能对健康人群的心脏、呼吸系统有影响儿童、老年人及心脏病、呼吸系统疾病患者应尽量减少外出,停留在室内,一般人群应适量减少户外运动。
201-300重度污染空气状况很差,会对每个人的健康都产生比较严重的危害儿童、老年人及心脏病、肺病患者应停留在室内,停止户外运动,一般人群尽量减少户外运动。
>300严重污染空气状况极差,所有人的健康都会受到严重危害
儿童、老年人和病人应停留在室内,避免体力消耗,除有特殊需要的人群外,一般人群尽量不要停留在室外。

这里说的空气指数,就是 AQI。通过百度的天气接口可以获取行政区的天气信息数据。

2、数据查询实现

在 PG 数据库中实现空气质量查询的 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 就是不同的区县对应的空气质量指数。

3、Leaflet 集成百度空气质量

为了方便使用 Leaflet 进行空气质量进行空间展示,可以按照以下步骤进行 WebGIS 可视化集成。

第一步:定义空气质量指数与颜色的对应关系,前端使用 Javascript 来进行定义,核心代码如下:

//AQI 空气指数配置
var aqiColorList = [
  {name:"优 (0–50)",color:"#00FF00",rgb:new Color(0, 255, 0),colorDesc:"绿色"},
  {name:"良 (51–100)",color:"#FFFF00",rgb:new Color(255, 255, 0),colorDesc:"黄色"},
  {name:"轻度污染 (101–150)",color:"#FFA500",rgb:new Color(255, 165, 0),colorDesc:"橙色"},
  {name:"中度污染 (151–200)",color:"#FF0000",rgb:new Color(255, 0, 0),colorDesc:"红色"},
  {name:"重度污染 (201–300)",color:"#800080",rgb:new Color(128, 0, 128),colorDesc:"紫色"},
  {name:"严重污染 (>300)",color:"#993366",rgb:new Color(153, 51, 102),colorDesc:"褐红色"}
];

第二步:在进行中文标注时,需要根据 AQI 来动态生成颜色值,转换方法如下:

function getColorByAqi(aqi){
  var aqival = parseInt(aqi);
  if(aqival >= 0 && aqival <= 50) { return "#00FF00"; }
  if(aqival >= 51 && aqival <= 100) { return "#FFFF00"; }
  if(aqival >= 101 && aqival <= 150) { return "#FFA500"; }
  if(aqival >= 151 && aqival <= 200) { return "#FF0000"; }
  if(aqival >= 201 && aqival <= 300) { return "#800080"; }
  if(aqival >= 300) { return "#993366"; }
}

第三步,为了兼容在空气质量展示时可以进行温度的切换,地图的图例也要可以切换,切换图例的方法如下:

function initLegendAndColor(type){
  var legendData = new Array();
  var colorArray = new Array();
  var _targetDataList;
  if(type == "tem"){ _targetDataList = weatherColorList; }
  else{
    _targetDataList = aqiColorList;
  }
  for(var i = 0;i<_targetDataList.length;i++){
    var _tempData = _targetDataList[i];
    legendData.push({ label: "\xa0\xa0"+_tempData.name , type: "rectangle", radius: 12, color: _tempData.color, fillColor: _tempData.color, fillOpacity: 0.8, weight: 2});
    colorArray.push(_tempData.rgb);
  }
  if(type == "tem"){
    DIY_BLUE_GREEN_YELLOW_RED_SCHEME = new MultiColorScheme('', -20,45 ,colorArray);
  }else{
    DIY_BLUE_GREEN_YELLOW_RED_SCHEME = new MultiColorScheme('', 0,360 ,colorArray);
  }
  initLegend(legendData);
}

第四步、实现 AQI 数据的标注及展示。核心方法如下:

//展示 AQI 空气质量数据
function previewAQI(pid,provinceCode,name){
  previewProvince(pid,name);
  initLegendAndColor("aqi");
  $.ajax({
    type:"get",
    url:ctx + "/met/province/weather/list/"+provinceCode+"?day=\" + $("#startTime").val(),
    data:{},
    dataType:"json",
    cache:false,
    processData:false,
    success:function(result){
      if(result.code == web_status.SUCCESS){
        $("#title_info").html(name+"空气质量<sub>更新时间:" + $("#startTime").val() +"</sub>");
        collisionLayer.clearLayers();
        var dataArray = result.data;
        if(dataArray != null && dataArray.length > 1){
          var legendData = new Array();
          for(var i = 0;i< dataArray.length;i++){
            var areaData = dataArray[i];
            var color = getColorByAqi(areaData.aqi);
            var areaLayer = L.geoJSON(JSON.parse(areaData.geomJson),{style: {color:color,fillColor:color,weight:3,"opacity":0.65, fillOpacity: 0.65 }}).addTo(mymap);
            var myIcon = L.divIcon({ iconSize: null, className: '', popupAnchor:[5,5], shadowAnchor:[5,5], html: buildShowInfo(i,color,areaData,"aqi") });
            showLayerGroup.addLayer(areaLayer);
            //中心点位
            L.marker([areaData.lat, areaData.lon], { icon: myIcon}).addTo(collisionLayer);
          }
          collisionLayer.addTo(showLayerGroup);
        }
      }
    },
    error:function(){
      $.modal.alertWarning("获取空间信息失败");
    }
  });
}

经过以上的步骤就可以基本实现在 Leaflet 中集成百度空气质量信息,下面将对成果进行展示。

三、成果展示

本节将对 WebGIS 的成果进行整体介绍,包括湖南省整体空气质量情况的展示,中、重污染地区的展示以及低、优质地区的分布情况进行介绍。最后使用列表对污染最严重的前 10 名区县和空气质量最好的前 10 名进行排名展示。

1、整体展示

文章配图

从整体来看,10 月 12 日这一天,全省可以分为三个比较明显的区域。首先映入眼帘一片红色的是湘东北地区,像长沙、株洲、浏阳都是非常严重的地区。湘中和湘南一块的空气质量也不是很好,只达到了良的情况,达到良的区县占到了一半以上。剩下是湘西新晃和湘西北区域,同时湘东南郴州的空气质量也是达到了优。

2、中、重污染地区

来深入看一下重污染地区,以长沙市周边为例,如下图所示:

文章配图

围绕着长沙的株洲、湘潭、宁乡、岳阳的区域,空气质量都只中度,还有几个区县甚至达到了重度污染的级别。浏阳等地区的 AQI 指数达到了 230。这是比较高的一个等级了。

3、低、优质地区

来看空气质量优质的几个地区,比如湘西北的龙山、花垣、永顺、桑植等区县,空气质量还是非常不错的,都是优质区域,空气质量分布情况如下:

文章配图

除了湘西北的区县,郴州的汝城、宜章、桂东、北湖、嘉禾等区县空气质量也是不错的。如下图所示:

文章配图

4、污染严重前 10 区县

城市代码城市名称区县代码区县名称空气质量指数
430100长沙市430181浏阳市238.00
430200株洲市430281醴陵市238.00
430200株洲市430211天元区238.00
430200株洲市430212渌口区238.00
430200株洲市430202荷塘区238.00
430200株洲市430204石峰区238.00
430200株洲市430203芦淞区238.00
430100长沙市430182宁乡市220.00
430100长沙市430104岳麓区220.00
430100长沙市430112望城区220.00

可以看到,10 月 12 日这天,有 7 个区县的空气质量指数为 238,其中长沙市 4 个,剩余株洲市 6 个。

5、质量优前 10 区县

看完污染严重的前 10 名,再来看看哪里的空气比较好,按优质的前 10 名排名如下:

城市代码城市名称区县代码区县名称空气质量指数
431200怀化市431227新晃侗族自治县29.00
431000郴州市431002北湖区39.00
431000郴州市431027桂东县39.00
431000郴州市431003苏仙区39.00
430700常德市430702武陵区40.00
431100永州市431122东安县40.00
431100永州市431103冷水滩区40.00
431100永州市431129江华瑶族自治县40.00
433100湘西土家族苗族自治州433130龙山县42.00
430800张家界市430811武陵源区44.00

可以看到,当日省内空气质量最好的是怀化市的新晃自治县。就当日采集的数据来看,勇夺桂冠,空气质量杠杠的。

四、总结

本文通过将空气质量数据与地理空间信息相结合,在湖南省的地图上构建了一个动态、交互的空气质量展示平台。用户可以清晰地看到各地的空气质量等级,从优良的绿色到重度污染的深红色,色彩鲜明的分区标识让空气质量状况一目了然。平台采用了先进的交互设计,用户可以通过简单的鼠标操作或触摸手势,轻松地缩放地图、切换不同时间尺度的数据展示,以及查询特定区域的空气质量数据。这种高度的交互性,使得用户能够根据自己的需求,深入探索和分析空气质量数据,从而更好地理解自己所处环境的空气质量状况。

目录

  1. 前言
  2. 一、空气质量展示需求
  3. 1、满城火辣味周末
  4. 2、空气质量状况
  5. 二、WebGIS 展示百度天气
  6. 1、关于空气质量等级
  7. 2、数据查询实现
  8. 3、Leaflet 集成百度空气质量
  9. 三、成果展示
  10. 1、整体展示
  11. 2、中、重污染地区
  12. 3、低、优质地区
  13. 4、污染严重前 10 区县
  14. 5、质量优前 10 区县
  15. 四、总结
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 决策树基本原理及 Python 实现与后剪枝处理
  • DeepSeek 时代:前端开发的范式变革与实战指南
  • ComfyUI Photoshop插件完整教程:5步实现AI绘画工作流
  • DeepSeek 爆发期:前端工程师的转型方向与实战路径
  • C++ 标准库 string 类详解:接口、原理与模拟实现
  • DeepSeek 时代,前端开发的变革与实战路径
  • YOLO 结合大模型的多场景智能检测系统架构与实践
  • Double DQN 算法详解:原理、流程与 PyTorch 实现
  • 前端 WebSocket 实战:替代轮询的实时通信方案
  • AI 领域必读精选:6 部名家名作
  • Qwen3-VL 基于 Llama-Factory 的 QLoRA 微调与部署全流程 (Open-EQA 示例)
  • Python 基础教程:从环境搭建到核心语法详解
  • Java JDK21 新特性详解
  • 电力电网巡检计算机视觉数据集:3729 张图像与深度学习实战指南
  • 医疗 AI 可信系统全栈实现:向量索引与贝叶斯网络(下)
  • 前端性能优化:深入理解防抖与节流
  • DiT 架构详解:用 ViT 替代 U-Net 实现视频生成与机器人动作预测
  • Spring Cloud Nacos 核心功能实战:服务注册与配置中心
  • GPT 模型的发展历程与核心架构解析
  • 知网 AIGC 检测算法 2026 升级:新规则解读与应对策略

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online