基于 GEE 计算研究区年均地表温度数据

目录

[1 代码解析](#1 代码解析)

[2 完整代码](#2 完整代码)

[3 运行结果](#3 运行结果)


1 代码解析

(1)定义研究区:

javascript 复制代码
// 研究区的范围需要自己提前上传
var dataset = table;

// 将研究区显示在中心,后面的数字为缩放等级,范围从1 - 24
Map.centerObject(dataset, 6);

// 将图层添加到地图中
Map.addLayer(dataset);

// 打印数据集信息
print(dataset);

(2)导入地表温度数据:

本文采用的地表温度数据为MOD11A2 V6.1地表温度产品,其包含2000年至今全球的地表温度数据,时间分辨率为8天,空间分辨率为1km。

javascript 复制代码
// 定义 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地表温度产品的单位为开尔文,所以需要将其转化成摄氏度。

javascript 复制代码
// 对 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)数据可视化:

javascript 复制代码
// 计算 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中下载。

javascript 复制代码
// 导出裁剪后的影像到 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 完整代码

javascript 复制代码
// 研究区的范围需要自己提前上传
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 运行结果

研究区年均地表温度数据可视化结果
点击RUN即可下载数据

相关推荐
boonya2 小时前
阿里云效一站式DevOps解决方案
阿里云·云计算·devops·阿里云效·一站式服务
方安乐3 小时前
超简单腾讯云免费部署vue项目
云计算·腾讯云
Akamai中国3 小时前
加速采用安全的企业级 Kubernetes 环境
人工智能·云计算·云服务·云存储
wanhengidc4 小时前
云手机如何进行数据备份
运维·服务器·科技·智能手机·云计算
云计算小黄同学4 小时前
【基于阿里云ACK】详细介绍k8s日志系统的设计与部署
阿里云·kubernetes·云计算
阿里云通信4 小时前
国内如何合规接入 WhatsApp Business API?阿里云作为 Meta Premier BSP 的完整技术指南
阿里云·云计算·whatsapp api·whatsapp bsp·whatsapp 服务商
翼龙云_cloud4 小时前
阿里云渠道商:连接无影云电脑时最常见的问题有哪些?
服务器·阿里云·云计算·电脑·玩游戏
weixin_307779136 小时前
Jenkins GitHub插件1.45.0:深度集成与实践指南
运维·云原生·云计算·jenkins
AKAMAI15 小时前
加速采用安全的企业级 Kubernetes 环境
人工智能·云计算