百度天气:空气质量WebGIS可视化的创新实践 —— 以湖南省为例

百度天气:空气质量WebGIS可视化的创新实践 —— 以湖南省为例

目录

前言

一、空气质量展示需求

1、满城火辣味周末

2、空气质量状况

二、WebGIS展示百度天气

1、关于空气质量等级

2、数据查询实现

3、Leaflet集成百度空气质量

三、成果展示

1、整体展示

2、中、重污染地区

3、低、优质地区

4、污染严重前10区县

5、质量优前10区县

四、总结


前言

        在当今数字化时代,地理信息系统(GIS)技术与网络技术的深度融合,催生了 WebGIS 这一强大的信息展示与分析平台。它能够将复杂的空间数据以直观、交互的方式呈现给用户,极大地提高了信息的可理解性和可用性。空气质量作为与人们生活息息相关的重要环境指标,其数据的可视化呈现对于公众健康、环境管理和决策支持都具有极为重要的意义。基于百度天气开展空气质量 WebGIS 可视化实践,正是这一领域创新探索的生动体现。

        湖南省,地处我国中部,拥有丰富的自然景观和人文资源。随着经济的快速发展和城市化进程的加速,空气质量一直是老百姓生活生产比较关心的重要指标之一。从繁华的省会城市长沙,到宁静的乡村小镇,人们对于空气质量的关注度日益攀升。无论是清晨出门锻炼的老人,还是在户外工作的一线劳动者,亦或是关注孩子健康的父母,都迫切需要一个准确、全面且易于理解的空气质量信息平台来指导他们的日常活动。在这样的背景下,我们基于百度天气凭借其在数据收集、分析方面的强大能力,率先开启了空气质量 WebGIS 可视化的创新实践。百度天气不再局限于单纯的天气预报,而是将视野拓展至与人们生活息息相关的空气质量领域,致力于提供一站式、全方位的环境信息解决方案。

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

        在湖南省开展的空气质量 WebGIS 可视化实践,是科技与人文关怀深度融合的典范。它不仅为居民提供了一个便捷、高效、精准的空气质量信息获取平台,也为其他地区空气质量信息服务的优化与升级提供了宝贵的经验借鉴。随着技术的不断进步与创新,地理信息技术和空间分析可以为守护人们的身体健康与生态环境贡献更多力量。

一、空气质量展示需求

        本节将以上周末的一次空气污染事件为例,结合百度的天气接口,对10月12日,湖南省的一次空气污染需求展示进行讲解。

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

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

四、总结

        以上就是本文的主要内容,本文通过将空气质量数据与地理空间信息相结合,百度天气在湖南省的地图上构建了一个动态、交互的空气质量展示平台。用户可以清晰地看到各地的空气质量等级,从优良的绿色到重度污染的深红色,色彩鲜明的分区标识让空气质量状况一目了然。百度天气的空气质量 WebGIS 可视化平台不仅在技术上实现了创新,更在用户体验上做到了极致。平台采用了先进的交互设计,用户可以通过简单的鼠标操作或触摸手势,轻松地缩放地图、切换不同时间尺度的数据展示,以及查询特定区域的空气质量数据。这种高度的交互性,使得用户能够根据自己的需求,深入探索和分析空气质量数据,从而更好地理解自己所处环境的空气质量状况。行文仓促,定有许多的不足之处,欢迎各位朋友在评论区批评指正,不胜感激。

Read more

Flutter 三方库 webfeed 的鸿蒙化适配指南 - 掌控 RSS/Atom 内容订阅、XML 语义分发实战、鸿蒙级精密聚合专家

Flutter 三方库 webfeed 的鸿蒙化适配指南 - 掌控 RSS/Atom 内容订阅、XML 语义分发实战、鸿蒙级精密聚合专家

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 webfeed 的鸿蒙化适配指南 - 掌控 RSS/Atom 内容订阅、XML 语义分发实战、鸿蒙级精密聚合专家 在鸿蒙跨平台应用执行高级内容聚合与多维资讯资产指控(如构建一个支持全场景自动发现的鸿蒙阅读器、处理海量 RSS 2.0/Atom 协议的语义认领或是实现一个具备极致指控能力的资产管理快报中控)时,如果依赖繁琐的原始 XML 解析或是不透明的正文提取算法,极易在处理“命名空间(Namespace)冲突导致的字段丢失”、“非标准日期格式的解析崩溃”或“多模式 Feed 协议间的字段映射偏移”时陷入研发逻辑崩溃死循环。如果你追求的是一种完全对齐现代 Web 聚合标准、支持全量语义解析且具备极致指控确定性的方案。今天我们要深度解析的 webfeed——一个专注于解决“分发内容标准化认领”痛点的顶级工具库,正是帮你打造“鸿蒙超感阅读内核”

前端多语言别再硬编码!3步搞定i18n让老外也夸你代码香

前端多语言别再硬编码!3步搞定i18n让老外也夸你代码香

前端多语言别再硬编码!3步搞定i18n让老外也夸你代码香 * 前端多语言别再硬编码!3步搞定i18n让老外也夸你代码香 * 开篇先吐槽:还在用if-else判断语言?Out啦 * 到底啥是i18n,别被缩写吓住 * 选对工具真的能少加班,主流方案大乱斗 * i18next:老牌劲旅,生态丰富到怀疑人生 * vue-i18n:Vue亲儿子,丝滑得像德芙 * react-i18next:React界的扛把子 * formatjs:Google出品,必属精品? * 到底怎么选? * 撸起袖子干:从零搭建多语言架构的骚操作 * 文件目录怎么摆?强迫症患者的终极抉择 * JSON资源文件编写规范:key的命名艺术 * 动态加载语言包:别让首屏慢得像蜗牛 * 检测用户语言的几种姿势 * 切换语言时的"瞬移"问题 * 那些让人头秃的深水区:复数、性别和日期格式化 * 复数地狱:俄语和阿拉伯语教你做人 * 性别相关的文案处理 * 时间和数字

DeepSeek 爬虫抓取不到你的 Vue 页面?2026 前端必须掌握的 GEO 语义锚点协议 (实战篇)

摘要:在 DeepSeek、ChatGPT 逐渐取代传统搜索引擎的今天,传统的 SEO (关键词堆砌) 正在失效。本文将从技术角度解析 GEO (Generative Engine Optimization) 的核心逻辑,并分享如何通过开源的 群智网络协议(SynSwarm)为网站部署 “身份锚点” (Identity Anchors),防止 AI 幻觉。 01. 现象:为什么你的网站在 DeepSeek 里“隐形”了? 最近很多做前端的朋友发现一个怪象: 自家的企业官网在百度、Google 排名都不错,但在 DeepSeek 或文心一言里提问时,AI 要么回答 “不知道”,要么开始 “一本正经地胡说八道” (AI Hallucination)。 技术归因: 1. CSR (客户端渲染)

腾讯出品!别瞎找AI技能了[特殊字符] ClawHub官方+国内镜像,高速安装不卡顿(SkillHub实操全教程)

腾讯出品!别瞎找AI技能了[特殊字符] ClawHub官方+国内镜像,高速安装不卡顿(SkillHub实操全教程)

文章目录 * 别再瞎找AI技能了!ClawHub官方+国内镜像,高速安装不卡顿(SkillHub实操全教程) * 一、前期准备:新手必看!先搞懂这3个关键,少走90%弯路 * 二、实操步骤1:30秒搞定 * 第一步 我直接通过飞书给openclaw 说让安装腾讯的skillhub * 第二步等待安装结果 * 三、实操步骤2:2种筛选方法,新手/进阶都能快速找到目标技能 * 方法1:新手首选|精选TOP10榜单(零筛选成本,闭眼装) * 大家安装后可以试试效果,比之前安装skill 快了很多几乎3-5秒就安装好了 * 如果遇到问题可以咨询我,加群一起交流 * 我的公众号 别再瞎找AI技能了!ClawHub官方+国内镜像,高速安装不卡顿(SkillHub实操全教程) SkillHub是腾讯专为中国用户优化的 AI Skills 社区,本文我们就基于这个了解一下怎么使用。 有没有小伙伴和我一样?想用上ClawHub的AI技能提效,结果被海外镜像虐到崩溃——下载卡顿半天不动、安装反复失败、