Manual-Labeling-Tool/WindSpeedModel/参考代码/download_ecmwf_main.py

86 lines
3.3 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

'''
批量下载每小时平均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) # 下载数据