- 积分
- 21
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2023-12-6
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
请教一下老师们师兄师姐们,nc数据想用Python提取某一个站点的整个时间序列的2m气温值
import numpy as np
import netCDF4 as nc
import os
#import Nio
from glob import glob
import xlwt
from wrf import getvar, ALL_TIMES, to_np
from datetime import datetime
nf = nc.Dataset(r'F:/cyg/wrfout_d01_2022-03-12_00_00_00','r')
def nearest_position( stn_lat, stn_lon, lat2d, lon2d):
"""获取最临近格点坐标索引
stn_lat : 站点纬度
stn_lon : 站点经度
lat2d : numpy.ndarray网格二维经度坐标
lon2d : numpy.ndarray网格二维纬度坐标
Return: (y_index, x_index)
"""
difflat = stn_lat - lat2d;
difflon = stn_lon - lon2d;
rad = np.multiply(difflat,difflat)+np.multiply(difflon , difflon)
aa=np.where(rad==np.min(rad))
ind=np.squeeze(np.array(aa))
return tuple(ind)
if __name__ == "__main__":
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('sheet1')
m=1
fpath='F:/cyg/'
flist = sorted(glob(os.path.join(fpath ,'wrfout_d01*')))
for fname in flist:
# wrfout_dir = "E:/six/3-13/0311/wrfout_d02_2020-01-01_00_00_00"
lonSta = 123.35 # 站点经纬度
latSta = -75.11
wrfout = nc.Dataset(fname, mode="r")
lat2D = to_np(getvar(wrfout, "XLAT" )) # units: decimal degrees
lon2D = to_np(getvar(wrfout, "XLONG" )) # units: decimal degrees
times = to_np(getvar(wrfout, "XTIME", timeidx=ALL_TIMES)) #
nt = len(times)
ny, nx = np.shape(lat2D)
indexSta = nearest_position(latSta, lonSta, lat2D, lon2D)
jSta = indexSta[0]
iSta = indexSta[1]
u10 = wrfout.variables['T2'][:]
#v10 = wrfout.variables['V10'][:]
uSta_all = []
vSta_all = []
times=[nc.num2date(nf.variables['XTIME'][:],'minutes since 2022-03-12 00:00:00').data for i in range(nt)]
for it in range(nt):
uSta = u10[it, jSta, iSta]
#vSta = v10[it, jSta, iSta]
uSta_all.append(uSta)
#vSta_all.append(vSta)
worksheet.write(m,0,str(times[it]))
worksheet.write(m,1,str(uSta))
#worksheet.write(m,2,np.str(vSta))
m=m+1
print(uSta_all)
#print(vSta_all)
workbook.save('./taishanPBLm7.xls'),
这是我运行的代码,但是结果时间上只有一个数据也不太合适,能帮我看看里面有什么错误嘛,拜托
|
|