搞了一下午,TMD没成功,靠,穷则思辨,还是老老实实写循环吧
任务来源背景:需要下载某位大佬生产的LAI/FPAR数据,且数据都在GEE上,数据量达到约4500张tif,要是单点run就太呆了。
解决方案:
- 问题查看:光是一个ImageCollection就达1052幅影像,但是GEE不提供下载影像集合Imageollection的函数。但是网上有调用的接口,我们把接口加载进去
-
var batch = require('users/fitoprincipe/geetools:batch')
这个接口函数一共提供两种批量下载方式,第一种是导出到Assets,第二种是导出到Drive里面。因为这个数据我们需要本地处理,我们使用第二种方式。
具体用法为:
batch.Download.ImageCollection.toDrive(collection, folder, options)
其中,collection是你需要导出的影像集合名称, folder是你导出到drive的文件夹名称, options是你需要设置的参数(scale、region、单张影像name、maxPixels以及数据类型等)。例如:
//COLLECTION导出 batch.Download.ImageCollection.toDrive(l8,"2019landsat", { scale: 30, type:"int16" })
now,U Task窗口就出现了很多run的按钮!
-
至此,上面是批量下载ImageCollection的方法,但需要单点run,引入浏览器的代码:
-
批量执行GEE导出任务:首先,您需要生成“”导出任务”(全部在task中显示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 );