【复制即用】下载ERA-5数据的python脚本分享
2023-02-25 18:16:46 时间
分享两个下载era5数据的脚本(根据实际仅需要改动时间、变量、气压层、时次即可使用),由中国科学技术大学-大气科学先进计算实验室提供。在使用之前,需要先配置CDS API,点击https://cds.climate.copernicus.eu/api-how-to即可跳转至配置教程。
下载高空
#!/usr/bin/python3
import cdsapi
import os
import pandas as pd
import numpy as np
c = cdsapi.Client()
var_list = ['geopotential', 'relative_humidity', 'temperature',
'u_component_of_wind', 'v_component_of_wind']
start_date = '20070101'
end_date = '20071231'
start_year = int(start_date[:4])
end_year = int(end_date[:4])
year_list = np.arange(start_year, end_year+1)
year_list = year_list.astype(str)
for iyear in year_list:
path = './' + iyear
if os.path.exists(path):
print("file exist")
else:
os.mkdir(path)
year_start_date = iyear+"0101"
year_end_date = end_date if int(end_date) < int(iyear)*10000+1231 else iyear+"1231"
date_list = pd.date_range(year_start_date, year_end_date).strftime("%Y%m%d").tolist()
for idate in date_list:
date_name = path + "/" + idate + "-pl.grib"
if os.path.exists(date_name):
continue
c.retrieve(
'reanalysis-era5-pressure-levels',
{
'product_type': 'reanalysis',
'format': 'grib',
'pressure_level': [
'1', '2', '3',
'5', '7', '10',
'20', '30', '50',
'70', '100', '125',
'150', '175', '200',
'225', '250', '300',
'350', '400', '450',
'500', '550', '600',
'650', '700', '750',
'775', '800', '825',
'850', '875', '900',
'925', '950', '975',
'1000',
],
'variable': var_list,
'year': iyear,
'month': idate[4:6],
'day': idate[6:8],
'time': [
'00:00', '06:00', '12:00',
'18:00',
],
},
date_name)
print('ok')
下载地面
#!/usr/bin/python3
import cdsapi
import os
import pandas as pd
import numpy as np
c = cdsapi.Client()
var_list = ['10m_u_component_of_wind', '10m_v_component_of_wind', '2m_dewpoint_temperature',
'2m_temperature', 'land_sea_mask', 'mean_sea_level_pressure',
'sea_ice_cover', 'sea_surface_temperature', 'skin_temperature',
'snow_depth', 'soil_temperature_level_1', 'soil_temperature_level_2',
'soil_temperature_level_3', 'soil_temperature_level_4', 'surface_pressure',
'volumetric_soil_water_layer_1', 'volumetric_soil_water_layer_2', 'volumetric_soil_water_layer_3',
'volumetric_soil_water_layer_4']
start_date = '20070101'
end_date = '20071231'
start_year = int(start_date[:4])
end_year = int(end_date[:4])
year_list = np.arange(start_year, end_year+1)
year_list = year_list.astype(str)
for iyear in year_list:
path = './' + iyear
if os.path.exists(path):
print("file exist")
else:
os.mkdir(path)
year_start_date = iyear+"0101"
year_end_date = end_date if int(end_date) < int(iyear)*10000+1231 else iyear+"1231"
date_list = pd.date_range(year_start_date, year_end_date).strftime("%Y%m%d").tolist()
for idate in date_list:
date_name = path + "/" + idate + "-sfc.grib"
if os.path.exists(date_name):
continue
c.retrieve(
'reanalysis-era5-single-levels',
{
'product_type': 'reanalysis',
'format': 'grib',
'variable': var_list,
'year': iyear,
'month': idate[4:6],
'day': idate[6:8],
'time': [
'00:00', '06:00', '12:00',
'18:00',
],
},
date_name)
print('ok')
并行下载
气象学家公众号提供了并行下载的脚本,有需要的可以了解一下
相关文章
- 基于Python的人脸识别考勤监控
- Python答题游戏
- Python调用百度API实现图像识别
- Python全栈疫情分析项目
- Python-基础-if语句快速入门
- Python-基础-循环语句快速入门
- Python-GUI签名
- 【2】VScode 搭建python和tensorflow环境
- python 简易时钟
- 【1】windows系统如何安装后缀是whl的python库
- 【2】超级详细Python-matplotlib画图,手把手教你画图!(线条颜色、大小、线形、标签)
- 【4】python读写文件操作---详细讲解!
- 【2】Anaconda下:ipython文件的打开方式,Jupyter Notebook中运行.py文件,快速打开ipython文件的方法!
- 【编写环境一】遇到常见python函数处理方式
- 【编写环境二】python库scipy.stats各种分布函数生成、以及随机数生成【泊松分布、正态分布等】
- Python xlwt数据保存到 Excel中以及xlrd读取excel文件画图
- 强化学习技巧三:Python多进程
- 强化学习技巧五:numba提速python程序
- 【7】python_matplotlib 输出(保存)矢量图方法;画图时图例说明(legend)放到图像外侧;Python_matplotlib图例放在外侧保存时显示不完整问题解决
- 【8】python_matplotlib改变横坐标和纵坐标上的刻度(ticks)、sagemath-list_plot()调整图例(legend)中点的数量、Matplotlib画各种论文图