GEEer成长日记十七:在Google Earth Engine(GEE)中批量下载MODIS NDVI数据

该博客介绍了如何利用Google Earth Engine(GEE)处理MOD13Q1.006 Terra Vegetation Indices 16-Day Global 250m数据集,提取NDVI并进行时间筛选,然后将处理后的影像导出到Google Drive。通过展示代码和步骤,帮助读者理解GEE在遥感数据分析中的应用。
摘要由CSDN通过智能技术生成

        所使用数据集为:MOD13Q1.006 Terra Vegetation Indices 16-Day Global 250m

         需注意的是,要得到真实的NDVI,需要乘以0.0001

完整代码如下:

var roi = table;
//显示研究区的位置
var styling = {color:'red',fillColor:'00000000'};
Map.addLayer(roi.style(styling),{},'roi');
Map.centerObject(roi,7);

//加载数据
var ndviCol = ee.ImageCollection('MODIS/006/MOD13Q1')
                          .filterDate('2018-01-01', '2018-05-01')//时间筛选
                          .filterBounds(roi)//筛选区域
                          .select('NDVI')
                          .map(function(image){
                            return image.multiply(0.0001).clip(roi);
                          });

var ndviVis = {
  min: 0.0,
  max: 0.8,
  palette: [
    'FFFFFF', 'CE7E45', 'DF923D', 'F1B555', 'FCD163', '99B718', '74A901',
    '66A000', '529400', '3E8601', '207401', '056201', '004C00', '023B01',
    '012E01', '011D01', '011301'
  ],
};

Map.addLayer(ndviCol,ndviVis,"ndviCol");

                 
//导出影像数据函数,三个参数
function exportImage(image, roi, fileName) {  
   Export.image.toDrive({  
      image:image,
      description: 'NDVI '+fileName,  // 下载任务名称
      fileNamePrefix: 'NDVI '+fileName,  //影像的名称
      folder: "ndviCol",  //在Drive中存储的文件夹名称
      scale: 250, //空间分辨率
      region: roi,  //要下载影像的范围
      maxPixels: 1e13, //输出的最大像元数
      fileFormat:"GeoTIFF", //设置影像导出格式
      crs: "EPSG:4326"  //投影信息
  });  
} 


//获取每幅影像对应的时间
var indexList = ndviCol.reduceColumns(ee.Reducer.toList(), ["system:index"]).get("list");
print("indexList", indexList);

//循环导出影像,用影像时间对其命名
indexList.evaluate(function(indexs) 
{  
  for (var i=0; i<indexs.length; i++) {  
      var image = ndviCol.filter(ee.Filter.eq("system:index", indexs[i])) //筛选对应时间的影像
                           .first().float(); 
      exportImage(image, roi, indexs[i]); 
  }  
});

运行结果:

        在【Tasks】里点击RUN,即可上传谷歌硬盘。

        小伙伴们可以关注WX公众号获取更多关于GEE的学习资料。另外,如果有问题需要交流,可以加入“GEE学习交流群”,每天都有小伙伴在群里分享学习心得,公众号内可以获取入群方式~

  • 9
    点赞
  • 89
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
以下是使用Google Earth Engine获取逐日NDVI的代码示例: ```javascript // 设置ROI var roi = ee.Geometry.Rectangle([xmin, ymin, xmax, ymax]); // 设置起始和结束日期 var startDate = ee.Date('2019-01-01'); var endDate = ee.Date('2019-12-31'); // 加载MODIS数据 var modis = ee.ImageCollection('MODIS/006/MOD13A1') .filterBounds(roi) .filterDate(startDate, endDate) .select('NDVI'); // 定义函数计算每个图像的年份和日数 var addDate = function(image) { var doy = image.date().getRelative('day', 'year'); return image.addBands(doy).addBands(image.date().get('year')); }; // 对图像集应用函数 var modisWithDate = modis.map(addDate); // 定义函数计算每个年份和日数的平均NDVI值 var reduceDaily = function(imageCollection, year, doy) { var filtered = imageCollection.filter(ee.Filter.calendarRange(year, year, 'year')) .filter(ee.Filter.calendarRange(doy, doy, 'day_of_year')); return filtered.mean().set('year', year).set('doy', doy); }; // 创建一个二维数组,其第一维表示年份,第二维表示一年的日数 var years = ee.List.sequence(startDate.get('year'), endDate.get('year')); var days = ee.List.sequence(1, 365); // 对所有年份和日数应用reduceDaily函数 var dailyNDVI = ee.ImageCollection.fromImages(years.map(function(y){ return days.map(function(d){ return reduceDaily(modisWithDate, y, d); }); }).flatten()); // 打印输出结果 print(dailyNDVI); ``` 在上述代码,首先定义了一个感兴趣区域(ROI),然后加载了2000年至今的MODIS NDVI数据,并对其进行了筛选。接着定义了两个函数,一个函数用于向每个图像添加年份和日数作为带宽,另一个函数用于计算每个年份和日数的平均NDVI值。最后,将所有年份和日数应用到reduceDaily函数,生成逐日的NDVI值。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值