基于 GEE 批量下载 NASA GDDP-CMIP6 气候数据:历史 + 未来情景(SSP245、SSP585)年度产品自动化生成与导出

目录

一、关键变量定义与说明

(一)核心数据相关变量

(二)波段分类变量

(三)筛选条件变量

二、核心函数:exportYearlyData

(一)函数整体逻辑

(二)关键步骤解析

[1. 筛选单年份数据](#1. 筛选单年份数据)

[2. 降水量单位转换](#2. 降水量单位转换)

[3. 时间聚合(求和 / 求平均)](#3. 时间聚合(求和 / 求平均))

[4. 合并影像与导出](#4. 合并影像与导出)

三、数据筛选与函数调用逻辑

(一)整体执行流程

(二)历史情景数据处理

(三)未来情景数据处理

四、关键注意事项与约束

五、输出结果说明

六、运行结果


若觉得代码对您的研究 / 项目有帮助,欢迎点击打赏支持!需要完整代码的朋友,打赏后可在后台私信(复制文章标题发给我),我会尽快发您完整可运行代码,感谢支持!

本代码基于 Google Earth Engine(GEE)平台,目标是从 NASA/GDDP-CMIP6 气候数据集(全球降尺度数据产品,包含 CMIP6 模式的气候模拟数据)中,筛选特定模式、情景和年份的气候数据,对不同类型的气候变量执行求和或求平均的时间聚合处理,最终将处理后的单波段数据裁剪到目标区域并导出至 Google Drive。

一、关键变量定义与说明

(一)核心数据相关变量

javascript 复制代码
var roi = table; // 感兴趣区域(Region of Interest),由外部导入的矢量数据(table)定义,用于后续数据裁剪
var dataset = ee.ImageCollection('NASA/GDDP-CMIP6'); // GEE数据集ID,指向NASA发布的GDDP-CMIP6气候数据集合
  • roi:必须提前在 GEE 中导入矢量图层(如行政边界、研究区域边界)并命名为table,否则会导致裁剪失败。
  • dataset:包含多个气候模式(model)、不同排放情景(scenario)、长时序的气候数据,变量涵盖降水、温度、辐射等多种气象要素。

(二)波段分类变量

javascript 复制代码
var sumBands = ['pr', 'rlds', 'rsds']; // 需要进行"时间求和"的波段集合
var meanBands = ['tas', 'tasmin', 'tasmax', 'hurs', 'huss', 'sfcWind']; // 需要进行"时间求平均"的波段集合
var allBands = sumBands.concat(meanBands); // 合并所有波段,用于后续循环导出

各波段含义(GDDP-CMIP6 数据集标准定义):

波段名称 变量含义 单位 聚合方式
pr 降水量 kg/m²/s(原始) 求和
rlds 向下长波辐射通量 W/m² 求和
rsds 向下短波辐射通量 W/m² 求和
tas 近地面气温(平均) K 求平均
tasmin 近地面最低气温 K 求平均
tasmax 近地面最高气温 K 求平均
hurs 近地面相对湿度 % 求平均
huss 近地面比湿 kg/kg 求平均
sfcWind 近地面风速 m/s 求平均

(三)筛选条件变量

javascript 复制代码
var models = ['ACCESS-CM2']; // 要筛选的气候模式名称(CMIP6中的一个全球气候模式)
var scenarios = ['ssp245', 'ssp585']; // 要筛选的排放情景
  • 气候模式:ACCESS-CM2是澳大利亚联邦科学与工业研究组织(CSIRO)开发的 CMIP6 模式,适用于全球气候模拟。
  • 排放情景(SSP 情景,共享社会经济路径):
    • ssp245:中等排放情景("中间道路" 情景,全球温升控制在 2-3℃);
    • ssp585:高排放情景(化石燃料密集型发展,全球温升可能超过 4℃);
    • 额外包含historical(历史情景,通常为 1850-2014 年观测驱动的模拟数据)。

二、核心函数:exportYearlyData

该函数是数据处理与导出的核心,接收 4 个参数(气候模式、情景、年份、数据集合),完成单年份数据的处理与导出。

(一)函数整体逻辑

筛选单年份数据 → 预处理特定波段(降水量单位转换) → 按波段类型聚合(求和 / 求平均) → 合并聚合结果 → 循环导出单波段数据至 Drive。

(二)关键步骤解析

1. 筛选单年份数据

javascript 复制代码
var yearCol = collection.filter(ee.Filter.calendarRange(year, year, 'year'));
  • 使用ee.Filter.calendarRange筛选输入数据集合(collection)中指定年份(year)的所有影像,得到该年份的时序影像集合(yearCol)。
  • 注:GDDP-CMIP6 数据通常为日尺度数据,因此yearCol包含该年份 365/366 天的日尺度影像。

2. 降水量单位转换

javascript 复制代码
var processedCol = yearCol.map(function(img) {
  var pr = img.select('pr').multiply(86400).rename('pr');
  return img.addBands(pr, null, true);
});
  • 核心目的:GDDP-CMIP6 中pr(降水量)的原始单位是kg/m²/s(即 mm/s),乘以 86400(一天的秒数)后,转换为mm/天,符合日常降水量统计习惯。
  • 逻辑:遍历年份影像集合中的每幅影像(img),单独处理pr波段,转换后覆盖原pr波段(addBandstrue参数表示替换同名波段)。

3. 时间聚合(求和 / 求平均)

javascript 复制代码
var sumImg = processedCol.select(sumBands).sum(); // 对sumBands波段集合执行"年度求和"
var meanImg = processedCol.select(meanBands).mean(); // 对meanBands波段集合执行"年度求平均"
  • 求和逻辑:适用于通量类、累积类变量(如降水量pr、辐射通量rlds),得到年度总量(如年降水量、年总辐射量)。
  • 求平均逻辑:适用于状态类变量(如气温、湿度、风速),得到年度平均值(如年平均气温、年平均相对湿度)。

4. 合并影像与导出

javascript 复制代码
var combinedImg = sumImg.addBands(meanImg); // 合并求和、求平均后的所有波段,得到单幅年度综合影像
allBands.forEach(function(band) {
  var imageToExport = combinedImg.select(band).clip(roi); // 筛选单个波段,并裁剪到目标区域(roi)
  var fileName = model + '_' + scenario + '_' + year + '_' + band; // 定义导出文件名(包含模式、情景、年份、波段信息)
  Export.image.toDrive({ // 导出影像至Google Drive
    image: imageToExport,
    description: fileName, // GEE任务描述
    folder: 'NEX_GDDP_CMIP6_oya', // 导出到Drive中的目标文件夹(需提前创建或允许GEE自动创建)
    fileNamePrefix: fileName, // 导出文件前缀(与fileName一致,确保文件标识唯一)
    region: roi, // 导出区域(与裁剪区域一致)
    scale: 27830, // 空间分辨率(单位:米),GDDP-CMIP6数据的标准分辨率(约25km,因投影不同略有差异)
    crs: 'EPSG:4326', // 坐标系(WGS84经纬度坐标系)
    maxPixels: 1e13 // 最大像素数限制(避免因区域过大导致导出失败,1e13足够覆盖全球尺度)
  });
});
  • 导出特点:按波段单独导出(而非多波段影像),每个波段对应一个独立的 Drive 文件,文件名包含完整的元数据信息(模式 - 情景 - 年份 - 波段),便于后续数据管理。
  • 依赖条件:运行前需确保 GEE 已授权访问 Google Drive,且目标文件夹(NEX_GDDP_CMIP6_oya)可写入。

三、数据筛选与函数调用逻辑

(一)整体执行流程

遍历指定气候模式(models)→ 分别处理历史情景(historical)和未来情景(scenarios)→ 筛选对应情景的数据集 → 调用exportYearlyData函数导出指定年份数据。

(二)历史情景数据处理

javascript 复制代码
models.forEach(function(model) {
  var historicalCol = dataset.filter(ee.Filter.eq('model', model))
                             .filter(ee.Filter.eq('scenario', 'historical')); // 筛选历史情景数据集
  for (var year = 2010; year <= 2010; year++) {
    exportYearlyData(model, 'historical', year, historicalCol); // 导出2010年历史情景数据
  }
});
  • 筛选逻辑:通过ee.Filter.eq(等于筛选),从总数据集(dataset)中筛选出指定模式(model)和historical情景的影像集合(historicalCol)。
  • 年份限制:仅导出 2010 年数据(循环条件year=20102010),如需导出多个历史年份,可修改循环范围(如20002010)。

(三)未来情景数据处理

javascript 复制代码
scenarios.forEach(function(scenario) {
  var futureCol = dataset.filter(ee.Filter.eq('model', model))
                         .filter(ee.Filter.eq('scenario', scenario)); // 筛选未来情景数据集
  for (var year = 2050; year <= 2050; year++) {
    exportYearlyData(model, scenario, year, futureCol); // 导出2050年未来情景数据
  }
});
  • 逻辑与历史情景一致:遍历ssp245ssp585两个未来情景,分别筛选数据集后,导出 2050 年数据。
  • 扩展说明:如需导出多个未来年份(如 2030、2050、2100),可修改for循环的年份范围。

四、关键注意事项与约束

  • 数据权限与依赖

    • 需在 GEE 中导入矢量数据(table)作为roi,否则裁剪步骤会报错;
    • 需确保 Google 账号已授权 GEE 访问 Google Drive,且目标文件夹(NEX_GDDP_CMIP6_oya)存在或允许创建。
  • 分辨率与数据量

    • 导出分辨率为27830米(约 25km),若需更高分辨率(如 10km),需修改scale参数,但会增加数据量和导出时间;
    • maxPixels: 1e13是 GEE 允许的最大像素数限制,不可随意减小,否则大面积区域导出会失败。
  • 波段与变量兼容性

    • 若需添加或删除波段,需确保修改sumBandsmeanBandsallBands三个变量,且新增波段在 GDDP-CMIP6 数据集中存在;
    • 不同气候模式(models)可能存在波段缺失,更换模式时需确认目标模式支持所有指定波段。
  • 年份有效性 :历史情景(historical)的年份范围通常为 1850-2014(具体取决于模式),未来情景(ssp245/ssp585)通常为 2015-2100,需确保导出年份在对应情景的有效范围内,否则会导出空数据。

五、输出结果说明

  • 输出位置:Google Drive 的NEX_GDDP_CMIP6_oya文件夹;
  • 输出文件格式:GeoTIFF(GEE 默认影像导出格式,支持大部分 GIS 软件打开);
  • 文件命名示例:ACCESS-CM2_historical_2010_pr.tif(ACCESS-CM2 模式、历史情景、2010 年、降水量波段);
  • 数据内容:每个文件为单波段、单年份、裁剪后的栅格数据,数值为年度总量(sumBands)或年度平均值(meanBands)。

六、运行结果

点击RUN即可下载数据
下载的数据可视化结果

若觉得代码对您的研究 / 项目有帮助,欢迎点击打赏支持!需要完整代码的朋友,打赏后可在后台私信(复制文章标题发给我),我会尽快发您完整可运行代码,感谢支持!

相关推荐
极智视界7 小时前
目标检测数据集 - 自动驾驶平台Carla图像交通元素目标检测数据集下载
yolo·目标检测·自动驾驶·数据集·voc·coco·carla
wanhengidc17 小时前
云手机的存储空间可以灵活扩展吗?
运维·服务器·科技·智能手机·云计算
极智视界21 小时前
目标检测数据集 - 穿着服饰检测数据集下载
yolo·目标检测·数据集·voc·coco·算法训练·穿着服饰检测数据集
wanhengidc1 天前
云手机的硬件依赖性如何?
运维·服务器·智能手机·云计算
wanhengidc1 天前
巨椰 云手机办公便利性高
运维·服务器·安全·智能手机·云计算
wanhengidc1 天前
在线服务器的应用场景都有哪些?
运维·服务器·科技·游戏·智能手机·云计算
翼龙云_cloud1 天前
阿里云渠道商:轻量应用服务器连接常见问题与解决指南
服务器·阿里云·云计算
翼龙云_cloud1 天前
亚马逊云渠道商:新手怎么利用AWS Lightsail部署 WordPress?
运维·服务器·云计算·aws
布茹 ei ai1 天前
5、基于 GEE 的 Sentinel-1 SAR 地震滑坡变化检测系统:2022 泸定地震案例
javascript·sentinel·遥感·gee·云平台