乐于分享
好东西不私藏

保姆级教程|GPM数据免费下载,新手零踩坑

保姆级教程|GPM数据免费下载,新手零踩坑

Hello~ 各位做科研、搞数据分析的小伙伴,是不是经常被「GPM数据下载」难住?

要么找不到官方入口,要么进入页面后无从下手,要么下载到一半卡住、格式不对……别慌!

今天给你一套代码直接秒了!!!!还不码住!!

Step 1:登录GEE平台

打开浏览器,访问GEE官方地址:https://code.earthengine.google.com/,使用Google账号登录

Step 2:复制粘贴代码

登录后,新建一个脚本(点击左上角「New」→「Script」),删除默认代码,将以下优化后的代码复制粘贴到编辑框:

// ========================================
// 通用 GPM IMERG V07 累积降雨下载代码
// 适用于任意区域、任意时间段、任意时间间隔
// ========================================
// ===============================
// 1. 参数设置区
// ===============================
// 研究区域:这里示例为西北太平洋
// 你也可以换成行政区、流域、矢量边界等
var roi = ee.Geometry.Rectangle([99, 0, 180, 66]);
// 起止时间
var startDate = '2019-12-04T00:00:00';
var endDate   = '2019-12-06T00:00:00';
// 时间间隔
// 例如:
// 30 min:intervalValue = 30, intervalUnit = 'minute'
// 3 h:intervalValue = 3, intervalUnit = 'hour'
// 24 h:intervalValue = 1, intervalUnit = 'day'
var intervalValue = 30;
var intervalUnit = 'minute';
// 导出文件夹
var folderName = 'GPM_download';
// 文件名前缀
var filePrefix = 'GPM_accum';
// ===============================
// 2. 构建时间序列
// ===============================
var start = ee.Date(startDate);
var end = ee.Date(endDate);
// 计算总时间跨度
var totalSteps = end.difference(start, intervalUnit).divide(intervalValue).floor();
var timeList = ee.List.sequence(0, totalSteps.subtract(1));
// ===============================
// 3. 循环导出每个时间窗口
// ===============================
timeList.evaluate(function(list) {
  list.forEach(function(i) {
    var windowStart = start.advance(ee.Number(i).multiply(intervalValue), intervalUnit);
    var windowEnd = windowStart.advance(intervalValue, intervalUnit);
    // GPM IMERG V07
    var gpmCol = ee.ImageCollection('NASA/GPM_L3/IMERG_V07')
      .filterDate(windowStart, windowEnd)
      .filterBounds(roi)
      .select('precipitation');
    // precipitation 单位为 mm/hr
    // IMERG 原始时间分辨率为 30 min
    // 所以每张图像乘以 0.5,转为该 30 min 的累积降雨量 mm
    // 然后再 sum,得到整个时间窗口的累积降雨量
    var rainAccum = gpmCol
      .map(function(img) {
        return img.multiply(0.5);
      })
      .sum()
      .rename('rain_accum_mm')
      .set('system:time_start', windowStart.millis());
    var timestampStart = windowStart.format('YYYYMMdd_HHmm').getInfo();
    var timestampEnd = windowEnd.format('YYYYMMdd_HHmm').getInfo();
    var outName = filePrefix + '_' + timestampStart + '_to_' + timestampEnd;
    Export.image.toDrive({
      image: rainAccum.clip(roi),
      description: outName,
      folder: folderName,
      fileNamePrefix: outName,
      region: roi,
      scale: 10000,
      maxPixels: 1e13
    });
    print('已创建导出任务:', outName);
  });
});
Map.centerObject(roi, 3);
tips:网上有人建议用DownThemALL插件下载的,不太推荐用这个尤其是下载的数据量很多的时候,还有用代码下的,我试过了网站不稳定很容易失败,目前来说用GEE下是最方便高效的了。
最后祝各位科研顺利!