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

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定义研究区域,在我这里我需要全球的数据,所以就定义了全球的空间范围。

  随后,设置时间范围。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比较麻烦,就可以参考文章Google Earth Engine谷歌地球引擎计算遥感影像在每个8天间隔内的多年平均值(https://fkxxgis.blog.csdn.net/article/details/138588432)中提到的批量点RUN方法来运行任务。

  至此,大功告成。

欢迎关注:疯狂学习GIS

http://www.xdnf.cn/news/519157.html

相关文章:

  • 等于和绝对等于的区别
  • LeetCode 394. 字符串解码详解:Java栈实现与逐行解析
  • 第5章 监控与回归测试:日志收集 · 代码覆盖率 · 静态分析 · 质量门
  • Python爬虫实战:通过PyExecJS库实现逆向解密
  • 院士方复全数学命题证明采用预期理由和循环论证以及类比的错误方法
  • web页面布局基础
  • 【动态规划】路径问题
  • STM32八股【9】-----volatile关键字
  • vim - v
  • Python数据可视化 - Pyecharts绘图示例
  • 中级统计师-统计学基础知识-第三章 参数估计
  • 【Linux】命令行参数和环境变量
  • 【PyQt5实战】五大对话框控件详解:从文件选择到消息弹窗
  • 【typenum】 11 私有模块(private.rs)
  • 【Redis实战篇】Redis消息队列
  • 10.9 LangChain LCEL革命:43%性能提升+声明式语法,AI开发效率飙升实战指南
  • 深入理解递归算法:Go语言实现指南
  • C44-练习
  • 全基因组关联研究揭示了脑淋巴活动的机制
  • Rstudio换皮:自定义彩虹括号与缩进线
  • Python Requests库完全指南:从入门到精通
  • 《C语言中的传值调用与传址调用》
  • 多头自注意力机制—Transformer模型的并行特征捕获引擎
  • 如何畅通需求收集渠道,获取用户反馈?
  • c++多线程debug
  • 【android bluetooth 协议分析 01】【HCI 层介绍 6】【WriteLeHostSupport命令介绍】
  • 2.1.2
  • WaterStamp —— 一个实用的网页水印生成器开发记
  • 系统启动时开启选择内核菜单
  • ctf 基础