Google Earth Engine批量下载Sentinel、Landsat、MODIS遥感影像代码

Google Earth Engine批量下载Sentinel、Landsat、MODIS遥感影像代码

    • 一、创建下载任务
    • 二、运行下载任务

一、创建下载任务

Google Earth Engine(GEE)云平台不仅算力强大,其遥感数据源也及其丰富,用GEE下载遥感数据可以节省拼接、裁剪等操作时间,最近在网上看到有大神发过类似的代码,但复制过去运行代码有一些小问题,于是参考之前的代码自己修改了一下,代码如下:

//设置感兴趣区域roi
var roi = ee.FeatureCollection("users/hellotydee/Beijing")
Map.centerObject(roi, 7);  
Map.addLayer(roi, {color: "red"}, "roi");

//导出影像数据函数,三个参数
function exportImage(image, region, fileName) {  
   Export.image.toDrive({  
      image: image,  //设置要输出的影像
      description: "Drive-"+fileName,  // 设置下载任务tasks的名称
      fileNamePrefix: fileName,  //设置下载影像的名称
      //folder: "training01",  //设置下载影像在Drive中存储的文件夹名称(可不设置)
      scale: 30, //空间分辨率,单位:米
      region: region,  //要下载影像的范围
      maxPixels: 1e13, //单幅影像输出的最大像元数
      fileFormat:"GeoTIFF", //设置影像导出格式,注意GeoTIFF格式需要所有波段存储类型一致(如不能同时存Int16和Int32)
      crs: "EPSG:4326"  //投影信息,一般是采用默认方式,通常可以设置为EPSG:4326
  });  
} 
//选择要导出的数据类型
var selectCol = ee.ImageCollection("COPERNICUS/S2") //选择数据集
                  .filterBounds(roi) //区域筛选
                  .filterDate("2018-05-10","2018-10-30") //时间筛选
                  //.select("B.*") //选择影像波段(全下载可不设置),注意哨兵2号数据扩大了10000倍,转换成反射率要除以10000(此处没有除)
                  .limit(10) //限制影像数量(全下载可不设置)
print("selectCol", selectCol);

//获取每幅影像对应的时间
var indexList = selectCol.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 = selectCol.filter(ee.Filter.eq("system:index", indexs[i])) //筛选对应时间的影像
                           .first() //选取第一幅影像
                           .int16() //将所有波段存储格式都转换Int16,使其保持一致(哨兵2号数据QA20波段为Int32,与其他不一致会出错)
      exportImage(image, roi, "S2-"+indexs[i]); 
  }  
});  

二、运行下载任务

上述代码只是生成了导出遥感数据的任务列表,但是导出任务并没有执行,需要手动依次点击任务列表中的蓝色“RUN”按钮(图1)才能启动下载任务。但是,当批量下载任务比较多时,手动点击太麻烦,可以采用以下方法解决:
Google Earth Engine批量下载Sentinel、Landsat、MODIS遥感影像代码_第1张图片
批量执行RUN代码(来自大佬Kong)!!!

/ ** 

 批量执行GEE导出任务 
 首先,您需要生成导出任务。并显示了运行按钮。 
 然后按F12进入控制台,然后将这些脚本粘贴到其中,然后按 
 输入。所有任务都将自动启动。 
 (支持Firefox和Chrome。其他浏览器我没有测试过。) 
  
  @Author: 

 *Dongdong Kong,2017828日 

 中山大学 

 * / 
 function runTaskList() {
    var tasklist = document.getElementsByClassName('awaiting-user-config');
    for (var i = 0; i < tasklist.length; i++)
        tasklist[i].children[2].click();
}
function confirmAll() {
    var ok = document.getElementsByClassName('goog-buttonset-default goog-buttonset-action');
    for (var i = 0; i < ok.length; i++)
        ok[i].click();
}
runTaskList();
confirmAll();


批量取消RUN代码(使用方法同上),来自

https://blog.csdn.net/qq_21567935/article/details/89061114

function runTaskList() {
    var tasklist = document.getElementsByClassName('indicator');
    for (var i = 0; i < tasklist.length; i++)
        tasklist[i].click();
}
function confirmAll() {
    var ok = document.getElementsByClassName('goog-buttonset-default goog-buttonset-action');
    for (var i = 0; i < ok.length; i++)
        ok[i].click();
}
runTaskList();
confirmAll();

你可能感兴趣的:(Google,Earth,Engine,大数据)