数据下载 | NCEP再分析数据自动批量下载

2021-07-01 15:54:03 浏览数 (1)

NCEP再分析资料

NCEP/NCAR再分析数据集是由美国气象环境预报中心(NCEP)和美国国家大气研究中心(NCAR)联合制作的,他们采用了当今最先进的全球资料同化系统和完善的数据库。 对各种来源(地面、船舶、无线电探空、测风气球、飞机、卫星等)的观测资料进行质量控制和同化处理,获得了一套完整的再分析资料集,它不仅包含的要素多,范围广,而且延伸的时段长,是一个综合的数据集。

数据介绍

数据下载自NCAR:https://rda.ucar.edu/ 需要自行注册账户,最好是edu结尾的邮箱。

NCEP的FNL资料:http://rda.ucar.edu/data/ds083.2 空间分辨率:1°×1° 时间分辨率:逐6小时

批量下载数据

代码语言:javascript复制
import requests
import datetime

# 定义登录函数
def builtSession():
    email = "xxxxxxxx"    #此处改为注册邮箱
    passwd = "xxxxxxxx"   #此处为登陆密码
    loginurl = "https://rda.ucar.edu/cgi-bin/login"
    params = {"email":email, "password":passwd, "action":"login"}
    sess = requests.session()
    sess.post(loginurl,data=params)
    return sess

# 定义下载函数
def download(sess, dt):
    g1 = datetime.datetime(1999,7,30,18)
    g2 = datetime.datetime(2007,12,6,12)
    if dt >= g2:
        suffix = "grib2"
    elif dt >= g1 and dt <g2:
        suffix = "grib1"
    else:
        raise StandardError("DateTime excess limit")
    url = "http://rda.ucar.edu/data/ds083.2"
    folder = "{}/{}/{}.{:0>2d}".format(suffix, dt.year, dt.year, dt.month)
    filename = "fnl_{}.{}".format(dt.strftime('%Y%m%d_%H_00'), suffix)
    fullurl = "/".join([url, folder, filename])
    r = sess.get(fullurl)
    with open(filename, "wb") as fw:
        fw.write(r.content)
    print(filename   " downloaded")
    
# 批量下载    
if __name__ == '__main__':
    print("downloading...")
    s = builtSession()
    for i in range(2):    #共下载多少个时次
        startdt = datetime.datetime(2021, 1, 1, 0)  #开始时次
        interval = datetime.timedelta(hours = i * 6)
        dt =startdt   interval
        download(s,dt)
    print("download completed!")
代码语言:javascript复制
downloading...
fnl_20210101_00_00.grib2 downloaded
fnl_20210101_06_00.grib2 downloaded
download completed!

读取示例数据

代码语言:javascript复制
import xarray as xr
ds = xr.open_dataset('./fnl_20210101_00_00.grib2',engine='pynio')
代码语言:javascript复制
ds.TMP_P0_L1_GLL0.plot()

0 人点赞