使用python读取ERA5的时间、经度、维度、2米温度、地表辐射数据

使用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)

数据结果展示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值