一、CRU数据下载
CRU数据官网 官网链接CRU数据下载链接
我下载的是CRU TS v.4.03的数据,该数据覆盖全球陆地范围,各参数每月得一个平均值。
点击Local Copy进入数据下载界面。如果没有接触过CRU TS v.4.03数据的小伙伴可以先阅读下说明文档,之后点击红框中的链接进行感兴趣参数的下载。
各参数的详细说明和单位如下图所示:
二、ERA-Interim数据下载
1. ERA-Interim数据逐月下载
ERA-Interim数据逐月下载 点击链接进入后界面如下,可根据需求选择要下载的年份、月份和相关变量。
如选择下载2019年8月的地表温度,每天选择4个时刻,step=0。选择完成后点击“Retrieve NetCDF”可查看所选参数的详细信息。
同时可在Area中更改要下载数据的覆盖区域,默认是全球;在Grid中可选择数据下载的格网大小,默认是0.75*0.75。
点击“Retrieve Now”可进入下一步
点击“Download”,至此,逐月下载ERA-Interim数据完成。
2. 利用python代码下载ERA-Interim数据
有的时候逐月下载数据可能不能满足大家的需求,可考虑通过python代码来实现。官网提供的python下载教程 需要安装ecmwfapi第三方包下载链接 如下是Python 下载ERA-Interim数据的样例,只需要简单更改参数就可以使用。
from ecmwfapi import ECMWFDataServer
server = ECMWFDataServer()
server.retrieve({
'stream' : "oper",
'levtype' : "sfc",
# 参数选择:降水228
'param' : "228.128",
'dataset' : "interim",
'step' : "3/6/9/12",
'grid' : "0.75/0.75",
'time' : "00/12",
'date' : "20190101/to/20190831",
'type' : "fc",
'class' : "ei",
'format' : "netcdf",
'target' : "D:\\DATA\\interim_20190101to20190831_pre.nc"
})
通常这样操作之后就可以完成ERA-Interim数据的批量下载,但我下载的时候总会报这个错误;error contacting the webapi, retrying in 60 seconds
查了很久发现是因为缺少一个SSL证书,证书下载链接及添加流程如下图。
3. ERA-Interim中相关变量的解释
1.对于time和step的解释
2.ERA-Interim中相关参数的说明
同样,从手动下载逐月参数的数据描述这里,也可以看参数的相关取值。
需要注意的一点是,如果分析中既用到降水数据,也用到气温数据,class最好选择“fc”,这样两个数据是由一套算法计算得到。
4. 利用python代码批量下载ERA-Interim数据
如果直接用代码连续下载很多年的数据并保存在一个NC文件中,很可能由于网速不稳定等原因造成数据下载不完整,所以我通常是逐年下载并保存成一个NC文件,代码如下:
import datetime
import os
#下载ERA数据
def downECMWFdata(outpath):
from ecmwfapi import ECMWFDataServer
server = ECMWFDataServer()
startdate = datetime.datetime.today() # 用于生成一个datetime.datetime类型的数据,下同
enddate = datetime.datetime.today()
startdate = startdate.replace(year=2000, month=1, day=1, hour=0, minute=0, second=0, microsecond=0)
enddate = enddate.replace(year=2012, month=12, day=31, hour=0, minute=0, second=0, microsecond=0)
savepath = outpath + os.sep + "interim_%s_tmp.nc"
tmpdate = startdate # 将日期变为当月的第一天
while tmpdate <= enddate:
print(tmpdate)
deltadays = GetDayNum(tmpdate.year) - 1
#datetme.delta() 用来计算第二个对象(tmpenddate)和第一个对象(tmpdate)之间的插值
tmpenddate = tmpdate + datetime.timedelta(days=deltadays) # 根据天数算出年末时间
datestring = tmpdate.strftime("%Y%m%d") + '/to/' + tmpenddate.strftime("%Y%m%d")
print (datestring)
# 输出效果:D:\data\interim_20191001to20191006_tmp.nc
tmpsavepath = savepath % (datestring.replace('/to/', 'to'))
if os.path.exists(tmpsavepath): # 如果系统中有这个文件夹说明已经下载了,继续直到没有
tmpdate = tmpenddate + datetime.timedelta(days=1)
continue
server.retrieve({
"class" : "ei",
"dataset": "interim",
"date" : datestring,
"expver" : "1",
"grid" : "0.75/0.75",
"levtype": "sfc",
# 参数选择:气温167
"param" : "167.128/201.128/202.128",
"step" : "3/6/9/12",
"stream" : "oper",
"time" : "00:00:00/12:00:00",
"type" : "fc",
"format" : "netcdf",
"target" : tmpsavepath,
})
tmpdate = tmpenddate + datetime.timedelta(days=1)
def GetDayNum(year):
# 判断是否为闰年
if year % 400 == 0 or (year % 4 == 0 and year % 100 != 0):
return 366
else:
return 365
if __name__ == '__main__':
path = r'D:\DATA'
downECMWFdata(path)
三、NCEP-2数据下载
NCEP-2数据下载官网 同样下载的是逐日的地表气温和降水数据。两种方式查找所需的数据。
- 第一种方式如下图:
首先选择高斯网格数据
点击进入后可查看该数据的时间尺度、空间覆盖范围以及更新频率等参数。
之后选择感兴趣的数据点击“see list”进行逐年数据的下载即可,如对于每日的地表温度数据(说明:NCEP-2中每日数据包含4个时刻,从0时开始,每6小时一个)。另外,对于感兴趣的数据可先通过列表右侧的Create plot,先进行绘图,查看是否是需要的数据。
2.第二种方式:
通过图片红框的链接,可直接查找感兴趣的参数,以每日地表温度为例,流程如下:
综上,就是三种全球尺度常用气象数据的下载流程。分享给大家,希望对大家有帮助,有不足或不正确的地方也欢迎大家补充指正。