接到一个任务:将txt文件转化为nc文件,转化后验证数据正确性(转化的数据对不对),在网上找了几篇文章,发现不是自己想要的,于是自己写了一下
ps:只是简单验证,提供一下思路,如果想要更精细的可能需要加工一下
import netCDF4 as nc
import numpy as np
from netCDF4 import Dataset
#需要读取的nc文件
ds = nc.Dataset(r'D:\OUT_DAY_NC_DIR\20221105.nc')
for i in range(288): #因为时间维度的长度是288 为了方便,直接把长度写上了
nc_id = 111 #想要验证的站点id
# data_time_data = ds.variables['data_time'][i]
data_time_data = nc.num2date(ds.variables['data_time'][i], 'hours since 2000-01-01 00:00:00.0') #这里将时间戳转为时间
WS_10_data_all = ds.variables['WS_10'][:, nc_id-1] #因为我的数据是二维的,所以使用[:, nc_id-1];第一个的意思是时间维度全都要,第二个的意思是站点纬度只要第[nc_id-1]个
Ws_10_data = WS_10_data_all[i] #在形成的数据中选择第i个
WD_10_data_all = ds.variables['WD_10'][:, nc_id-1]
WD_10_data = WD_10_data_all[i]
WS_30_data_all = ds.variables['WS_30'][:, nc_id-1]
WS_30_data = WS_30_data_all[i]
WD_30_data_all = ds.variables['WD_30'][:, nc_id-1]
WD_30_data = WD_30_data_all[i]
WS_50_data_all = ds.variables['WS_50'][:, nc_id-1]
WS_50_data = WS_50_data_all[i]
WD_50_data_all = ds.variables['WD_50'][:, nc_id-1]
WD_50_data = WD_50_data_all[i]
WS_70_data_all = ds.variables['WS_70'][:, nc_id-1]
WS_70_data = WS_70_data_all[i]
WD_70_data_all = ds.variables['WD_70'][:, nc_id-1]
WD_70_data = WD_70_data_all[i]
WS_HubHeight_data_all = ds.variables['WS_HubHeight'][:, nc_id-1]
WS_HubHeight_data = WS_HubHeight_data_all[i]
WD_HubHeight_data_all = ds.variables['WD_HubHeight'][:, nc_id-1]
WD_HubHeight_data = WD_HubHeight_data_all[i]
T_8_data_all = ds.variables['T_8'][:, nc_id-1]
T_8_data = T_8_data_all[i]
P_8_data_all = ds.variables['P_8'][:, nc_id-1]
P_8_data = P_8_data_all[i]
H_8_data_all = ds.variables['H_8'][:, nc_id-1]
H_8_data = H_8_data_all[i]
print('data_time_data:{0} ,WS_10:{1} ,WD_10:{2} ,WS_30:{3} ,WD_30:{4} ,WS_50:{5} ,WD_50:{6} ,WS_70:{7} ,WD_70:{8} ,WS_HubHeight:{9} ,WD_HubHeight:{10} ,T_8'
':{11} ,P_8:{12} ,H_8:{13}'.format(data_time_data,Ws_10_data,WD_10_data,WS_30_data,WD_30_data,WS_50_data,WD_50_data,WS_70_data,WD_70_data,
WS_HubHeight_data,WD_HubHeight_data,T_8_data,P_8_data,H_8_data))
结果如下: