)
零基础实战5分钟用GEE计算城市地表温度的完整指南当第一次接触遥感数据分析时看到那些复杂的公式和术语总让人望而却步。但今天我要带你绕过所有理论障碍直接上手操作——用Google Earth EngineGEE和Landsat 8数据在5分钟内计算出城市地表温度LST。这个流程已经优化到极致你只需要复制粘贴代码就能得到可直接用于科研论文的结果。1. 环境准备与数据加载首先访问 Google Earth Engine官网 并登录账号。在代码编辑器界面新建一个脚本文件我们将从加载研究区域开始。// 定义研究区域以上海市为例 var shanghai ee.FeatureCollection(users/your_username/shanghai_boundary); Map.centerObject(shanghai, 10); Map.addLayer(shanghai, {color: blue}, Shanghai Boundary); // 加载Landsat 8 TOA数据 var landsat8 ee.ImageCollection(LANDSAT/LC08/C02/T1_TOA);注意将your_username替换为你的GEE账户名边界文件需要提前上传到你的Assets中。如果没有特定研究区可以使用以下代码快速定义一个矩形区域var randomRegion ee.Geometry.Rectangle([121.1, 30.8, 121.8, 31.5]);2. 数据预处理与云掩膜遥感影像中的云层会严重影响温度计算精度。我们采用GEE内置的云检测算法进行过滤// 定义云掩膜函数 function maskClouds(image) { var cloudScore ee.Algorithms.Landsat.simpleCloudScore(image); return image.updateMask(cloudScore.select(cloud).lt(20)); } // 应用时空过滤和云掩膜 var filtered landsat8 .filterBounds(shanghai) .filterDate(2020-01-01, 2023-12-31) .filter(ee.Filter.calendarRange(6, 8, month)) // 仅用夏季数据 .map(maskClouds); print(Filtered Collection, filtered);关键参数说明cloud.lt(20)云置信度阈值可根据实际情况调整10-30夏季数据6-8月最能体现城市热岛效应建议选择近3-5年的数据保证时效性3. 关键指数计算步骤3.1 计算NDVI植被指数NDVI是估算地表发射率的基础使用Landsat的波段5近红外和波段4红波段// 计算中值合成的NDVI var ndvi filtered.median().normalizedDifference([B5, B4]).rename(NDVI); Map.addLayer(ndvi, {min:0, max:0.8, palette:[brown,yellow,green]}, NDVI);3.2 估算地表发射率基于NDVI计算植被覆盖率进而估算发射率// 计算植被覆盖率 var fv ndvi.subtract(0.2).divide(0.5-0.2).clamp(0,1).rename(FV); // 估算发射率经验公式 var em fv.multiply(0.004).add(0.986).rename(EM); Map.addLayer(em, {min:0.985, max:0.99, palette:[blue,white,green]}, Emissivity);重要提示不同地表类型的发射率经验值水体0.990-0.995植被0.985-0.990裸土0.965-0.980城市0.970-0.9854. 地表温度计算全流程4.1 亮度温度获取直接使用Landsat的热红外波段B10var bt filtered.median().select(B10).rename(BT); Map.addLayer(bt, {min:290, max:310, palette:[blue,white,red]}, Brightness Temp);4.2 最终LST计算将发射率校正应用到亮度温度并转换为摄氏度var lst bt.expression( (BT / (1 (0.00115 * BT / 1.438) * log(em))) - 273.15, { BT: bt.select(BT), em: em.select(EM) }).rename(LST); Map.addLayer(lst, {min:25, max:40, palette:[blue,cyan,yellow,red]}, LST);4.3 结果导出可选如需导出计算结果用于进一步分析Export.image.toDrive({ image: lst, description: Shanghai_LST_Export, scale: 30, region: shanghai, maxPixels: 1e9 });5. 实战技巧与常见问题5.1 参数调优指南参数建议值可调范围影响说明云阈值2010-30值越小去云越严格时间范围夏季全年夏季热岛效应最明显NDVI阈值0.2/0.5±0.1影响发射率计算发射率公式0.004x0.986多种模型不同地表需调整5.2 典型报错解决方案Collection is empty错误检查时间范围是否有效确认区域坐标格式正确尝试扩大空间/时间范围温度值异常验证发射率计算流程检查热波段单位换算确认云掩膜效果导出失败降低分辨率或缩小区域检查Google Drive空间分块处理大数据集5.3 高级应用方向时间序列分析比较不同年份的热岛变化// 按年份分组计算 var byYear ee.ImageCollection.fromImages( years.map(function(y) { return filtered.filter(ee.Filter.calendarRange(y, y, year)) .median() .set(year, y); }));空间统计分析计算各行政区的平均温度var zonalStats lst.reduceRegion({ reducer: ee.Reducer.mean(), geometry: districts, scale: 100, maxPixels: 1e9 });热岛强度量化城市与郊区温度差var ruralMean lst.reduceRegion({ reducer: ee.Reducer.mean(), geometry: ruralArea, scale: 30 }).get(LST);