86 lines
3.3 KiB
Python
86 lines
3.3 KiB
Python
'''
|
||
批量下载每小时平均ECMWF风场数据
|
||
'''
|
||
|
||
# -*- coding: utf-8 -*-
|
||
import cdsapi
|
||
# from ecmwfapi import ECMWFDataServer
|
||
import calendar
|
||
#在运行前先安装cdsapi包
|
||
|
||
# 创建 ECMWF 数据服务器客户端
|
||
# server = ECMWFDataServer()
|
||
|
||
c = cdsapi.Client()
|
||
|
||
# dic = {
|
||
# 'product_type': 'reanalysis', #选择数据集
|
||
# 'format': 'netcdf', #选择数据格式
|
||
# 'variable': [
|
||
# 'Mean_sea_level_pressure', 'Sea_surface_temperature','2m_temperature',
|
||
# '100m_u_component_of_wind', '100m_v_component_of_wind', '10m_u_component_of_neutral_wind',
|
||
# '10m_u_component_of_wind', '10m_v_component_of_neutral_wind', '10m_v_component_of_wind',
|
||
# '10m_wind_gust_since_previous_post_processing', 'instantaneous_10m_wind_gust',
|
||
# ],
|
||
# 'year': '',
|
||
# 'month': '',
|
||
# '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'
|
||
# ]
|
||
# }
|
||
|
||
dic = {
|
||
'product_type': 'reanalysis', #选择数据集
|
||
'format': 'netcdf', #选择数据格式
|
||
'download_format': 'unarchived',
|
||
'variable': [
|
||
'mean_sea_level_pressure', 'sea_surface_temperature','2m_temperature',
|
||
'100m_u_component_of_wind', '100m_v_component_of_wind', '10m_u_component_of_neutral_wind',
|
||
'10m_u_component_of_wind', '10m_v_component_of_neutral_wind', '10m_v_component_of_wind',
|
||
# '10m_wind_gust_since_previous_post_processing', 'instantaneous_10m_wind_gust',
|
||
],
|
||
'year': [],
|
||
'month': [],
|
||
'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'
|
||
]
|
||
}
|
||
|
||
|
||
# 批量下载1979年到2021年所有月份数据
|
||
for i in range(2022, 2023): # 2025年数据
|
||
for j in range(2, 3): # 2月数据
|
||
day_num = calendar.monthrange(i, j)[1] # 根据年月,获取当月日数
|
||
for day_indx in range(day_num):
|
||
dic['year'] = [str(i)]
|
||
dic['month'] = [str(j).zfill(2)]
|
||
dic['day'] = [str(day_indx+1).zfill(2)]
|
||
filename = 'F:\\ECMWF\\once_time\\total_precipitation_' + str(i) + str(j).zfill(2)+str(day_indx+1).zfill(2) + '.nc' # 文件存储路径
|
||
print(filename)
|
||
|
||
# try:
|
||
# c.retrieve('reanalysis-era5-single-levels', dic, filename).download()
|
||
# except Exception as e:
|
||
# print(f"An error occurred while downloading data for {i}-{j}: {e}")
|
||
c.retrieve('reanalysis-era5-single-levels', dic, filename) # 下载数据
|
||
|
||
# 仅下载2022年6月份数据(某一年的某一个月数据)
|
||
# i = 2022
|
||
# j = 6
|
||
# day_num = calendar.monthrange(i, j)[1] # 根据年月,获取当月日数
|
||
# dic['year'] = str(i)
|
||
# dic['month'] = str(j).zfill(2)
|
||
# dic['day'] = [str(d).zfill(2) for d in range(1, day_num + 1)]
|
||
# filename = 'G:\\data_ecmwf\\once_time\\total_precipitation' + str(i) + str(j).zfill(2) + '.nc' # 文件存储路径
|
||
# c.retrieve('reanalysis-era5-single-levels', dic, filename) # 下载数据
|
||
|
||
|
||
|