保姆级教程:用GEE和Landsat 8数据,5分钟搞定城市热岛区域自动识别与面积计算
2026/5/6 17:24:45 网站建设 项目流程

零代码实战:基于GEE与Landsat 8的城市热岛自动化分析系统

清晨六点的北京朝阳区,气象站记录到34℃的异常高温,而密云水库周边气温仅有28℃。这种温差现象背后,隐藏着现代城市规划者最关注的课题——城市热岛效应。今天我们将用Google Earth Engine(GEE)这个云端地理分析平台,配合Landsat 8卫星数据,构建一套全自动的热岛识别系统。不同于传统GIS软件需要本地安装和复杂操作,这套方案只需浏览器即可完成从数据获取到结果输出的全流程,特别适合城市规划、环境监测领域的非编程专业人员快速验证热岛分布特征。

1. 热岛分析技术方案设计

城市热岛效应的量化分析需要解决三个核心问题:地表温度反演精度、热岛阈值确定方法、以及连续高温区域的空间聚合算法。我们采用NASA提供的Landsat 8 Collection 2 Level 2数据,该数据集已进行大气校正,其地表温度产品(ST_B10)的绝对误差控制在2.1℃以内。

关键技术参数对比表

参数项传统方法局限本方案优化点
温度数据源需自行反演计算直接使用L2级预处理产品
空间分辨率通常使用1km气象数据30米像元级分析
时间成本单景数据下载需30分钟云端即时调用
计算硬件要求需要高性能本地计算机任何能上网的设备均可操作

在具体实现上,我们构建的分析流水线包含四个关键环节:

  1. 数据获取与空间裁剪
  2. 温度阈值筛选(>35℃)
  3. 连通区域分析(斑块大小>20像元)
  4. 面积统计与可视化输出

提示:35℃阈值基于中国《城市热环境评价标准》GB/T 34341-2017设定,对应"强热岛"等级下限。实际应用中可根据当地气候特征调整。

2. GEE平台快速入门配置

无需安装任何软件,打开Chrome浏览器访问Earth Engine代码编辑器,使用Google账号登录后即可开始。首次使用者建议完成以下准备步骤:

  • 点击左侧"Scripts"选项卡新建项目
  • 在右侧地图窗口搜索目标城市(如"Beijing, China")
  • 通过绘图工具划定分析区域(推荐使用几何图形工具绘制矩形)
// 示例:定义北京市区分析范围 var roi = ee.Geometry.Rectangle([116.25, 39.80, 116.50, 40.00]); Map.centerObject(roi, 12); // 将地图视角定位到该区域

常见问题排查清单

  • 如遇"Access Denied"提示,需先申请GEE账号权限
  • 地图不显示时检查浏览器是否禁用WebGL
  • 代码运行卡顿时可尝试清除浏览器缓存
  • 中文显示异常时切换浏览器语言设置为英文

3. 热岛识别全流程代码解析

整套分析流程封装为可复用的函数,更换城市只需修改roi参数。以下是分步骤详解:

3.1 数据加载与预处理

function getLandSurfaceTemperature(roi, date) { // 加载Landsat 8数据并裁剪到目标区域 var image = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2') .filterDate(date, date.advance(1, 'day')) .filterBounds(roi) .first(); // 转换为摄氏度并应用质量控制 var lst = image.select('ST_B10') .multiply(0.00341802) .add(149) .subtract(273.15) .rename('LST'); return image.addBands(lst); } // 示例:获取2023年夏季高温日数据 var targetDate = ee.Date('2023-07-15'); var l8Image = getLandSurfaceTemperature(roi, targetDate);

3.2 热岛区域提取

function extractHeatIslands(lstImage, tempThreshold) { // 创建高温区域掩膜 var hotspots = lstImage.select('LST') .gt(tempThreshold) .selfMask() .rename('hotspots'); // 识别连续斑块(8连通域分析) var patches = hotspots.connectedPixelCount(100, true); var largePatches = patches.gt(20).selfMask(); return { hotspots: hotspots, urbanHeatIslands: largePatches }; } var result = extractHeatIslands(l8Image, 35); Map.addLayer(result.urbanHeatIslands, {palette: 'red'}, 'Heat Islands');

3.3 面积统计与导出

function calculateArea(feature, scale) { var areaImage = ee.Image.pixelArea().multiply(feature); var stats = areaImage.reduceRegion({ reducer: ee.Reducer.sum(), geometry: roi, scale: scale, maxPixels: 1e13 }); return stats.get('hotspots'); } var heatIslandArea = calculateArea(result.urbanHeatIslands, 30); print('Urban heat island area (sqm):', heatIslandArea); // 导出结果到Google Drive Export.image.toDrive({ image: result.urbanHeatIslands, description: 'HeatIslandExport', folder: 'GEE_Exports', region: roi, scale: 30 });

4. 进阶应用与结果解读

获得热岛分布图后,可通过叠加其他地理数据进行深度分析。例如将热岛区域与绿地分布图叠加,验证植被覆盖率与地表温度的相关性:

// 加载MODIS植被指数数据 var ndvi = ee.ImageCollection('MODIS/006/MOD13A2') .filterDate('2023-06-01', '2023-08-31') .median() .select('NDVI') .clip(roi); // 创建分析样本点 var samplePoints = ee.FeatureCollection.randomPoints({ region: roi, points: 1000 }); // 提取温度-植被指数关联数据 var pairedSamples = l8Image.select('LST') .addBands(ndvi) .sampleRegions({ collection: samplePoints, scale: 30 }); // 绘制散点图 var chart = ui.Chart.feature.byFeature( pairedSamples, ['NDVI'], ['LST'] ).setChartType('ScatterChart') .setOptions({ title: 'LST-NDVI Correlation', hAxis: {title: 'NDVI'}, vAxis: {title: 'Land Surface Temperature (℃)'}, pointSize: 3 }); print(chart);

典型热岛分布特征案例

  • 北京:热岛集中分布于五环内建筑密集区,尤其朝阳CBD与西直门交通枢纽
  • 上海:浦东新区热岛呈带状分布,与主要交通干道走向高度吻合
  • 广州:珠江新城热岛强度显著,但白云山周边形成明显低温走廊

注意:夏季午后13:00-15:00的卫星过境数据最能反映热岛强度,避免使用多云天气影像。推荐选择6-8月连续3天无降雨后的数据进行分析。

5. 自动化批量处理技巧

要实现多时相分析,可创建时间序列处理函数。以下示例展示如何生成2020-2023年热岛面积变化曲线:

// 定义分析时间范围 var startDate = ee.Date('2020-01-01'); var endDate = ee.Date('2023-12-31'); var dateList = ee.List.sequence(0, 3).map(function(year) { return startDate.advance(year, 'year'); }); // 批量处理函数 var timeSeries = dateList.map(function(date) { var yearlyComposite = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2') .filterDate(date, date.advance(1, 'year')) .filter(ee.Filter.calendarRange(6, 8, 'month')) // 夏季数据 .median(); var lst = yearlyComposite.select('ST_B10') .multiply(0.00341802) .add(149) .subtract(273.15); var heatIslands = lst.gt(35) .connectedPixelCount(100, true) .gt(20); var area = calculateArea(heatIslands, 30); return ee.Feature(null, { date: date.format('YYYY'), area: area }); }); // 绘制面积变化图表 var chart = ui.Chart.feature.byFeature( ee.FeatureCollection(timeSeries), 'date', 'area' ).setChartType('ColumnChart') .setOptions({ title: 'Annual Heat Island Area Variation', hAxis: {title: 'Year'}, vAxis: {title: 'Area (square meters)'} }); print(chart);

实际项目中,我们发现两个关键参数对结果影响最大:温度阈值的设定会线性影响热岛面积,而斑块大小阈值则决定了哪些区域被认定为"集中连片"热岛。建议首次分析时尝试35-38℃的温度阈值和15-25像元的斑块阈值组合,找到最适合当地特征的参数。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询