【GEE学习日记】GEE下载ERA5指定小时数据

1 背景

ERA5数据集提供了逐小时的气象产品,最近做实验需要用到指定日期的14点的气象数据,所以学习了一下。
我的目的:获取2003年每月5,15,25日 14点的空气温度

2 代码

var roi = table.geometry();  // table是我上传的研究区矢量
var batch = require('users/fitoprincipe/geetools:batch');  
function ExtractByMask(Image)
{
  return Image.clip(roi)
}

// 假设有年份和每月值的两个列表
var years = [2003];
var months = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];
var days=[5,15,25]

// 创建一个空的列表来存储所有日期
var startDates = [];
var endDates=[];
// 循环遍历年份和月份,将它们结合成日期,并添加到列表中
for (var i = 0; i < years.length; i++) {
  for (var j = 0; j < months.length; j++)
    for (var k=0;k<days.length; k++){
    var year = years[i];
    var month = months[j];
    var day=days[k];
    
    // 使用 ee.Date 对象创建日期
    var startdate = ee.Date.fromYMD(year, month, day); 
    var enddate=ee.Date.fromYMD(year, month, day+1);
    // 将日期添加到列表中
    startDates.push(startdate);
    endDates.push(enddate);
  }
}


//for 循环遍历日期
for (var i = 0; i < startDates.length; i++) {
  var startDate = startDates[i];
  var endDate = endDates[i];

  // 从 ERA5_LAND 数据集中筛选出指定日期和时刻的温度数据
  var dataset = ee.ImageCollection("ECMWF/ERA5_LAND/HOURLY")
    .filterDate(startDate, endDate)
    .select('temperature_2m')
    .filterBounds(roi)
    .filter(ee.Filter.equals({
      leftField: 'hour',
      rightValue: 14
    }));

  var dataset_ExtractByMask=dataset.map(ExtractByMask) //裁剪


  // 导出数据
  batch.Download.ImageCollection.toDrive(dataset_ExtractByMask, "2003_TA", {
    scale: 1000,
    crs: "EPSG:4326",
    type: "float"
  });
}

3 结果展示

把影像下载下来放进arcgis的结果如下:
【GEE学习日记】GEE下载ERA5指定小时数据_第1张图片

4 问题讨论

我这个代码挑选出来的是数据集,所以需要使用到裁剪函数clip,进行每一个影像的循环。
实际上指定日期指定时间指定波段的影像只有一张,后续可以考虑使用image的函数去导出。

你可能感兴趣的:(GEE,遥感数据学习,学习)