目录
1 代码解析
2 完整代码
3 运行结果
1 代码解析
(1)定义研究区:
// 研究区的范围需要自己提前上传
var dataset = table;
// 将研究区显示在中心,后面的数字为缩放等级,范围从1 - 24
Map.centerObject(dataset, 6);
// 将图层添加到地图中
Map.addLayer(dataset);
// 打印数据集信息
print(dataset);
(2)导入地表温度数据:
本文采用的地表温度数据为MOD11A2 V6.1地表温度产品,其包含2000年至今全球的地表温度数据,时间分辨率为8天,空间分辨率为1km。
// 定义 MODIS 地表温度影像集
var modis = ee.ImageCollection('MODIS/061/MOD11A2');
// 定义起始日期
var start = ee.Date('2019-01-01');
// 定义日期范围,从起始日期开始,持续 1 年
var dateRange = ee.DateRange(start, start.advance(1, 'year'));
// 根据日期范围筛选影像集
var mod11a2 = modis.filterDate(dateRange);
// 从筛选后的影像集中选择日间地表温度波段
var modLSTday = mod11a2.select('LST_Day_1km');
(3)转换温度单位:
由于MOD11A2 V6.1地表温度产品的单位为开尔文,所以需要将其转化成摄氏度。
// 对 modLSTday 影像集里的每张影像进行处理
var modLSTc = modLSTday.map(function(img) {
// 将影像乘以 0.02
// 再减去 273.15,实现温度从开尔文转换为摄氏度
// 最后复制原影像的 'system:time_start' 属性
return img
.multiply(0.02)
.subtract(273.15)
.copyProperties(img, ['system:time_start']);
});
(4)数据可视化:
// 计算 modLSTc 影像集的均值,并将其裁剪到研究区范围内
var clippedLSTc = modLSTc.mean().clip(dataset);
// 将裁剪后的均值影像添加到地图中
Map.addLayer(
clippedLSTc,
{
// 影像显示的最小值
min: 0,
// 影像显示的最大值
max: 35,
// 影像显示的颜色映射,从蓝色到红色
palette: ['blue', 'limegreen', 'yellow', 'darkorange', 'red']
},
// 图层名称
'Mean temperature, 2019'
);
(5)导出数据:
将数据导入到Google Drive中,若有进一步处理的需要可从Google Drive中下载。
// 导出裁剪后的影像到 Google Drive
Export.image.toDrive({
// 要导出的影像
image: clippedLSTc,
// 导出影像的描述信息
description: 'LST_2019',
// Google Drive 中存储影像的文件夹名称
folder: 'my_folder',
// 导出影像的区域范围
region: dataset,
// 影像的空间分辨率(单位:米)
scale: 1000,
// 影像的坐标参考系统
crs: 'EPSG:4326',
// 允许处理的最大像素数
maxPixels: 1e10
});
2 完整代码
// 研究区的范围需要自己提前上传
var dataset = table;
// 将研究区显示在中心,后面的数字为缩放等级,范围从1 - 24
Map.centerObject(dataset, 6);
// 将图层添加到地图中
Map.addLayer(dataset);
// 打印数据集信息
print(dataset);
// 定义 MODIS 地表温度影像集
var modis = ee.ImageCollection('MODIS/061/MOD11A2');
// 定义起始日期
var start = ee.Date('2019-01-01');
// 定义日期范围,从起始日期开始,持续 1 年
var dateRange = ee.DateRange(start, start.advance(1, 'year'));
// 根据日期范围筛选影像集
var mod11a2 = modis.filterDate(dateRange);
// 从筛选后的影像集中选择日间地表温度波段
var modLSTday = mod11a2.select('LST_Day_1km');
// 对 modLSTday 影像集里的每张影像进行处理
var modLSTc = modLSTday.map(function(img) {
// 将影像乘以 0.02
// 再减去 273.15,实现温度从开尔文转换为摄氏度
// 最后复制原影像的 'system:time_start' 属性
return img
.multiply(0.02)
.subtract(273.15)
.copyProperties(img, ['system:time_start']);
});
// 计算 modLSTc 影像集的均值,并将其裁剪到研究区范围内
var clippedLSTc = modLSTc.mean().clip(dataset);
// 将裁剪后的均值影像添加到地图中
Map.addLayer(
clippedLSTc,
{
// 影像显示的最小值
min: 0,
// 影像显示的最大值
max: 35,
// 影像显示的颜色映射,从蓝色到红色
palette: ['blue', 'limegreen', 'yellow', 'darkorange', 'red']
},
// 图层名称
'Mean temperature, 2019'
);
// 导出裁剪后的影像到 Google Drive
Export.image.toDrive({
// 要导出的影像
image: clippedLSTc,
// 导出影像的描述信息
description: 'LST_2019',
// Google Drive 中存储影像的文件夹名称
folder: 'my_folder',
// 导出影像的区域范围
region: dataset,
// 影像的空间分辨率(单位:米)
scale: 1000,
// 影像的坐标参考系统
crs: 'EPSG:4326',
// 允许处理的最大像素数
maxPixels: 1e13
});
3 运行结果
![](https://i-blog.csdnimg.cn/direct/fb78b986a32643bd9e16e1f424ada9eb.png)
![](https://i-blog.csdnimg.cn/direct/0b578674e5a8403e9a833a3e85996e0a.png)