下载GPM卫星降水数据
全球卫星降水计划 (GPM) 是一项国际卫星任务,由NASA和JAXA合作开展,利用多传感器多卫星多算法结合卫星网络和雨量计反演得到更高精度的降水数据,其能够提供全球范围基于微波的3h以内以及基于微波红外的半小时的雨雪数据产品,范围延伸至南北极圈。
时间分辨率: 30 minutes, 1 day, 1 month
空间分辨率: 0.1°×0.1°(覆盖全球90°S-90°N)
时间跨度:2000/06/01 -至今
下载网址:https://disc.gsfc.nasa.gov/datasets?keywords=GPM&page=2
GPM的数据产品主要分为: Level-1, Level-2和Level-3。其中Level-1数据是卫星上观测仪器得到的基数据,Level-2的数据是以Level-1为基础在相同的分辨率和位置上处理导出的地球物理变量,Level-3的数据是在Level-2的基础上对固定时间和空间尺度进行插值,数据完整性和一致性较高,包括半小时降水、日降水以及月平均降水的格点资料。
IMERG (Integrated Multi-satellite Retrievals for GPM, GPM综合多卫星检索)是一种GPM生成三级产品的算法,它结合来自 GPM 中所有无源微波仪器的数据提供降雨估计。该算法旨在精细时间和空间尺度上对所有卫星微波降水估计值以及微波校准红外 (IR) 卫星估计值、降水量规分析以及可能的其他降水估计量进行相互校准、合并和插值。IMERG算法系统会运行多次,按时间顺序依次生成早期多卫星产品(Early)并用于起初的降水估计,发布时间为观测后4小时;后期多卫星产品(Later),发布时间为观测后12小时;终期多卫星产品(Final),发布时间为观测后约2.5个月,最近官网更新到了V07版本。
我们下载GPM降水数据的时候一个一个点太麻烦了,采用Python的代码下载方式,但代码也会遇到一个问题就是下载会被限制,识别为攻击导致断点。那么我们如何解决断点续传的问题呢?即如果下载断了就继续下,不用一个一个去点。
HTTPSConnectionPool(host=‘urs.earthdata.nasa.gov‘, port=443)
代码如下
from data_downloader import downloader, parse_urls
import os
import time
# 设置 Earthdata 登录凭据
netrc = downloader.Netrc()
netrc.add('urs.earthdata.nasa.gov', '账号***', '密码***', overwrite=True)
####################################################################################################
# 在此修改输入输出文件路径
#########################
# 文件输出目录
folder_out = r'I:/GPMglobaldata'
# 包含url的文件路径
url_file = r"I:/GPMglobaldata/subset_GPM_3IMERGDFglobaldata.txt"
####################################################################################################
# 从文件中读取URL
urls = parse_urls.from_urls_file(url_file)
# 自动重试下载的功能
max_retries = 10 # 最大重试次数
retry_delay = 30 # 重试延迟时间(秒)
def download_file(url, folder_out):
filename = os.path.join(folder_out, os.path.basename(url))
# 检查文件是否已部分或完全下载
if os.path.exists(filename):
print(f"文件已存在,跳过下载: {filename}")
return
try:
downloader.download_data(url, folder_out)
print(f"下载完成: {filename}")
except Exception as e:
print(f"下载失败: {e}")
raise # 抛出异常以便重试
# 下载每个URL
for url in urls:
for attempt in range(max_retries):
try:
download_file(url, folder_out)
break # 如果成功下载,跳出循环
except Exception as e:
print(f"下载失败: {e}")
if attempt < max_retries - 1:
print(f"等待 {retry_delay} 秒后重试 ({attempt + 1}/{max_retries})...")
time.sleep(retry_delay)
else:
print("达到最大重试次数,下载失败。")
参考文献
Huffman, G.J., E.F. Stocker, D.T. Bolvin, E.J. Nelkin, Jackson Tan (2019), GPM IMERG Final Precipitation L3 Half Hourly 0.1 degree × 0.1 degree V06, Greenbelt, MD, Goddard Earth Sciences Data and Information Services Center (GES DISC), Accessed: [Data Access Date], 10.5067/GPM/IMERG/3B-HH/06
He, K., Zhao, W., Brocca, L., and Quintana-Seguí, P.: SMPD: a soil moisture-based precipitation downscaling method for high-resolution daily satellite precipitation estimation, Hydrol. Earth Syst. Sci., 27, 169–190, https://doi.org/10.5194/hess-27-169-2023, 2023.
He, K., Chen, X., Liu, J., & Zhao, D. (2023). A multiple-step scheme for the improvement of satellite precipitation products over the Tibetan Plateau from multisource information. Science of The Total Environment, 873, 162378, https://doi.org/10.1016/j.scitotenv.2023.162378.