本文介绍在谷歌地球引擎(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比较麻烦,就可以参考文章谷歌地球引擎GEE计算多年内每隔8天的遥感影像平均值中提到的批量点RUN方法来运行任务。
至此,大功告成。
欢迎关注:疯狂学习GIS
领取专属 10元无门槛券
私享最新 技术干货