Google earth engine 批量下载

一、问题背景

当我们在Tasks面板中下载数据时,需要挨个点击【RUN】按钮进行下载,当条目很多时,挨个下载的话就很费事费时,为此实现批量下载方法。

二、技术思路

按照挨个下载的思路,我们首先点击【RUN】,在弹窗中继续点击【RUN】按钮即可完成下载,按照这个思路,我们只需要找到这个按钮,让其自动点击,即可完成自动化下载

 由于是在浏览器中操作,那我们可以在控制台中,用代码直接操作DOM,实现模拟点击。我们只需要解决怎么找到网页中的【RUN】按钮和执行点击事件,步骤如下:

(1)从DOM中获取【RUN】元素

(2)执行点击事件click

三、实现方法

实现打开控制台,我用的是谷歌浏览器,可以用快捷键shift + ctrl + i 开素打开,也可以点击鼠标右键找到“检查”选项进入控制台。

在控制台是可以直接使用Javascript代码

通过这个思路我们可以通过代码找到【RUN】按钮,给予选择器实现,我们查看Elements,通过查找发现【RUN】按钮都在id为task-pane的面板中,而【RUN】的Class为“run-button”,根据这两个属性我们可以定位到所有的【RUN】按钮。

在控制台数据JS代码。得到以下结果

document.getElementById("task-pane").shadowRoot.querySelectorAll(".run-button");

让其执行点击,运行如下代码,会发现已经点击了【RUN】并且弹出n个窗口

let runBtns = document.getElementById("task-pane").shadowRoot.querySelectorAll(".run-button");

for(let i=0; i<runBtns.length; i++)
{
    runBtns[i].click();
}

下一步,我们在执行弹窗里的【RUN】,运用如上同样方法,找到弹窗里的【RUN】按钮,然后执行

let taskDialog = document.querySelectorAll("ee-image-config-dialog");

for(let i=0; i<taskDialog.length; i++)
{
    taskDialog[i].shadowRoot.querySelector("ee-dialog").shadowRoot.querySelector("paper-dialog").querySelector(".ok-button").click();
}

三、完整代码

当我们运行完成自己的代码后运行出结果后,打开控制台,直接输入以下代码即可。

let runBtns = document.getElementById("task-pane").shadowRoot.querySelectorAll(".run-button");

for(let i=0; i<runBtns.length; i++)
{
    runBtns[i].click();
}

执行完以上代码,出现弹出

let taskDialog = document.querySelectorAll("ee-image-config-dialog");

for(let i=0; i<taskDialog.length; i++)
{
    taskDialog[i].shadowRoot.querySelector("ee-dialog").shadowRoot.querySelector("paper-dialog").querySelector(".ok-button").click();
}

执行完以上代码,即可批量下载,你需要做的事情就是【等待~~~~】

猜你喜欢

转载自blog.csdn.net/weixin_43532890/article/details/121766288