GEE谷歌地球引擎批量下载逐日ERA5气象数据的方法
本文介绍在谷歌地球引擎(Google Earth Engine,GEE)中,批量下载逐日的ERA5土壤湿度数据(或者是其他气象数据、遥感影像数据等)的方法。
首先,明确一下本文的需求。我们希望在GEE中,下载指定时间范围内,在指定区域的每一天的ERA5土壤湿度数据。当然,和本文需求类似的场景,比如下载其他时间分辨率(逐周、逐月、逐年等),或下载其他遥感数据(气象数据、Landsat、Sentinel等),都可以参考本文代码。
本文所用代码如下。
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
定义研究区域,在我这里我需要全球的数据,所以就定义了全球的空间范围。
随后,设置时间范围。startDate
和endDate
分别设定开始日期和结束日期,在我这里就是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
创建一个从startDate
到endDate
的日期列表,间隔为1
天(通过计算毫秒数来表示);随后,使用interval.evaluate
方法获取这个日期列表,并对每个日期调用exportDailyImage
函数,实现每天数据的单独导出。
执行上述代码,即可在GEE右侧的Tasks一栏中看到自己的导出任务,如下图所示;点击RUN
即可运行任务。
如果要下载的数据比较多(就比如我这里需要下载逐日的数据),手动一个一个点击RUN
比较麻烦,就可以参考文章Google Earth Engine谷歌地球引擎计算遥感影像在每个8天间隔内的多年平均值(https://fkxxgis.blog.csdn.net/article/details/138588432)中提到的批量点RUN
方法来运行任务。
至此,大功告成。
欢迎关注:疯狂学习GIS