【Wget、MATLAB】关于批量下载GPM IMERG数据的保姆级教程(20210129)(20210214更新)


首先感谢 1. 批量下载GPM数据 by wangsy~这位大佬的文章,给我提供了很多帮助。
最终我是在GES DISC下载的数据,不过后来我写的时候又试了NASA又能用了。
这里就写一点大佬没提到的,顺便记录一下。
(PS:总之就是非常难下555~)

一、找到GPM数据

(一)NASA

页面变化成了下面这样:link
在这里插入图片描述
我要下载的是IMERG的降水数据,所以是LEVEL 3的Final Run,直接拉到中间的地方(如果没加载出来就等一下或者刷新几次)。

选择被红框框起的链接点进去(需要登陆NASA账号验证身份)。
在这里插入图片描述
在这里插入图片描述
验证邮箱:
在这里插入图片描述
然后会出现下面的部分
在这里插入图片描述
选择你需要的数据,起止时间,文件格式,下载方法
在这里插入图片描述
在这里插入图片描述
点击之后出现:
注意:点击总共两次,第一次出现提醒并给你发第一封邮件,需要你点击确认链接,然后再点一次submit request,会收到一封带附件的邮件,附件里是下载地址。
在这里插入图片描述

(二)GES DISC方法

官网链接:link
使用这个方法请注册NASA和GES DISC账号。

搜索IMERG,正好第一个就是我需要的,点击Subset/Get Data.在这里插入图片描述选择起止时间,格式,确定。
在这里插入图片描述
之后会生成下载地址,等到①处达到100%时,就可以点击③处下载文本文件(txt),里面是所有的下载链接。
②处是关于下载的一些提示。
在这里插入图片描述

二、下载数据

(一)Wget方法

要点如下:
1、wget使用一定要好好看说明,链接附上(建议使用chrome直接翻成中文)

(1)
如果使用wget,请安装符合gnuTLS 3.3.3或OpenSSL 1.0.2或LibreSSL 2.0.2或更高版本的wget 1.18。使用“ wget -V”命令验证wget版本。
如果使用curl,请安装符合gnuTLS 3.3.3或OpenSSL 1.0.2或LibreSSL 2.0.2或更高版本的curl 7.45。使用“ curl -V”命令验证curl版本。
(2)
要一次下载多个数据文件,请创建一个纯文本<url.txt>文件,每行包含一个GES DISC数据文件URL。然后,输入以下命令:

wget --load-cookies C:.urs_cookies --save-cookies C:.urs_cookies --auth-no-challenge=on --keep-session-cookies --user= --ask-password --content-disposition -i <url.txt>

这两段话非常重要
我个人是直接下载了wget1.18,并且采用了开头的链接中最后提到的命令(将ask-password改成了password=)
链接:
wget for Windows
How to resolve data download problems

2、记得在GES DISC里面添加Approved Applications。
①https://urs.earthdata.nasa.gov/users/<your_username>/authorized_apps
替换掉加粗字体,进入后操作如下图。这步不做无法下载(包括下面的matlab方法)。
在这里插入图片描述
如果网速实在不行/wget不好使,趁早放弃(比如我)。

(二)MATLAB方法【20210214有更新】

MATLAB websave批量下载(URL) by JontyHan
这位大佬写的很好,我就不多赘述了。最后我采用的就是这种方法。
修改的部分写下来供大家参考:
因为我的链接时这样的👇

而且想要保留整个名字,所以做了如下修改

filename = (['F:\Global_P_ET\GPM\GPM_3IMERGDF_v06_DAY_',url_total{i}(length(url_total{i})-31:length(url_total{i})-24),'.nc4']);

👇

filename=(['F:\IMERG-DATA\GPM IMERG Final Run (201901-202012)\2019\02\',url_total{i}(75:end)]);
    

————更新分割线————
因为程序总是在websave处断开,我又做了一点小修改
此外收到大家反馈说没有文件生成,研究了下发现应该是没有创建文件夹的原因,赶着三月的尾巴再来更新一下。
放上来供大家参考
声明:本代码是在MATLAB websave批量下载(URL) by JontyHan内提供的代码基础上进行修改的

clear 
close all;clc;
fclose all;

%{
% step1 读取txt中的NASA的Data File Links,批量下载GPM数据(用的时候把上一行的{删去)
url_total = textread('F:\IMERG-DATA\2020\10.txt','%s'); 
%}
%{
%step2 补齐第一次运行中下载失败的文件,如果本次之后还有,再进行一次(用的时候把上一行的{删去)
load GPM.mat
%}

username = '***';    %输入自己的注册账号和密码
password = '*****';
options = weboptions('HeaderFields',{'Authorizations',...
    ['Basic ' matlab.net.base64encode([username ':' password])]});
options.Timeout = 10;%指向 URL的连接在 5 秒后超时。请将 options.Timeout 设置为更大的值。
options.Username = username;
options.Password = password;

er=1;%本来该打error的,犯懒了
x=cell(er,1);
h = waitbar(0,'主人,我要开始工作了~');
for i = 1:length(url_total)
    url = url_total{i};
    day=[url_total{i}(102:103),'\'];
    month=[url_total{i}(100:101),'\'];
    if i>1%以下九行为创建文件夹代码(如果文件夹已存在,可能会发出【警告:目录已存在】,不用管)
        if strcmp(day,dayUsed)==0%检测日期有没有变化
            fileFolder=(['F:\IMERG-DATA\2020\',month,day]);
            mkdir(fileFolder);%变化了就创建新的文件夹
        end
    else
        fileFolder=(['F:\IMERG-DATA\2020\',month,day]);
        mkdir(fileFolder);%第一次运行时创建文件夹。
    end
    filename=(['F:\IMERG-DATA\2020\',month,day,url_total{i}(75:end)]);
    try%try内语句如果执行失败,则执行catch内的语句
        websave(filename,url,options);
        disp([url_total{i}(96:end),' has finished!'])
    catch
        x{er,1}=url_total{i};
        er=er+1;
    end
    s = ['主人,工作已进行 ',num2str(i/length(url_total)*100,'%.2f'),'%,请耐心些等待哦'];
    waitbar(i/length(url_total),h,s);   
    dayUsed=day;%上一轮的day
    monthUsed=month;%上一轮的month
end

clear url_total;
url_total=x;
save GPM.mat url_total%保存为.mat文件,然后进行step2,直到没有缺少的数据为止

close(h)

本文写于2021年1月25-29日,可供大家参考,欢迎多多交流~。

  • 7
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 27
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值