Google Earth Engine(GEE)批量下载代码(以 NDVI数据为例)

下载数据先准备工作(具体细节都能查到):科学上网 谷歌邮箱,谷歌邮箱注册GEE账号。
一:导入需要下载边界shp文件。

标题

 找到自己的shp文件,导入除了sbx文件的所有文件。

 

 导入成功

命名assetid 如111,点击uoload。

 上床成功后,点刷新,看到111,导入成功。

 

 二,程序编写

  导入数据:点击箭头

 粘贴下面程序程序:这里的程序只能一年一年的下载。需要改的就是年份(比如说:如果要下载2002年的数据需要把程序里的数据2000改成2002)。


var roi=table
// 调用MODIS的NDVI数据集250m
var dataset = ee.ImageCollection('MODIS/061/MOD13Q1')
                  // 筛选研究时间和覆盖研究区域的影像
                  .filter(ee.Filter.date('2000-01-01', '2001-01-01'))
                  .select('NDVI')
                  // 对NDVI波段进行0.0001比例缩放
                  .map(function(image){
                    return image.multiply(0.0001).set('system:time_start',image.get('system:time_start'))
                                .clip(table)
                  });
var ndviVis = {
  min: -1,
  max: 1,
  palette: ['red', 'blue', 'yellow', 'green'],
};
Map.centerObject(table, 8);
Map.addLayer(dataset, ndviVis, 'NDVI');

// 计算2020年NDVI月最大值
var years = ee.List.sequence(2000, 2000);
var months = ee.List.sequence(2, 12);
var monthly_max =  ee.ImageCollection.fromImages(
  years.map(function (y) {
    return months.map(function(m) {
    return dataset.filter(ee.Filter.calendarRange(y,y, 'year')).filter(ee.Filter.calendarRange(m, m, 'month')).max().set('year', y).set('month', m).set('system:time_start', ee.Date.fromYMD(y, m, 1));
    });
  }).flatten()
);
Map.addLayer(monthly_max.mean().clip(table), ndviVis, 'yearly_mean');
print('全年月最大值时间序列',ui.Chart.image.series(monthly_max, table, ee.Reducer.mean(), 250));

// 输出每月合成的NDVI最大值
monthly_max
  .aggregate_array('month')
  .evaluate(function (months) {
    months.forEach(function (month) {
      var image = monthly_max
        .filterMetadata('month', 'equals', month)
        .first()
      var description = 'NDVI_max-'+ '2000_' + month
      Export.image.toDrive({
        image: image,
        description: description,
        folder:"monthly_max",
        scale: 250,
        crs: "EPSG:4326",
        maxPixels: 3784216672400,
        region: table,
      });      
    })
})

var NDVImean = ee.Number(monthly_max.mean().reduceRegion({
reducer: ee.Reducer.mean(),
geometry: table,
scale: 250,
maxPixels: 4e9
}).values().get(0));
print('NDVImean',NDVImean);
//将全年月最大值的平均值结果导出
Export.image.toDrive({
  image: monthly_max.mean(),
  description: '2000_yearly_mean',
  folder: 'AVHRR_NDVI',
  crs: 'EPSG:4326',
  fileFormat:'GeoTIFF',
  region: table,
  scale: 250,
  maxPixels: 1e13,
})

三、按年下载后批量点击RUN代码(这里是借鉴的:生态笔记博主的程序Google Earth Engine(GEE)批量下载代码(以MODIS NDVI数据为例)_生态笔记的博客-CSDN博客_gee批量下载

在所有任务窗口弹出后(即run窗口全部弹出),按F12进入控制台,然后将这些脚本粘贴到控制台,然后按ENTER键即可。

function runTaskList() {
    var runButtons = document.querySelector('#task-pane').shadowRoot.querySelectorAll(".run-button")
     runButtons.forEach(function(e) {e.click()})
}
runTaskList()
setTimeout(
    function(){
       var taskDialog = document.querySelectorAll("ee-image-config-dialog") //table的话-image-改成-table-
        taskDialog.forEach(function(e) {e.shadowRoot.querySelector("ee-dialog").shadowRoot.querySelector("paper-dialog").querySelector(".ok-button").click()})
 },5 * 1000 );

  • 9
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
以下是使用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值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值