
夏天出门,你有没有这种感觉:走在马路上热得要命,拐进旁边的小公园,瞬间凉快好几度?
这不是错觉。我用卫星数据量了5座城市暖季的地表温度,发现了一个反直觉的规律:城市热不热,关键不在城区有多热,而在郊区有没有水。
哈尔滨的城郊温差是五城里最大的——5.66°C。不是因为哈尔滨城区特别热(全区均温才34.7°C,五城最低),而是因为郊区有大片农田和湿地,温度被压得很低。武汉的全区均温42.6°C,五城最高,但城郊温差几乎为零——-0.07°C,郊区跟城区一样热。
换句话说:一个城市可以城区很凉但热岛效应很强(如果郊区更凉的话),也可以城区很热但热岛效应很弱(如果郊区一样热的话)。
城市 | 全区均温 | 城郊温差 |
|---|---|---|
哈尔滨 | 34.7°C | 5.66°C |
北京 | 42.3°C | 3.02°C |
苏州 | 36.4°C | 1.95°C |
深圳 | 37.4°C | 0.33°C |
武汉 | 42.6°C | -0.07°C |

5 城热岛效应对比
用的是 Landsat 8[1] 卫星影像。Landsat 有一个热红外传感器,能测地表实际辐射温度——注意是地表温度,不是气温。正午柏油路 60°C 的时候,气温可能只有 35°C。气象站做不到逐像元测量,卫星可以:每个格子 30m×30m,覆盖整个城市。
卫星原始记录的是数字信号(DN 值),需要换算:DN × 0.00341802 + 149.0 − 273.15 = 摄氏度。如果某个格子被云挡住了,卫星拍到的是云顶温度,不是地面温度,必须剔除。
时间选了 2023 年 4-10 月——覆盖整个暖季。不是某一天的数据,而是把所有符合条件的影像取中值合成——这样可以过滤掉云、异常值,得到的是暖季的"典型温度"。
为什么没选 Sentinel-2?因为它没有热红外波段——只有可见光和近红外,量不了温度。Landsat 是免费数据里唯一的选择。

北京 LST 热力图
热力图上暖色是高温区。北京的热场呈典型同心圆:国贸 CBD 是热核心,二环内温度最高,向外逐环递减。西山和北部山区是两块冷色。没有海也没有大山穿城,北京的热场是五城里最"教科书"的。
热力图只能看格局。温度高是因为没树,还是因为建筑太密?
我引入了 NDVI(归一化植被指数)——简单说就是卫星的"绿色墨镜"。植物叶片吸收红光、反射近红外光,用这两个波段做差值除以和,得到 -1 到 1 之间的数。越高越绿。

北京 NDVI 分布图
把两张图叠在一起看,规律很明显:图上绿色越深的地方(植被多),温度越低;红色越深的地方(建筑密),温度越高。奥林匹克森林公园 NDVI 0.5,是城区最绿的地方,也是温度最低的地方。CBD 核心 NDVI 接近 0(没什么植被),温度最高。
肉眼看是这样,但到底有多强的关系?我做了一个简单的事情:把北京 358 万个像元全画在一张图上——横轴是 NDVI(有多绿),纵轴是温度。每个点是一个 30m×30m 的格子。

NDVI-LST 散点图
点从左上角(不绿、高温)到右下角(很绿、低温)形成一条斜带。这说明:越绿的地方温度越低,而且这个规律很稳定——不是偶尔几个点,是 358 万个点都往这个方向走。
相关性分析就是用来量化这种"一起变"的关系有多强。核心指标叫 Pearson r(皮尔逊相关系数),范围 -1 到 1。1 表示两个变量完全同步变化(一个涨另一个也涨),-1 表示完全反向变化(一个涨另一个跌),0 表示没关系。实际数据很少到 ±1,一般 0.3 以上就算有关系,0.5 以上算关系较强。我们的结果是 -0.679——负号说明植被越多温度越低,绝对值 0.679 说明这个关系相当强。
5 个城市全都是这个规律。哈尔滨最强(-0.742),苏州最弱(-0.466)。暖季的数据比冷季更极端,植被的降温效果在最热的时候最明显。
为什么植被能降温?蒸腾作用。植物根系从土壤吸水,叶片蒸发——每蒸发 1 克水带走 2400 焦耳热量。一棵成年树一天蒸腾 400 升水。不透水面没有这个机制,太阳辐射打上去几乎全部变成热。
但 r = -0.679 是 NDVI 单变量回归的结果,只解释了约 46% 的变化(R²≈0.46)。在多元回归中(同时纳入 NDVI 和 NDBI),深圳的 R² 达到 0.512,说明植被和建筑密度合起来能解释一半以上的温度差异。剩下的 50% 左右被建筑高度、风场、人为热排放、地表材质分走了。同样是城区,CBD 的密集高层和胡同区的低矮建筑温差 2-3°C——NDVI 看不出来。
要回答"建筑密度到底贡献了多少",需要另一个指标。
前面说的"城区比郊区热多少",地理学上叫城市热岛效应——城市像一座"热量的岛屿",比周围郊区温度更高。我最初用的方法是画同心圆:以 CBD 为圆心,5km 内算城区,10-20km 环带算郊区。

北京温度从 CBD 向外递减(典型单中心)
北京是典型的放射网状城市——从国贸 CBD 往外走,温度从 45.7°C 一路降到 42.7°C,12km 后基本稳定。这就是教科书里的「城市热岛」:中心热、郊区凉。
但深圳不一样。用同样的方法,以几何中心画同心圆,温度反而向外递增——因为深圳是多中心城市:福田、南山、罗湖、龙华各自有热中心,用单一 CBD 做原点画同心圆,曲线根本没有单调递减规律。
这个方法简单,但有个根本缺陷——它假设"离 CBD 远就是郊区"。武汉的长江穿过了 5km 城区圈,江面温度把均温拉低了;同时 10-20km 郊区圈里有大片建成区(东西湖、黄陂南部),温度反而比城区中心高。结果武汉的城郊温差只有 -0.07°C——不是武汉没有热岛,是距离圈在武汉失真了。
有没有更靠谱的划分?有。用卫星数据直接识别地表是什么类型——建筑、植被、水体、裸地——然后按类型算温度。

北京 NDBI 分布图
NDBI(建筑指数)用 Landsat 的两个波段算:短波红外减近红外,除以和。值越高,建筑越密集。图上北京的建筑分布一目了然:五环内是大片的建成区(暖色),奥林匹克森林公园和西山是两块冷色斑块。
但 NDBI 只有"建筑 vs 非建筑"一个维度。2012 年 Stewart & Oke 提出了 LCZ(局地气候分区)系统,把城市地表分成 17 个标准类型——"密集高层建筑"和"稀疏低层建筑"的热容量、反照率、透水率都不一样。我用 NDVI + NDBI + LST 三个波段组合,简化为 6 类:
类型 | 判定规则 | 典型场景 |
|---|---|---|
密集建筑区 | NDBI 高,NDVI 低 | CBD、工业区 |
稀疏建筑区 | NDBI 中等,NDVI 低 | 住宅区、城中村 |
稀疏植被区 | NDVI 中等 | 草坪、行道树 |
茂密植被区 | NDVI 高 | 公园、山林 |
水体 | NDVI 极低,温度低 | 河流、水库 |
裸地 | 剩余 | 农田、待开发用地 |

北京 LCZ 分类图
北京的LCZ图很能说明问题:稀疏建筑(橙色)占了 33.5%,从二环到五环连片扩张,典型的同心圆格局。密集建筑(红色)只占 1.1%,集中在国贸-东三环那一小片。这跟北京的城市结构完全吻合——除了几个CBD,大部分区域都是中低密度住宅。
和距离圈对比,LCZ 能区分出国贸 CBD 里哪些是密集建筑(红色)、哪些是稀疏建筑(橙色)、哪些是绿地(绿色)。西山在距离圈里是"郊区",在 LCZ 里是"茂密植被区"——语义精确得多。
五城 LCZ 分布:
城市 | 密集建筑 | 稀疏建筑 | 稀疏植被 | 茂密植被 | 水体 | 裸地 |
|---|---|---|---|---|---|---|
深圳 | 0.7% | 76.7% | 12.3% | 7.4% | 1.8% | 1.1% |
武汉 | 2.3% | 30.5% | 41.7% | 6.0% | 3.9% | 15.6% |
北京 | 1.1% | 33.5% | 54.7% | 0.8% | 0.0% | 9.8% |
哈尔滨 | 1.0% | 22.1% | 28.1% | 41.1% | 3.1% | 4.6% |
苏州 | 1.0% | 35.2% | 38.1% | 3.6% | 9.0% | 13.1% |
几个发现:深圳稀疏建筑 76.7% 五城最高,这跟深圳的城中村密度完全吻合。哈尔滨茂密植被 41.1% 五城最高——郊区大片农田和湿地。苏州水体 9.0% 五城最高,太湖和水网的影响一目了然。
各城市 NDBI 和 LCZ 分布图:
深圳


武汉


北京


哈尔滨


苏州


回到最开始的问题:为什么哈尔滨最高(5.66°C)、武汉最低(-0.07°C)?
五城的城区温度跨度很大(34-46°C),但城郊温差的差距更大(-0.07 到 5.66°C)。真正拉开差距的是郊区。
哈尔滨茂密植被 41.1% 五城最高,郊区有大片农田和湿地。2023 年 4-10 月,城区地表温度 41.4°C,郊区只有 35.7°C——差了将近 6°C。不是哈尔滨城区特别热,是哈尔滨郊区被植被和水体压得太凉了。
北京稀疏建筑 33.5% 连片扩张,没有海也没有大山,热场呈典型同心圆。城区 45.7°C,郊区 42.7°C——3.02°C。北京的热岛效应来自建筑密度的梯度衰减。

北京 LST
苏州水体 9.0% 五城最高,太湖和密布的水塘把郊区温度压到 37.6°C,城区 39.5°C——温差 1.95°C。不是苏州城区特别热,是苏州郊区被水网压得太凉了。

苏州 LST
深圳南面和西面都是海。海洋有三重降温机制:比热容大(水是混凝土的 4-5 倍,同样晒 8 小时,柏油路 60°C,海水才升几度);海陆风(白天陆地升温快、气压低,海风吹进城区 10-15km);蒸发冷却。但深圳的 0.33°C 温差很小——因为深圳是多中心城市,城区本身就不热(37.8°C),郊区也不凉(37.5°C),海洋把整个城市都降温了。
武汉全区均温 42.6°C,五城最高。但城郊温差只有 -0.07°C——因为长江穿过了城区圈,江面温度把均温拉低了;同时郊区圈里有大片建成区,温度反而比城区中心高。武汉不是没有热岛,是距离圈在武汉失真了。

武汉 LST

北京温度分布直方图
最后看一张温度分布图。以北京为例:均值差 3.02°C,但分布的形状差异更大。城区的分布窄而集中(42-48°C,热得均匀),郊区的分布宽而分散(向左拖尾到 30°C)。一片农田和一个工业园区,温度可以差 15°C。均值掩盖了这个事实:城区是"一律热",郊区是"有的凉有的跟城区一样热"。
距离圈有根本缺陷——"离 CBD 远 = 郊区"在武汉已经失真。数据是 2023 年 4-10 月的中值合成,是暖季白天的快照,不是全貌。30m 分辨率分辨不出单栋建筑,要更精细需要付费数据。
UHI衡量的是"城郊差异",不是"城市热不热"。 哈尔滨城区 41.4°C,比武汉的 43.3°C 凉,但哈尔滨的UHI(5.66°C)是武汉(-0.07°C)的80倍——因为哈尔滨郊区有大片农田湿地(35.7°C),而武汉郊区跟城区一样热(43.3°C)。UHI高不代表城市热,只代表城郊差距大。
真正影响你夏天过得舒不舒服的,不是你所在城市排第几,而是你住的那个片区周围有没有公园、水体、或者一片还没开发的农田。
数据来自 Google Earth Engine[2] 上的 Landsat 8 Collection 2 Level-2[1] 地表温度产品,30m 分辨率。时间范围:2023年4-10月,云量阈值25%,中值合成。分析工具:rasterio[3] 读栅格、geopandas[4] 处理矢量、matplotlib[5] + seaborn[6] 画图。完整代码可能会整理后会放到 https://github.com/renhai-lab/Urban-Spatial-Data-Analysis-Notebook[7] 的 heat-island 文件夹。
数据局限性:本文分析的是 Landsat 卫星过境时间(当地时间上午 10 点左右)的白天地表温度,不是夜间热岛。白天和夜间热岛的驱动因素不同——白天主要受植被和土地利用影响,夜间主要受人为热排放和水体影响。因此本文结论不能外推到夜间温度或热舒适度的全部维度。
如果这篇文章对你有帮助,欢迎关注我的微信公众号「renhailab」,点击「在看」就不会错过最新推送了。
也可以在 知乎[8]、博客[9]、GitHub[10] 上找到更多内容。
参考链接
[1] https://www.usgs.gov/centers/eros/science/usgs-eros-archive-landsat-landsat-8-level-2-science-collection-2
[2] https://earthengine.google.com/
[3] https://rasterio.readthedocs.io/
[4] https://geopandas.org/
[5] https://matplotlib.org/
[6] https://seaborn.pydata.org/
[7] https://github.com/renhai-lab/Urban-Spatial-Data-Analysis-Notebook
[8] https://www.zhihu.com/people/renhai-lab
[9] https://www.renhai.online/blog
[10] https://github.com/renhai-lab
[11] https://doi.org/10.1175/BAMS-D-11-00019.1
[12] https://doi.org/10.3390/rs12020307
[13] https://doi.org/10.3390/rs13020323
[14] https://xbna.pku.edu.cn/CN/abstract/abstract3105.shtml
[15] https://doi.org/10.1016/j.scs.2025.107000
[16] http://www.iapjournals.ac.cn/qhhj/article/doi/10.3878/j.issn.1006-9585.2022.21160
[17] https://www.ecologica.cn/stxb/article/abstract/8771