麻辣GIS微信平台

更多 GIS 干货

微信关注不错过

使用JavaScript脚本批量下载AirSAR数据

最近一个阿里的抢月饼事件将JavaScript脚本这种东西推上了风口浪尖,其实JS脚本是浏览器赋予我们每一个用户的一项“权利”,利用它可以很大程度上将我们从复杂的重复性工作中解放出来。你看,本文用8行JS脚本实现批量下载AirSAR数据的功能。

关于AirSAR数据

AirSAR是比较早期的机载SAR成像数据(1985年),具有P、L和C三个波段的全极化成像能力,许多关于SAR理论的研究中都用到了AirSAR数据。即使在目前,AirSAR仍有多方面的用途。

数据下载分析

首先我们看AirSAR数据的下载地址:https://airsar.asf.alaska.edu/data/cm/(小编注:这里下载的cm的数据,也就是常用的极化SAR数据),通过分析我们可以得出这样的目录结构:

cm1230
  --cm1230.gif
  --cm1230_3_Frequency_Polarimetry.zip  
  --cm1230_c.dat                        
  --cm1230_l.dat                        
  --cm1230_meta.airsar                  
  --cm1230_meta.podaac                   
  --cm1230_p.dat         

通过观察可以发现.gif是快视图,.zip包含的所有文件(包含快视图和数据及说明文件),.dat分别为P、L、C三个波段的数据成像文件,meta.xxxx为说明文件。所以我们的目标很明确,就是下载所有cmXXXXX目录下的cmXXXX_3_Frequency_Polarimetry.zip文件。

如果按照常规的思路会怎么做?打开一个目录,找到zip文件,右键--另存为;再打开一个目录....;再打开一个...

这当然不是一个好方法,许多同学喜欢使用迅雷等下载工具,它有一个功能是下载本页所有链接;这是一个思路,但是我们的链接显然不在一个页面上,那怎么办?我们可以使用脚本将它变成一个页面上(小编注:下载数据前需要在asf.alaska.edu中注册用户哦。)

实现脚本

下面是我写的脚本:

var allAtags = document.querySelectorAll('a');
var reg = /cm+[0-9]/;
[].forEach.call(allAtags, function(a) {
  if (reg.test(a.href)) {
    var dataName = a.innerText.split('/')[0];
    a.href = a.href + dataName + '_3_Frequency_Polarimetry.zip';
  }
});

脚本很简单,只用8行。简单解释一下,allAtags 变量用于获取所有页面的 a 标签;然后使用 forEach 方法对所有的 a 标签进行遍历,如果链接中有cm+数字的组合,就说明是我们要下载数据的链接(主要用过过滤几个无关链接),最后将拼接好的地址覆盖原来的地址(href)。

执行脚本

道理我都懂,可是怎么下载数据?莫急。

使用现代化的浏览器(Chrome/Firefox)打开数据下载页面(https://airsar.asf.alaska.edu/data/cm/),按 F12 进入 控制台,将代码粘贴到控制台中即会自动执行,如图:

好像没什么变化对么?这时候使用迅雷或者FireFox的DownThemAll插件(这个强烈推荐),下载本页的所有链接,就可以将所有的AirSAR数据下载下来了。

后记

下载数据前请务必在asf.alaska.edu中注册账号,没账号是无法下载的,这也是推荐使用DownThemAll的原因。

相关阅读

麻辣GIS-Sailor

作者:

GIS爱好者,学GIS,更爱玩GIS。

声明

1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。

2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。

手机阅读
公众号关注
知识星球
手机阅读
麻辣GIS微信公众号关注
最新GIS干货
关注麻辣GIS知识星球
私享圈子

仅有一条评论

  1. 麻辣GIS-RGB 3S博客
    1#
    RGB 3S博客  · 2016-12-02 19:59

    学习,受教。

留言板(小编看到第一时间回复)