功能:从WRF输出文件中提出目标经纬度的2m温度、2m湿度以及10m风速信息。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报。# -*- coding: utf-8 -*-
"""
@author: Daimu
"""
from netCDF4 import Dataset
import numpy as np
from wrf import getvar,interpz3d,destagger,to_np, ALL_TIMES
from scipy.interpolate import griddata
import pandas as pd
from tqdm import tqdm
# 打开NetCDF文件
file_path = r'E:\BaiduSyncdisk\wrfout_d03_2022-05-01_00_00_00'
ncfile = Dataset(file_path, 'r')
# 寻找目标点
lon_m=123.465538
lat_m=41.72472
# 经纬度
lon = np.array(ncfile['XLONG'])[0,:,:]
lat = np.array(ncfile['XLAT'])[0,:,:]
time = np.array(ncfile['Times'])
merged_strings = [''.join(row.astype(str)) for row in time]
time = np.array(merged_strings)
# 湿度 风速
rh = to_np(getvar(ncfile, "rh2",timeidx=ALL_TIMES))
tc = to_np(getvar(ncfile, "T2",timeidx=ALL_TIMES))
# 风速
wspd = getvar(ncfile, "wspd_wdir10", units="m/s",timeidx=ALL_TIMES)[0,:,:,:]
result=pd.DataFrame(columns=['时间','2m温度','2m湿度','10m风速','26m压强'])
for i in tqdm(np.arange(np.size(rh,0))):
rh_t=rh[i,:]
tc_t=tc[i,:]
wspd_t=to_np(wspd[i,:])
rh_m = griddata((lon.flatten(), lat.flatten()), rh_t.flatten(), (lon_m, lat_m), method='linear')
tc_m = griddata((lon.flatten(), lat.flatten()), tc_t.flatten(), (lon_m, lat_m), method='linear')
wspd_m = griddata((lon.flatten(), lat.flatten()), wspd_t.flatten(), (lon_m, lat_m), method='linear')
result.at[i,'时间']=time[i]
result.at[i,'2m温度']=tc_m-273.15
result.at[i,'2m湿度']=rh_m
result.at[i,'10m风速']=wspd_m
result.to_csv(r'E:\02205.csv',encoding='gbk')