首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >谷歌地球引擎GEE下载逐日ERA5气象数据

谷歌地球引擎GEE下载逐日ERA5气象数据

作者头像
疯狂学习GIS
发布2025-05-27 10:52:56
发布2025-05-27 10:52:56
44300
代码可运行
举报
文章被收录于专栏:疯狂学习GIS疯狂学习GIS
运行总次数:0
代码可运行

  本文介绍在谷歌地球引擎(Google Earth Engine,GEE)中,批量下载逐日ERA5土壤湿度数据(或者是其他气象数据、遥感影像数据等)的方法。

  首先,明确一下本文的需求。我们希望在GEE中,下载指定时间范围内,在指定区域每一天ERA5土壤湿度数据。当然,和本文需求类似的场景,比如下载其他时间分辨率(逐周、逐月、逐年等),或下载其他遥感数据(气象数据、Landsat、Sentinel等),都可以参考本文代码。

  本文所用代码如下。

代码语言:javascript
代码运行次数:0
运行
复制
var ERA5 = ee.ImageCollection("ECMWF/ERA5_LAND/DAILY_AGGR").select(['volumetric_soil_water_layer_1']);
var region = ee.Geometry.Polygon([[[180, 90], [-180, 90], [-180, -90], [180, -90]]], null, false);

var startDate = ee.Date('1963-01-01');
var endDate = ee.Date('1965-01-01');

// var date = '1950-01-02';
// var singleImage = ERA5.filterDate(date, ee.Date(date).advance(1, 'day')).first();
// Map.addLayer(singleImage, {}, 'ERA5_Single_Day');

function exportDailyImage(date) {
  date = ee.Date(date);
var singleImage = ERA5.filterDate(date, date.advance(1, 'day')).first();

  Export.image.toDrive({
    image: singleImage,
    description: 'ERA5_Soil_Moisture_' + date.format('YYYY-MM-dd').getInfo(),
    folder: 'ERA5',
    scale: 55659.7,
    region: region,
    maxPixels: 1e13
  });
}

var interval = ee.List.sequence(startDate.millis(), endDate.millis(), 24 * 60 * 60 * 1000);

interval.evaluate(function(intervalList) {
  intervalList.forEach(function(millis) {
    var date = ee.Date(millis);
    exportDailyImage(date);
  });
});

  首先,我们需要定义数据集与研究区域。我们通过ee.ImageCollection方法定义一个影像集合,在我这里就是ECMWF/ERA5_LAND/DAILY_AGGR这个逐日的ERA5数据集,并选择其中的volumetric_soil_water_layer_1波段,即第一层土壤体积含水量;随后,用region定义研究区域,在我这里我需要全球的数据,所以就定义了全球的空间范围。

  随后,设置时间范围。startDateendDate分别设定开始日期和结束日期,在我这里就是1963年1月1日和1965年1月1日,意味着程序将下载1963年和1964年这2年的时间段内的数据。

  接下来,定义函数exportDailyImage(date)。此函数接收一个日期参数,基于该日期过滤出对应日期的ERA5数据集中的单个影像。其中,使用Export.image.toDrive方法将此单日影像导出至Google Drive中名为ERA5的文件夹内,通过设置description来让导出的每一景图像文件的命名方式都是指定前缀加上其日期这样的格式;导出时指定了下载的遥感影像分辨率为55659.7米——这里我是希望下载的数据分辨率尽可能接近0.5度,而GEE下载数据的时候只能以为单位(而不是经纬度为单位)来指定空间分辨率,所以我就设置了这样一个接近0.5度的米数;同时,设置maxPixels参数以允许处理大尺寸图像,这里建议就设置成本文中的这个最大值。

  到这里,就可以开始生成日期序列并执行导出了。首先,使用ee.List.sequence创建一个从startDateendDate的日期列表,间隔为1天(通过计算毫秒数来表示);随后,使用interval.evaluate方法获取这个日期列表,并对每个日期调用exportDailyImage函数,实现每天数据的单独导出。

  执行上述代码,即可在GEE右侧的Tasks一栏中看到自己的导出任务,如下图所示;点击RUN即可运行任务。

  如果要下载的数据比较多(就比如我这里需要下载逐日的数据),手动一个一个点击RUN比较麻烦,就可以参考文章谷歌地球引擎GEE计算多年内每隔8天的遥感影像平均值中提到的批量点RUN方法来运行任务。

  至此,大功告成。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-05-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 疯狂学习GIS 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档