說明
- 關于應用cdsapi工具利用python下載ERA5資料的方法在如下網頁有了介紹放航,但是其內容稍有不太明確的地方卖毁,https://blog.csdn.net/u011620268/article/details/97560996
- 我重新補充一下处坪,整理如下
1. 注冊賬戶獲得key横蜒。
網址:
https://cds.climate.copernicus.eu/#!/home
將url和key先存儲在txt文件中探橱,
- 文件名(須注意在字符串前面有個.): .cdsapirc
- 文件位置:C:\Users[name],這里[name]是你的電腦的名字焙贷,例如C:\Users\zhzh
- 文件內容:
URL一行是固定的內容, 第二行中包括兩個部分的信息贿堰,其中UID和APIKey在賬號登錄后可以找到
2. 安裝cdsapi
-
可以直接運行cmd盈厘,在命令行里輸入pip install cdsapi,運行之后即可
-
設置
如果建立的文件夾為ERA5_dl作為程序的工程位置官边,在pycharm運行環(huán)境中File>settings>Project:ERA_dl
點+號添加cdsapi
3. 下載數據
[以下內容來自網絡沸手,暫時還沒有測試。注簿。契吉。2019-09-23]
#!/usr/bin/env python
import cdsapi
c = cdsapi.Client()
c.retrieve(
'reanalysis-era5-single-levels',
{
'product_type':'reanalysis',
'variable':[
'total_column_ozone','total_column_water_vapour'
],
'year':'2019',
'month':'01',
'day':'23',
'time':[
'00:00','01:00','02:00',
'03:00','04:00','05:00',
'06:00','07:00','08:00',
'09:00','10:00','11:00',
'12:00','13:00','14:00',
'15:00','16:00','17:00',
'18:00','19:00','20:00',
'21:00','22:00','23:00'
],
'format':'netcdf'
},
'download.nc')
這里只能下載單一時間,而且數據名為 ‘download.nc’诡渴。
我希望將我想下載的時間存入txt(時間文件inputpar.txt)捐晶,直接批量下載,數據存儲形式改為CDS+時間妄辩,代碼如下:
# author = yc
import cdsapi
def download_cds():
c = cdsapi.Client()
lines = open("inputpar.txt", 'r').readlines()
for i in range(len(lines)):
if i%2==0:
fields = lines[i].split(' ') #split data
year = fields[0]
month = fields[1]
day = fields[2]
print('Download %s-%s-%s data'% (year,month,day))
c.retrieve(
'reanalysis-era5-single-levels',
{
'product_type': 'reanalysis',
'variable': [
'total_column_ozone',
'total_column_water_vapour'
],
'year': year,
'month': month,
'day': day,
'time': [
'00:00', '01:00', '02:00',
'03:00', '04:00', '05:00',
'06:00', '07:00', '08:00',
'09:00', '10:00', '11:00',
'12:00', '13:00', '14:00',
'15:00', '16:00', '17:00',
'18:00', '19:00', '20:00',
'21:00', '22:00', '23:00'
],
'format': 'netcdf'
},
'CDS%s%s%s'% (year,month,day)+'.nc')
print('Datafile CDS%s%s%s'% (year,month,day)+'.nc download successful')
else:
pass
if __name__ == '__main__':
download_cds()