目錄
前言
一、火爐城市空間分布及特點
1、空間分布
2、氣候特點
二、數據來源及技術實現
1、數據來源介紹
2、技術路線簡介
三、WebGIS系統實現
1、后端設計與實現
2、前端程序實現
四、成果展示
1、整體展示
2、蒸烤模式城市
3、舒適城市
五、總結
前言
????????“火爐城市”是中國對夏季天氣酷熱的城市的夸張稱呼。這一說法最早出現在民國時期,當時媒體有“三大火爐”之說,即重慶、武漢和南京,都是長江沿線的著名大城市,分別居于長江的上、中、下游,因夏季氣溫炎熱,被媒體夸張地稱為“火爐”。新中國成立后,又有了“四大火爐”之說,這有幾種城市組合,多指長江流域的幾個城市。第一種組合是武漢、南京、重慶、南昌;第二種組合是武漢、南京、重慶、長沙。
????????隨著時間的推移,火爐城市的名單也在發生變化。2017年,中國氣象局國家氣候中心發布榜單,通過綜合分析中國省會城市和直轄市的氣象資料,首次向公眾權威公布中國夏季炎熱城市情況。綜合分析的結果是,夏季炎熱程度靠前的10個省會城市或直轄市分別為:重慶、福州、杭州、南昌、長沙、武漢、西安、南京、合肥、南寧。其中,排在前列的重慶、福州、杭州、南昌四個城市被不少網民冠名為“新四大火爐”,武漢退出前四,位居第六。如下圖所示:
????????通過WebGIS技術進行體感溫度的實證分析,可以實現對火爐城市“火力”的精細化評估。這種分析不僅可以幫助城市管理者更好地了解城市熱環境的現狀,為城市規劃和公共設施布局提供科學依據,還可以為居民提供更準確的天氣信息,幫助他們合理安排戶外活動,減少高溫天氣對健康的影響。此外,體感溫度的實證分析還可以為氣候變化研究提供數據支持。在WebGIS技術的助力下,通過整合多源數據,實現對火爐城市“火力”的動態監測和精細化評估,不僅可以提高城市居民的生活質量,還可以為城市的可持續發展提供有力保障。本文將從WebGIS技術背景出發,結合火爐城市的相關知識,探討如何通過體感溫度的綜合,揭示各火爐城市的“火力”現狀。??
一、火爐城市空間分布及特點
????????本節將簡單介紹一下關于火爐城市的空間分布及其特點,不知道看文章的朋友是否就在這些城市當中呢?歡迎在評論區留言交流。
1、空間分布
????????長江流域的集中分布
????????傳統火爐城市大多集中在長江流域,包括重慶、武漢、南京等。這些城市共同的地理特征是位于河谷、盆地地帶,地形閉塞,四周被高山環繞,地勢低洼,熱空氣不容易擴散,形成了“天然蒸籠”。例如:
-
重慶:地處四川盆地,四周被大巴山、巫山、武陵山、大婁山等山脈環繞,地形封閉,夏季熱量難以散發。
-
武漢:位于長江中游的江漢平原,地勢平坦,河湖眾多,水汽蒸發加劇濕度,形成“蒸籠模式”。
-
南京:地處長江下游,夏季受副熱帶高壓控制,氣溫居高不下,且城市綠化較好,近年來高溫天氣有所緩解。
????????河谷與盆地地形
????????城市大多位于河谷或盆地地帶,地形不利于熱量的散發,導致高溫天氣持續時間長。例如:
-
重慶:位于四川盆地,海拔較低,四周群山環繞,熱空氣難以擴散。
-
南昌:位于鄱陽湖平原,三面環山,北臨鄱陽湖,空氣流動性差,夏季高溫天數多。
-
長沙:位于湘江流域,夏季濕度大,高溫天氣頻繁,且受焚風效應影響,進一步加劇炎熱。
????????從流域分布來看,這些城市大多都是沿著長江流域分布,黃河流域只有西安一個城市,珠三角水系有南寧這個城市。
2、氣候特點
????????火爐城市具有以下共同特點:
-
高溫天氣:夏季高溫持續時間較長,氣溫普遍超過35℃,最高氣溫甚至可達40℃以上。
-
潮濕天氣:這些城市夏季濕度較大,空氣潮濕,使得高溫天氣更加難以忍受。
-
熱浪襲擊:夏季,火爐城市常常出現熱浪襲擊,持續時間長,影響范圍廣。
????????城市熱島效應
????????隨著城市化進程的加快,城市熱島效應也成為火爐城市高溫天氣的重要因素。例如:
-
武漢:城市建筑密集,熱島效應顯著,夏季城區溫度比郊區高3-5℃。
-
南昌:城市熱島效應明顯,夏季夜間溫度常居30℃以上。
-
南京:通過增加城市綠道與濕地,體感溫度有所下降。
????????地理位置與季風影響
????????這些城市大多位于亞熱帶季風氣候區,夏季受副熱帶高壓控制,氣溫高,濕度大。例如:
-
重慶:夏季受副熱帶高壓影響,氣溫上升,且冷空氣難以翻越秦嶺大巴山,臺風也很難影響到重慶。
-
武漢:夏季受副熱帶高壓控制,氣溫高,濕度大,且河湖蒸發加劇濕度。
-
南京:夏季受副熱帶高壓控制,氣溫高,濕度大,但近年來通過城市綠化等措施,高溫天氣有所緩解。
????????以博主生活工作的城市長沙為例,就是一個酷暑難耐的城市,加上城市的濕度大,體感真的跟蒸桑拿差不多。
二、數據來源及技術實現
????????本節將介紹火爐城市展示時的天氣數據來源和具體的技術路線。
1、數據來源介紹
????????本博客使用的數據主要分為兩類,第一類是空間數據,包括城市空間信息和城市所在經緯度信息。第二類是天氣信息。詳細見以下表格:
序號 | 數據 | 說明 |
1 | 城市區域范圍表,biz_city | 導入的國家地級市區域范圍,Polygon面數據 |
2 | 城市點位信息表,biz_geographic_name | 導入的城市地名位置信息表,Point點數據 |
3 | 城市天氣信息表 | 百度實時天氣接口,webAPI獲取,數據時點:2025年8月30日13:00左右 |
????????根據之前的火爐城市介紹,我們將城市名稱和城市的行政區劃代碼整理如下,這個表格是后面工作開展的基礎。
序號 | 行政區劃代碼 | 城市名稱 |
1 | 360100 | 南昌市 |
2 | 500000 | 重慶市 |
3 | 330100 | 杭州市 |
4 | 320100 | 南京市 |
5 | 420100 | 武漢市 |
6 | 340100 | 合肥市 |
7 | 350100 | 福州市 |
8 | 450100 | 南寧市 |
9 | 430100 | 長沙市 |
10 | 610100 | 西安市 |
2、技術路線簡介
????????以上是簡化的技術路線介紹,首先需要獲取百度地圖的天氣接口,將實時天氣信息緩存到本地,然后使用空間查詢服務將城市區域信息和城市點位信息和天氣信息進行時空關聯檢索,最后將檢索數據進行渲染輸出,疊加到WebGIS組件中,完成一個整體的從數據獲取到關聯和輸出的過程。關于如何獲取百度地圖的天氣信息和本次存儲的落地,歡迎大家查看之前的系列文章GSON 框架下百度天氣 JSON 數據轉 JavaBean 的實戰攻略和基于 MybatisPlus 將百度天氣數據存儲至 PostgreSQL 數據庫的實踐,這里不再贅述。
三、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";@Autowiredprivate IWeatherNowService weatherNowService;@RequiresPermissions("met:threefurnaces:weather:map")@GetMapping("/index")public String index(){return prefix + "/threefurnacesmap";}@RequiresPermissions("met:threefurnaces:weather:list")@GetMapping("/list")@ResponseBodypublic 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日,我們的長三角地區的城市依然享受太陽的溫暖懷抱,而西北和重慶則相對迎來涼爽的天氣。行文倉促,受限于博主的知識量和才學,也受限于天氣數據采樣的時間點,對于體感溫度的火爐發威信息進行了一個簡單的比較,如有不準,在此懇請各位專家博主在評論區留言指出,十分感謝。