科研筆記——利用Python批量下載GLDAS數(shù)據(jù)
記錄一下此次下載GLDAS的過程:
首先進(jìn)入NASA網(wǎng)站,以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,根據(jù)出來的小窗口選擇你要的variable,然后會出來一個(gè)Download Link List,直接下載會獲得一個(gè)txt文檔(我這里是subset_GLDAS_NOAH10_M_2.1_20230228_041941_.txt)。

在編寫Python代碼之前,需要?jiǎng)?chuàng)建一個(gè)密匙文檔(.netrc)??梢园凑展倬W(wǎng)的指導(dǎo)進(jìn)行,這里需要注意的是machine urs.earthdata.nasa.gov login <uid> password <password>,填寫賬號和密碼時(shí)沒有<>符號,另外,次密匙文檔需要放在C:\Users\user這個(gè)文件夾里(以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:# 打開網(wǎng)址文本文檔
? ? 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)#數(shù)字代表文件名的字符個(gè)數(shù),選取下載網(wǎng)址lable后38位字符,例如第一個(gè)為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文件,然后直接運(yùn)行,就可以下載文件了。
