当前位置: 首页 > article >正文

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

目录

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 运行结果

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

http://www.kler.cn/a/545505.html

相关文章:

  • Unity状态机的实现方法一
  • 【Elasticsearch】字符过滤器Character Filters
  • 深度学习|表示学习|归一化和正则化带给我们的启示|27
  • 前端开发:打造磨砂质感的盒子效果
  • python自动化测试之统一请求封装及通过文件实现接口关联
  • 使用 Flask 构建流式返回服务
  • Logistic Regression 逻辑回归中的sigmoid函数是什么?
  • 【Linux】多线程 -> 从线程概念到线程控制
  • 【CXX】0 Rust与C ++的互操作利器:CXX库介绍与示例
  • 深入解析:如何在C#和C/C++之间安全高效地通过P/Invoke传递多维数组
  • RV1126解码(1)
  • 多能互补综合能源系统,改变能源结构---安科瑞 吴雅芳
  • 探索ChatGPT背后的前端黑科技
  • 【每日关注】科技圈重要动态
  • JVM——垃圾回收器
  • Redis企业开发实战(五)——点评项目之分布式锁Redission与秒杀优化
  • 基于Spring Boot的网上宠物店系统设计与实现(LW+源码+讲解)
  • 【数据结构课设--内部排序算法的性能分析系统】
  • 考研操作系统----操作系统的概念定义功能和目标(仅仅作为王道哔站课程讲义作用)
  • 独立C++ asio库实现的UDP Server