使用python读取ERA5的时间、经度、维度、2米温度、地表辐射数据
代码内容
import netCDF4 as nc import numpy as np #后续寻找合适经纬度的索引需要用到 import pandas as pd from netCDF4 import Dataset from openpyxl import Workbook import os #获取相应nc数据的值 # nf = nc.Dataset(r'E:\桌面\KubuqiData\2020_1\adaptor.mars.internal-1724730106.3272886-25640-9-3f186eea-4175-43ae-a94b-5c4a8a2fa191.nc',encoding='gbk') nf = nc.Dataset(r'E:\桌面\KubuqiData\2020_1\data556.nc',encoding='gbk') #输出nc数据的相应含义 print(nf.variables.keys()) # print(nf.variables['time'][:]) time = nc.num2date(nf.variables['time'][:],'hours since 1900-01-01 00:00:00').data print(time[0]) print(time[1]) var_data_lat = nf.variables['latitude'][:] # Geographical latitude of perigee point (°) var_data_lon = nf.variables['longitude'][:] # Geographical longitude of perigee point (°) var_data_u10 = nf.variables['u10'][:] var_data_v10 = nf.variables['v10'][:] var_data_t2m = nf.variables['t2m'][:] var_data_ssr=nf.variables['ssr'][:] # var_data_fal=nf.variables['fal'][:] # var_data_slhf=nf.variables['slhf'][:] # var_data_str=nf.variables['str'][:] # var_data_sshf=nf.variables['sshf'][:] # var_data_ssrd=nf.variables['ssrd'][:] # var_data_strd=nf.variables['strd'][:] # 建立2个空列表,用于存放符合条件的经纬度的位置 lst_wherelat=[] lst_wherelon=[] #经纬度只保留2位小数 var_data_lat = np.round(var_data_lat, 2) var_data_lon = np.round(var_data_lon, 2) # 循环遍历所有纬度 print(var_data_lat[0])#已有纬度数据 print(var_data_lon[0])#已有经度数据 print(var_data_u10[0][0][0]) print(var_data_v10[0][0][0]) print(var_data_t2m[0][0][0]) print(var_data_ssr[0][0][0]) #test print(len(time))#已有纬度数据 # title=["time", "经度", "纬度", "u10", "v10", "t2m(开氏度)","ssr(J/m2)","fal","slhf","str","sshf","ssrd","strd"] title=["time", "经度", "纬度", "u10", "v10", "t2m(开氏度)","ssr(J/m2)"] # for i in range(len(var_data_lon)): for i in range(1): lon_record = var_data_lon[i] # for j in range(len(var_data_lat)): for j in range(2): # 创建excel表 creat_excel = Workbook() lat_record = var_data_lat[j] #设定表名 sheet = creat_excel.create_sheet(title=f"{lon_record:.2f},{lat_record:.2f}") # 写入标题行 sheet.append(title) for k in range(len(time)): time_record=time[k] u10_record=var_data_u10[k][j][i] v10_record = var_data_v10[k][j][i] t2m_record = var_data_t2m[k][j][i] ssr_record=var_data_ssr[k][j][i] # fal_record=var_data_fal[k][j][i] # slhf_record=var_data_slhf[k][j][i] # str_record=var_data_str[k][j][i] # sshf_record=var_data_sshf[k][j][i] # ssrd_record=var_data_ssrd[k][j][i] # strd_record=var_data_strd[k][j][i] # add_line=[f"{time_record}",lon_record,lat_record,u10_record,v10_record,t2m_record,ssr_record, # fal_record,slhf_record,str_record,sshf_record,ssrd_record,strd_record] add_line=[f"{time_record}",lon_record,lat_record,u10_record,v10_record,t2m_record,ssr_record] sheet.append(add_line) folder_path = 'E:\桌面\KubuqiData\output\2020_3' file_name = f'2020_{lon_record:.2f}_{lat_record:.2f}.xlsx' if not os.path.exists(folder_path):#若文件夹不存在则创建 os.makedirs(folder_path) # 保存工作簿到指定文件夹 full_path = os.path.join(folder_path, file_name) creat_excel.save(full_path)
数据结果展示