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

下载数据前准备工作:gee批量下载影像前,需要有谷歌邮箱,再通过谷歌邮箱注册gee账号,且在下载影像的过程中需要科学上网。

—、下载的代码:

需要修改的地方:1、自己的研究区。2、分辨率。3、传感器的名字(传感器要和分辨率对应)。

var roi = ee.FeatureCollection("users/shaoguo044/b").geometry(); //("users/....")更改shp文件路径,shp文件需要是zip格式,然后上传。

//批量下载函数
function exportImage(image, roi, fileName) {
    Export.image.toDrive({
       image: image,
       description: "Drive-image-"+fileName,
       fileNamePrefix: fileName+'_NDVI',  //文件命名
       folder: "MODIS_NDVI",  //保存的文件夹
       scale: 250,  //分辨率
       region: roi,  //研究区
       maxPixels: 1e13,  //最大像元素,默认就好
       crs: "EPSG:4326"  //设置投影
   });
 }

//加载数据集
var data = ee.ImageCollection("MODIS/006/MOD13Q1");  //这里以MODIS NDVI 数据为例
Map.centerObject(roi, 4);  //图层显示

//筛选数据
var data_selected = data.filterBounds(roi)
               .filterDate("2021-1-1", "2021-12-31")
               .select('NDVI'); //选择波段
print("data_selected", data_selected);

//生成列表,迭代下载
var indexList = data_selected.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 = data_selected.filter(ee.Filter.eq("system:index", indexs[i]))
              .first()
              .select('NDVI')
              .toInt16()  //设置数据类型
              .clip (roi);   //裁剪数据
        exportImage(image, roi, indexs[i]);  //保存图像至Google网盘
   }
 });

二、批量点击RUN的代码:
在所有任务窗口弹出后(即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
    点赞
  • 110
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
以下是使用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值。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

生态笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值