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

基于 WebGIS 的体感温度实证分析:中国火炉城市评估

利用 WebGIS 技术分析中国火炉城市的体感温度。通过整合百度天气接口数据与城市空间地理信息,采用 Java Spring Boot 后端与 Leaflet 前端实现可视化展示。结果显示,长三角地区如杭州、南京、南昌等地体感温度较高,处于蒸烤模式;而重庆、西安等地相对凉爽。该方案为城市热环境评估及规划提供了数据支持。

机器人发布于 2026/4/6更新于 2026/7/1748 浏览
基于 WebGIS 的体感温度实证分析:中国火炉城市评估

前言

'火炉城市'是中国对夏季天气酷热的城市的夸张称呼。这一说法最早出现在民国时期,当时媒体有'三大火炉'之说,即重庆、武汉和南京,都是长江沿线的著名大城市,分别居于长江的上、中、下游,因夏季气温炎热,被媒体夸张地称为'火炉'。新中国成立后,又有了'四大火炉'之说,这有几种城市组合,多指长江流域的几个城市。

随着时间的推移,火炉城市的名单也在发生变化。2017 年,中国气象局国家气候中心发布榜单,通过综合分析中国省会城市和直辖市的气象资料,首次向公众权威公布中国夏季炎热城市情况。综合分析的结果是,夏季炎热程度靠前的 10 个省会城市或直辖市分别为:重庆、福州、杭州、南昌、长沙、武汉、西安、南京、合肥、南宁。其中,排在前列的重庆、福州、杭州、南昌四个城市被不少网民冠名为'新四大火炉',武汉退出前四,位居第六。

文章配图

通过 WebGIS 技术进行体感温度的实证分析,可以实现对火炉城市'火力'的精细化评估。这种分析不仅可以帮助城市管理者更好地了解城市热环境的现状,为城市规划和公共设施布局提供科学依据,还可以为居民提供更准确的天气信息,帮助他们合理安排户外活动,减少高温天气对健康的影响。此外,体感温度的实证分析还可以为气候变化研究提供数据支持。在 WebGIS 技术的助力下,通过整合多源数据,实现对火炉城市'火力'的动态监测和精细化评估,不仅可以提高城市居民的生活质量,还可以为城市的可持续发展提供有力保障。

一、火炉城市空间分布及特点

1、空间分布

长江流域的集中分布

传统火炉城市大多集中在长江流域,包括重庆、武汉、南京等。这些城市共同的地理特征是位于河谷、盆地地带,地形闭塞,四周被高山环绕,地势低洼,热空气不容易扩散,形成了'天然蒸笼'。例如:

  • 重庆:地处四川盆地,四周被大巴山、巫山、武陵山、大娄山等山脉环绕,地形封闭,夏季热量难以散发。
  • 武汉:位于长江中游的江汉平原,地势平坦,河湖众多,水汽蒸发加剧湿度,形成'蒸笼模式'。
  • 南京:地处长江下游,夏季受副热带高压控制,气温居高不下,且城市绿化较好,近年来高温天气有所缓解。

河谷与盆地地形

城市大多位于河谷或盆地地带,地形不利于热量的散发,导致高温天气持续时间长。例如:

  • 重庆:位于四川盆地,海拔较低,四周群山环绕,热空气难以扩散。
  • 南昌:位于鄱阳湖平原,三面环山,北临鄱阳湖,空气流动性差,夏季高温天数多。
  • 长沙:位于湘江流域,夏季湿度大,高温天气频繁,且受焚风效应影响,进一步加剧炎热。

从流域分布来看,这些城市大多都是沿着长江流域分布,黄河流域只有西安一个城市,珠三角水系有南宁这个城市。

2、气候特点

火炉城市具有以下共同特点:

  1. 高温天气:夏季高温持续时间较长,气温普遍超过 35℃,最高气温甚至可达 40℃以上。
  2. 潮湿天气:这些城市夏季湿度较大,空气潮湿,使得高温天气更加难以忍受。
  3. 热浪袭击:夏季,火炉城市常常出现热浪袭击,持续时间长,影响范围广。

城市热岛效应

随着城市化进程的加快,城市热岛效应也成为火炉城市高温天气的重要因素。例如:

  • 武汉:城市建筑密集,热岛效应显著,夏季城区温度比郊区高 3-5℃。
  • 南昌:城市热岛效应明显,夏季夜间温度常居 30℃以上。
  • 南京:通过增加城市绿道与湿地,体感温度有所下降。

地理位置与季风影响

这些城市大多位于亚热带季风气候区,夏季受副热带高压控制,气温高,湿度大。例如:

  • 重庆:夏季受副热带高压影响,气温上升,且冷空气难以翻越秦岭大巴山,台风也很难影响到重庆。
  • 武汉:夏季受副热带高压控制,气温高,湿度大,且河湖蒸发加剧湿度。
  • 南京:夏季受副热带高压控制,气温高,湿度大,但近年来通过城市绿化等措施,高温天气有所缓解。

二、数据来源及技术实现

本节将介绍火炉城市展示时的天气数据来源和具体的技术路线。

1、数据来源介绍

本博客使用的数据主要分为两类,第一类是空间数据,包括城市空间信息和城市所在经纬度信息。第二类是天气信息。详细见以下表格:

序号数据说明
1城市区域范围表,biz_city导入的国家地级市区域范围,Polygon 面数据
2城市点位信息表,biz_geographic_name导入的城市地名位置信息表,Point 点数据
3城市天气信息表百度实时天气接口,webAPI 获取,数据时点:2025 年 8 月 30 日 13:00 左右

根据之前的火炉城市介绍,我们将城市名称和城市的行政区划代码整理如下,这个表格是后面工作开展的基础。

序号行政区划代码城市名称
1360100南昌市
2500000重庆市
3330100杭州市
4320100南京市
5420100武汉市
6340100合肥市
7350100福州市
8450100南宁市
9430100长沙市
10610100西安市

2、技术路线简介

文章配图

以上是简化的技术路线介绍,首先需要获取百度地图的天气接口,将实时天气信息缓存到本地,然后使用空间查询服务将城市区域信息和城市点位信息和天气信息进行时空关联检索,最后将检索数据进行渲染输出,叠加到 WebGIS 组件中,完成一个整体的从数据获取到关联和输出的过程。

三、WebGIS 系统实现

本节重点从前后端来进行火炉城市的 WebGIS 系统实现,详细讲解空间关联查询的具体实现等知识。

1、后端设计与实现

与之前介绍过的省域区县天气查询的服务类似,这里我们依然需要关联天气实时信息和城市的行政区划范围和点位信息。关联查询的 Mapper 实现如下:

package com.yelang.project.meteorology.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yelang.project.meteorology.domain.AreaWeatherVO;
import com.yelang.project.meteorology.domain.WeatherNow;

public interface WeatherNowMapper extends BaseMapper<WeatherNow>{
    final static String GET_THREEFURNACES_INFO = "<script>" +
        " SELECT t2.*,T.province_code,T.province_name,T.city_code,T.city_name, " +
        " st_asgeojson ( T.geom ) geomJson,st_x ( t1.geom ) lon,st_y ( t1.geom ) lat " +
        " FROM biz_weather_now t2,biz_city T,biz_geographic_name t1 " +
        " WHERE to_char( t2.uptime, 'YYYY-MM-DD' ) = #{day} " +
        " AND t2.location_code in ('350100','330100','360100','430100','420100','610100','320100','340100','450100','500000') " +
        " AND T.city_name = t1.NAME AND T.city_code = t2.location_code ORDER BY t2.feels_like desc " +
        "</script>";

    /**
     * - 根据指定日期查询火炉城市天气信息列表
     * @param day 日期信息
     * @return
     */
    @Select(GET_THREEFURNACES_INFO)
    List<AreaWeatherVO> getThreeFurnacesInfo(@Param("day") String day);
}

这里为了方便将上面的城市行政区划代码直接作为已知条件拼接到 SQL 语句当中了,这里仅仅为了方便演示,实际项目中,为了实现更大的通用性,建议将 SQL 提取出来,通过参数的形式传进去,这样的通用性和扩展性会更高。在控制层中传入统一时点,即 2025 年 8 月 30 日来调用上面的数据查询层,关键代码如下:

package com.yelang.project.meteorology.controller;
import java.util.List;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.yelang.framework.web.controller.BaseController;
import com.yelang.framework.web.domain.AjaxResult;
import com.yelang.project.meteorology.domain.AreaWeatherVO;
import com.yelang.project.meteorology.service.IWeatherNowService;

@Controller
@RequestMapping("/met/threefurnaces/weather")
public class ThreeFurnacesController extends BaseController{
    private String prefix = "meteorology/weather";
    @Autowired
    private IWeatherNowService weatherNowService;

    @RequiresPermissions("met:threefurnaces:weather:map")
    @GetMapping("/index")
    public String index(){
        return prefix + "/threefurnacesmap";
    }

    @RequiresPermissions("met:threefurnaces:weather:list")
    @GetMapping("/list")
    @ResponseBody
    public AjaxResult list(){
        String day = "2025-08-30";
        List<AreaWeatherVO> dataList = weatherNowService.getThreeFurnacesInfo(day);
        return AjaxResult.success().put("data", dataList);
    }
}

2、前端程序实现

前端采用 Leaflet 组件来进行 WebGIS 数据展示,需要展示的数据包括行政区划范围、城市点位以及体感温度数据,将温度信息叠加在空间范围和点位进行绑定,展示的代码如下:

function previewWeather(pid,provinceCode,name){
    $.ajax({
        type:"get",
        url:ctx + "/met/threefurnaces/weather/list",
        data:{},
        dataType:"json",
        cache:false,
        processData:false,
        success:function(result){
            if(result.code == web_status.SUCCESS){
                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 = makeColor(areaData.feelsLike,-20,45,DIY_BLUE_GREEN_YELLOW_RED_SCHEME);
                        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) });
                        showLayerGroup.addLayer(areaLayer);
                        //中心点位
                        L.marker([areaData.lat, areaData.lon], { icon: myIcon}).addTo(collisionLayer);
                    }
                    collisionLayer.addTo(showLayerGroup);
                }
            }
        },
        error:function(){
            $.modal.alertWarning("获取空间信息失败");
        }
    });
}

使用以上的代码即可完成后端的数据检索生成以及将数据成果渲染到前端 WebGIS 组件中。

四、成果展示

经过前面几个步骤,我们基本完成了数据来源和技术路线介绍,详细的介绍了 WebGIS 系统设计与实现,包括的前后端的具体实现。接下来结合 WebGIS 来看看这 10 个火炉城市到底哪些在慢慢熄火,哪些在持续发威。

1、整体展示

文章配图

从空间分布来看,这 10 个城市中,基本是位于我国东南部,长江流域中下游的城市。而体感最热的像杭州、南京等,均到 38 度左右,长沙紧随其后 37 度,武汉和福州 35 度,南京 32 度。重庆和西安体感温度算舒适的,尤其是西安,都到了 21 度了,有秋天的感觉了。

2、蒸烤模式城市

时间到了 8 月 30 日,还处在蒸笼模式的城市主要是这几个:杭州 38 度、南京 38 度、南昌 38 度,长沙 37 度。经济最火热的长三角,天气也是一样的高燃。

文章配图

3、舒适城市

可能是纬度的缘故,也或许是时令的变化,重庆市和西安竟然意外的凉快,体感温度居然都是 30 度一下,西安甚至来到了 20 度左右,体感是非常舒适了,慢慢有了秋天的感觉。

文章配图

五、总结

本文通过 WebGIS 技术进行体感温度的实证分析,可以实现对火炉城市'火力'的精细化评估。这种分析不仅可以帮助城市管理者更好地了解城市热环境的现状,为城市规划和公共设施布局提供科学依据,还可以为居民提供更准确的天气信息,帮助他们合理安排户外活动,减少高温天气对健康的影响。此外,体感温度的实证分析还可以为气候变化研究提供数据支持。在 WebGIS 技术的助力下,通过整合多源数据,实现对火炉城市'火力'的动态监测和精细化评估,不仅可以提高城市居民的生活质量,还可以为城市的可持续发展提供有力保障。

通过百度提供的天气接口,我们可以对传统的火炉城市的实时气温进行综合评估,通过实例可以看到,时间到了 8 月 30 日,我们的长三角地区的城市依然享受太阳的温暖怀抱,而西北和重庆则相对迎来凉爽的天气。

目录

  1. 前言
  2. 一、火炉城市空间分布及特点
  3. 1、空间分布
  4. 2、气候特点
  5. 二、数据来源及技术实现
  6. 1、数据来源介绍
  7. 2、技术路线简介
  8. 三、WebGIS 系统实现
  9. 1、后端设计与实现
  10. 2、前端程序实现
  11. 四、成果展示
  12. 1、整体展示
  13. 2、蒸烤模式城市
  14. 3、舒适城市
  15. 五、总结
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

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

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

更多推荐文章

查看全部
  • ToDesk ToClaw:基于 OpenClaw 的零门槛 AI 桌面自动化助手
  • 从 try-catch 到链式调用:更优雅的 async/await 错误处理方案
  • Git 版本控制核心命令与实战流程
  • Java Set 接口详解
  • DeepSeek-R1 大模型基于 MS-Swift 框架的部署、推理与微调指南
  • VSCode 连接 GitHub 全攻略:上传与克隆代码操作指南
  • Python 和 PyCharm 安装配置指南
  • Windows 版 Stable Diffusion WebUI 快速搭建指南
  • Spring Bean 作用域、生命周期与自动装配深度解析
  • 企业舆情监测实战方案:基于多模态 AI 的全域监测架构
  • Java 高级开发面试复盘:HashMap 原理、Spring 核心与分布式 ID 实战
  • 前端流式输出技术:原理与实战指南
  • 流处理与 RAG 驱动的 Python ETL 框架设计
  • 如何为 Llama 系列模型定制专属 TensorRT 优化方案?
  • AI Coding 提效实战:从工具到思维的全面升级
  • Llama-3.2-3B 部署实战:Ollama + Docker 快速启动与 GPU 适配
  • AI Agent Skills 资源合集:支持 Cursor、Claude Code 与 Copilot
  • 基于 DeepSeek+Vue3 的 AI 对话聊天系统开发实战
  • 机器人操作模仿学习综述:分类、演进与核心挑战
  • VS Code 远程连接后 GitHub Copilot 无法使用修复方案

相关免费在线工具

  • 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

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online