科研笔记——利用Python批量下载GLDAS数据
记录一下此次下载GLDAS的过程:
首先进入NASA网站,以GLDAS NOAH 2.1为例(https://disc.gsfc.nasa.gov/datasets/GLDAS_NOAH10_M_2.1/summary?keywords=GLDAS_NOAH10_M_2.1)。选择Subset/Get Data,根据出来的小窗口选择你要的variable,然后会出来一个Download Link List,直接下载会获得一个txt文档(我这里是subset_GLDAS_NOAH10_M_2.1_20230228_041941_.txt)。

在编写Python代码之前,需要创建一个密匙文档(.netrc)。可以按照官网的指导进行,这里需要注意的是machine urs.earthdata.nasa.gov login <uid> password <password>,填写账号和密码时没有<>符号,另外,次密匙文档需要放在C:\Users\user这个文件夹里(以Windows为例)。

之后就可以Python 步骤了,如果没有Requests库,要先安装一下。安装之后就可以编写程序了,程序如下:
import re
import requests
GLDAS_urls_txt = 'H:/GLDAS/NOAH/subset_GLDAS_NOAH10_M_2.1_20230228_041941_.txt'#这里注意把第一行的说明文件下降链接删了,我这里是保存在H盘,这里可以任意选择
with open(GLDAS_urls_txt, 'r', encoding='utf-8') as infile:# 打开网址文本文档
urls=infile.readlines()
n_urls = len(urls)
for i, url in enumerate(urls):
URL1=urls[i]
print(URL1)
FILENAME = re.findall(r'(?<=&LABEL=)\S{38}', URL1)#数字代表文件名的字符个数,选取下载网址lable后38位字符,例如第一个为GLDAS_NOAH10_M.A200001.021.nc4.SUB.nc4
print(FILENAME)
outpath = 'H:/GLDAS/NOAH/'+FILENAME[0]
result = requests.get(URL1)
try:
result.raise_for_status()
f = open(outpath, 'wb')
f.write(result.content)
f.close()
print('contents of URL written to ' + FILENAME[0])
except:
print('requests.get() returned an error code ' + str(result.status_code)
把以上程序保存为py文件,然后直接运行,就可以下载文件了。
