GPM数据批量下载教程

2022年11月12日更新

1. GPM数据产品简介

此部分摘录自 气象周刊 公众号

2014年2月27日,NASA的全球降水测量实验利用卫星观测可以提供比TRMM卫星数据空间分辨率更高,并且覆盖全球的降水观测资料。例如,GPM卫星上加上了一个新的ka波段的降水雷达以及一个高频微波仪,可以提高对小雨以及降雪的观测。除此以外,GPM的综合多卫星反演可以显著提高其时空分辨率、空间覆盖等。

GPM的数据产品主要分为三: Level-1, Level-2和Level-3。Level-1就是卫星上各观测仪器的基数据。

Level-1还分为Level-1A,Level-1B和Level-1C。Level-1A是指探测仪器直接接收的信号,例如雷达接收到的波能量。Level-1B是将Level-1A收集的信号转化成各类探测变量的单位,例如雷达反射率。Level-1C是针对微波仪的亮温观测,去除掉各个传感器以及多卫星降水反演算法之间的系统误差。Level-1中的基数据包含了各个观测仪器的原始分辨率,可以用来进行特定的算法计算以及其他用途。也就是说,只要有方法,想干什么干什么,但是很难。

Level-2中的数据是以Level-1的基数据为基础,在相同的分辨率和位置上导出的地球物理变量,例如ku波长的雷达反演的降水以及雷达与微波成像仪合成的降水等。Level-2的降水资料可以用来进行个例分析,地面降水验证以及模式验证等。大家可以赶紧开始对比验证啊!仿佛看到文章雨正在倾盆而下。

Level-3中的数据则是又在Level-2的基础上插值到固定时间、空间分辨率的格点上,比较完整并且具有较高的一致性。主要提供半小时降水、日降水以及月平均降水的格点资料。半小时降水利用多卫星降水反演获得,日降水是综合了微波成像仪以及多频率降水雷达,月平均降水则包含了以上所有。使用最广泛的数据是多卫星、多传感器以及多算法的GPM综合反演产品(IMERG),包括Early,Late和Final Run产品。这三者的区别在于发布时间。Early Run表示获得观测数据后6h发布,Late和Final Run分别在18小时以及4个月后发布。Early和Late Run的IMERG产品主要是几乎实时的观测,并且用气候站进行检验校准。Final Run则是利用全球降水气候中心的月平均站点资料进行误差订正。他们的空间分辨率是0.1°,时间分辨率是半小时,都比TRMM降水观测有大大的提高。高时空分辨率的降水观测资料对于降水时间以及业务预报都具有相当重大的意义。月平均资料则可以用来加深对全球降水观测不确定性的理解。

2 查找数据

可以在GES DISC查找下载数据:https://disc.gsfc.nasa.gov/datasets?keywords=GPM&page=1

现在GPM官网上线了许多数据。为了快速定位,我们可以使用分辨率进行筛选,快速定位数据。

在这里插入图片描述

选择需要的时间和空间分辨率数据集,点击Subset/Get Data
在这里插入图片描述
选择想要的时间范围、空间范围(西,南,东,北)、变量、输出文件的格式等,并点击右下角的Get Data获取数据
在这里插入图片描述
在这里插入图片描述
在弹出的界面,点击Download links list下载包含影像的 url 文件。
在这里插入图片描述

3. 下载

注意:
本文使用的是Python脚本,来批量下载文件。如果使用本文的下载方式,请先下载Python3.6以上的版本,并使用pip安装data_downloader包:

pip install data_downloader

如果之前安装过此包,需要更新到最新版:

pip install --upgrade data-downloader

3.1. 授权

下载GPM数据需要NASA的账户与密码,如果没有请先在NASA官网注册一个。

注意:

GPM使用NASA账号需要授权, 请按照官方教程进行授权:https://disc.gsfc.nasa.gov/earthdata-login

3.1.1 通过 .netrc 文件授权

.netrc 文件可以保存网站的帐号密码信息,当程序下载时,会自动读取对应网站的帐号密码,无须用户反复输入。

.netrc 文件中的账号密码信息可以通过如下方式写入:

将下面代码中的your_usernameyour_password,改为自己在NASA注册的用户名与密码,并复制到Python编辑器中执行。

from data_downloader import downloader

netrc = downloader.Netrc()
netrc.add('urs.earthdata.nasa.gov','your_username','your_password')

执行后会在用户目录创建一个.netrc文件,当下载需要帐号密码的时候,会读取此文件。

如果账号或密码输入错误,执行以下代码进行更新:

netrc.add('urs.earthdata.nasa.gov','your_username','your_password',overwrite=True)
3.1.2 *通过浏览器授权(通过 .netrc 文件授权现在已经可以正常工作,不建议使用此方法)

打开下载的包含所有url的文件,随便复制一条(从第三条开始,第一,二条是说明文档),粘贴在浏览器中,回车后输入用户名和密码进行登陆授权。在下载代码中将参数 authorize_from_browser 设置为 True,程序即可加载浏览器中的cookies,得到网站授权,从而可以正常下载。

目前支持的浏览器有:Chrome,Firefox, Opera, Edge, Chromium。请使用此中的某一个浏览器进行登陆。

注意:

在浏览器登陆后,最好不要关闭浏览器。关闭后有可能清除浏览器cookies,导致无法授权。

3.2. 批量下载

创建一个Python文件,复制下面代码,并根据自己情况改变folder_out url_file 路径,执行即可批量下载。

  1. 可以通过改变folder_out url_file 路径,来改变文件下载目录与包含url的文件路径
  2. 本脚本会自动跳过已下载的文件,并且支持断点续传(仅全球范围,即下载方式1支持此功能)。如果下载中断,个别文件下载不完整,重新执行本脚本即可。如果脚本提示无法从网站获取到文件大小信息(opendap,下载方式2会有这种情况),则需要自行判断文件是否下载完整,并手动删除下载不完整的文件。
#!/usr/bin/env python3
"""
Created on Thu Feb 27 13:49:03 2020

@author: Chengyan Fan
"""
from data_downloader import downloader, parse_urls

####################################################################################################
#  在此修改输入输出文件路径
#########################

# 文件输出目录
folder_out = r'/media/fanchy/新加卷/dem_temp/test'
# 包含url的文件路径
url_file = r"/media/fanchy/新加卷/dem_temp/test/subset_GPM_3IMERGM_06_20200513_134318.txt"
####################################################################################################
    
urls = parse_urls.from_urls_file(url_file)
downloader.download_datas(urls, folder_out)
# 通过浏览器方法
# downloader.download_datas(urls, folder_out, authorize_from_browser=True)

使用matlab批量下载网站上的文件-MatlabUrlDownloadToFile.m 前几天美国数学建模成绩出了,我们按照网址下载了自己的证书,另外想看看学校今年的获奖情况,由于学校的参赛队伍数众多,一个一个下载证书再统计显得麻烦,于是想自己用matlab开发一个小程序以实现同类型文件的批量下载。很多网站上有介绍使用Windows API 函数URLDownloadToFile,但是这个在VC上实现容易,要把它移植到matlab上还得使用MEX,有点麻烦了。这几天一直徘徊个大小网站,没有找到相关信息。最后还是自己使用lookfor找到需要的函UrlWrite,调用这个函数轻松搞定批量下载! 以下是代码: %使用matlab下载网站上的文件 %使用urlwrite函数下载网站上的文件 %特别适用于批量下载同类型的文件 % Created by longwen36 2011-4-16 %使用urlwrite实现批量下载 %以下载2011美赛数模证书为例 clc,clear; num = 11701:11710; URLs = cell); folder_filenames = cell); filenames = cell); for idx  = 1:length;     URLs{idx} = sprintf);     filenames{idx} = sprintf); end tic; for idx = 1:length;     fprintf;     [f, status] = urlwrite;     if status == 1;         fprintf;     else         fprintf;     end     end etime = toc; fprintf,etime); 复制代码 下载速度还挺快的,才发现,matlab功能确实很强大,函数很齐全。利用这个函数,加以改进,编写GUI,就可以做个简易的批量下载器了! 感兴趣的同仁可以试试!
评论 97
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沉研

你的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值