二探netCDF4——ECMWF

from netCDF4 import Dataset, num2date
nc_obj = Dataset ( "12.5.nc" )
# 查看每个变量的信息
for i in nc_obj.variables.keys ():
    print("---------------------------------")
    print ( nc_obj.variables[i] )
---------------------------------
<class 'netCDF4._netCDF4.Variable'>
float32 longitude(longitude)
    units: degrees_east
    long_name: longitude
unlimited dimensions: 
current shape = (17,)
filling on, default _FillValue of 9.969209968386869e+36 used

---------------------------------
<class 'netCDF4._netCDF4.Variable'>
float32 latitude(latitude)
    units: degrees_north
    long_name: latitude
unlimited dimensions: 
current shape = (17,)
filling on, default _FillValue of 9.969209968386869e+36 used

---------------------------------
<class 'netCDF4._netCDF4.Variable'>
int32 time(time)
    units: hours since 1900-01-01 00:00:00.0
    long_name: time
    calendar: gregorian
unlimited dimensions: time
current shape = (124,)
filling on, default _FillValue of -2147483647 used

---------------------------------
<class 'netCDF4._netCDF4.Variable'>
int16 u10(time, latitude, longitude)
    scale_factor: 0.00019984496841662342
    add_offset: 2.2857691990673055
    _FillValue: -32767
    missing_value: -32767
    units: m s**-1
    long_name: 10 metre U wind component
unlimited dimensions: time
current shape = (124, 17, 17)
filling on
---------------------------------
<class 'netCDF4._netCDF4.Variable'>
int16 v10(time, latitude, longitude)
    scale_factor: 0.00022416586820106377
    add_offset: 0.10508105518845806
    _FillValue: -32767
    missing_value: -32767
    units: m s**-1
    long_name: 10 metre V wind component
unlimited dimensions: time
current shape = (124, 17, 17)
filling on
---------------------------------
<class 'netCDF4._netCDF4.Variable'>
int16 t2m(time, latitude, longitude)
    scale_factor: 0.00039353090602075
    add_offset: 260.2030731930431
    _FillValue: -32767
    missing_value: -32767
    units: K
    long_name: 2 metre temperature
unlimited dimensions: time
current shape = (124, 17, 17)
filling on
# 查看nc文件中的变量
print ( nc_obj.variables.keys() )
#longitude, latitude经度、纬度
odict_keys(['longitude', 'latitude', 'time', 'u10', 'v10', 't2m'])
#取出变量blh  10 metre V wind component(10米V风分量)
print(nc_obj['v10'])
<class 'netCDF4._netCDF4.Variable'>
int16 v10(time, latitude, longitude)
    scale_factor: 0.00022416586820106377
    add_offset: 0.10508105518845806
    _FillValue: -32767
    missing_value: -32767
    units: m s**-1
    long_name: 10 metre V wind component
unlimited dimensions: time
current shape = (124, 17, 17)
filling on
time=nc_obj['time'][:]
print(time)
[1043136 1043142 1043148 1043154 1043160 1043166 1043172 1043178 1043184
 1043190 1043196 1043202 1043208 1043214 1043220 1043226 1043232 1043238
 1043244 1043250 1043256 1043262 1043268 1043274 1043280 1043286 1043292
 1043298 1043304 1043310 1043316 1043322 1043328 1043334 1043340 1043346
 1043352 1043358 1043364 1043370 1043376 1043382 1043388 1043394 1043400
 1043406 1043412 1043418 1043424 1043430 1043436 1043442 1043448 1043454
 1043460 1043466 1043472 1043478 1043484 1043490 1043496 1043502 1043508
 1043514 1043520 1043526 1043532 1043538 1043544 1043550 1043556 1043562
 1043568 1043574 1043580 1043586 1043592 1043598 1043604 1043610 1043616
 1043622 1043628 1043634 1043640 1043646 1043652 1043658 1043664 1043670
 1043676 1043682 1043688 1043694 1043700 1043706 1043712 1043718 1043724
 1043730 1043736 1043742 1043748 1043754 1043760 1043766 1043772 1043778
 1043784 1043790 1043796 1043802 1043808 1043814 1043820 1043826 1043832
 1043838 1043844 1043850 1043856 1043862 1043868 1043874]
time1=num2date(time,units=nc_obj['time'].units)
print(time1)
[datetime.datetime(2019, 1, 1, 0, 0) datetime.datetime(2019, 1, 1, 6, 0)
 datetime.datetime(2019, 1, 1, 12, 0) datetime.datetime(2019, 1, 1, 18, 0)
 datetime.datetime(2019, 1, 2, 0, 0) datetime.datetime(2019, 1, 2, 6, 0)
 datetime.datetime(2019, 1, 2, 12, 0) datetime.datetime(2019, 1, 2, 18, 0)
 datetime.datetime(2019, 1, 3, 0, 0) datetime.datetime(2019, 1, 3, 6, 0)
 datetime.datetime(2019, 1, 3, 12, 0) datetime.datetime(2019, 1, 3, 18, 0)
 datetime.datetime(2019, 1, 4, 0, 0) datetime.datetime(2019, 1, 4, 6, 0)
 datetime.datetime(2019, 1, 4, 12, 0) datetime.datetime(2019, 1, 4, 18, 0)
 datetime.datetime(2019, 1, 5, 0, 0) datetime.datetime(2019, 1, 5, 6, 0)
 datetime.datetime(2019, 1, 5, 12, 0) datetime.datetime(2019, 1, 5, 18, 0)
 datetime.datetime(2019, 1, 6, 0, 0) datetime.datetime(2019, 1, 6, 6, 0)
 datetime.datetime(2019, 1, 6, 12, 0) datetime.datetime(2019, 1, 6, 18, 0)
 datetime.datetime(2019, 1, 7, 0, 0) datetime.datetime(2019, 1, 7, 6, 0)
 datetime.datetime(2019, 1, 7, 12, 0) datetime.datetime(2019, 1, 7, 18, 0)
 datetime.datetime(2019, 1, 8, 0, 0) datetime.datetime(2019, 1, 8, 6, 0)
 datetime.datetime(2019, 1, 8, 12, 0) datetime.datetime(2019, 1, 8, 18, 0)
 datetime.datetime(2019, 1, 9, 0, 0) datetime.datetime(2019, 1, 9, 6, 0)
 datetime.datetime(2019, 1, 9, 12, 0) datetime.datetime(2019, 1, 9, 18, 0)
 datetime.datetime(2019, 1, 10, 0, 0) datetime.datetime(2019, 1, 10, 6, 0)
 datetime.datetime(2019, 1, 10, 12, 0)
 datetime.datetime(2019, 1, 10, 18, 0)
 datetime.datetime(2019, 1, 11, 0, 0) datetime.datetime(2019, 1, 11, 6, 0)
 datetime.datetime(2019, 1, 11, 12, 0)
 datetime.datetime(2019, 1, 11, 18, 0)
 datetime.datetime(2019, 1, 12, 0, 0) datetime.datetime(2019, 1, 12, 6, 0)
 datetime.datetime(2019, 1, 12, 12, 0)
 datetime.datetime(2019, 1, 12, 18, 0)
 datetime.datetime(2019, 1, 13, 0, 0) datetime.datetime(2019, 1, 13, 6, 0)
 datetime.datetime(2019, 1, 13, 12, 0)
 datetime.datetime(2019, 1, 13, 18, 0)
 datetime.datetime(2019, 1, 14, 0, 0) datetime.datetime(2019, 1, 14, 6, 0)
 datetime.datetime(2019, 1, 14, 12, 0)
 datetime.datetime(2019, 1, 14, 18, 0)
 datetime.datetime(2019, 1, 15, 0, 0) datetime.datetime(2019, 1, 15, 6, 0)
 datetime.datetime(2019, 1, 15, 12, 0)
 datetime.datetime(2019, 1, 15, 18, 0)
 datetime.datetime(2019, 1, 16, 0, 0) datetime.datetime(2019, 1, 16, 6, 0)
 datetime.datetime(2019, 1, 16, 12, 0)
 datetime.datetime(2019, 1, 16, 18, 0)
 datetime.datetime(2019, 1, 17, 0, 0) datetime.datetime(2019, 1, 17, 6, 0)
 datetime.datetime(2019, 1, 17, 12, 0)
 datetime.datetime(2019, 1, 17, 18, 0)
 datetime.datetime(2019, 1, 18, 0, 0) datetime.datetime(2019, 1, 18, 6, 0)
 datetime.datetime(2019, 1, 18, 12, 0)
 datetime.datetime(2019, 1, 18, 18, 0)
 datetime.datetime(2019, 1, 19, 0, 0) datetime.datetime(2019, 1, 19, 6, 0)
 datetime.datetime(2019, 1, 19, 12, 0)
 datetime.datetime(2019, 1, 19, 18, 0)
 datetime.datetime(2019, 1, 20, 0, 0) datetime.datetime(2019, 1, 20, 6, 0)
 datetime.datetime(2019, 1, 20, 12, 0)
 datetime.datetime(2019, 1, 20, 18, 0)
 datetime.datetime(2019, 1, 21, 0, 0) datetime.datetime(2019, 1, 21, 6, 0)
 datetime.datetime(2019, 1, 21, 12, 0)
 datetime.datetime(2019, 1, 21, 18, 0)
 datetime.datetime(2019, 1, 22, 0, 0) datetime.datetime(2019, 1, 22, 6, 0)
 datetime.datetime(2019, 1, 22, 12, 0)
 datetime.datetime(2019, 1, 22, 18, 0)
 datetime.datetime(2019, 1, 23, 0, 0) datetime.datetime(2019, 1, 23, 6, 0)
 datetime.datetime(2019, 1, 23, 12, 0)
 datetime.datetime(2019, 1, 23, 18, 0)
 datetime.datetime(2019, 1, 24, 0, 0) datetime.datetime(2019, 1, 24, 6, 0)
 datetime.datetime(2019, 1, 24, 12, 0)
 datetime.datetime(2019, 1, 24, 18, 0)
 datetime.datetime(2019, 1, 25, 0, 0) datetime.datetime(2019, 1, 25, 6, 0)
 datetime.datetime(2019, 1, 25, 12, 0)
 datetime.datetime(2019, 1, 25, 18, 0)
 datetime.datetime(2019, 1, 26, 0, 0) datetime.datetime(2019, 1, 26, 6, 0)
 datetime.datetime(2019, 1, 26, 12, 0)
 datetime.datetime(2019, 1, 26, 18, 0)
 datetime.datetime(2019, 1, 27, 0, 0) datetime.datetime(2019, 1, 27, 6, 0)
 datetime.datetime(2019, 1, 27, 12, 0)
 datetime.datetime(2019, 1, 27, 18, 0)
 datetime.datetime(2019, 1, 28, 0, 0) datetime.datetime(2019, 1, 28, 6, 0)
 datetime.datetime(2019, 1, 28, 12, 0)
 datetime.datetime(2019, 1, 28, 18, 0)
 datetime.datetime(2019, 1, 29, 0, 0) datetime.datetime(2019, 1, 29, 6, 0)
 datetime.datetime(2019, 1, 29, 12, 0)
 datetime.datetime(2019, 1, 29, 18, 0)
 datetime.datetime(2019, 1, 30, 0, 0) datetime.datetime(2019, 1, 30, 6, 0)
 datetime.datetime(2019, 1, 30, 12, 0)
 datetime.datetime(2019, 1, 30, 18, 0)
 datetime.datetime(2019, 1, 31, 0, 0) datetime.datetime(2019, 1, 31, 6, 0)
 datetime.datetime(2019, 1, 31, 12, 0)
 datetime.datetime(2019, 1, 31, 18, 0)]
#经度  128.5   12
longitude=nc_obj['longitude'][:]
print(longitude)
[127.    127.125 127.25  127.375 127.5   127.625 127.75  127.875 128.
 128.125 128.25  128.375 128.5   128.625 128.75  128.875 129.   ]
#纬度 45.5    4
latitude=nc_obj['latitude'][:]
print(latitude)
[46.    45.875 45.75  45.625 45.5   45.375 45.25  45.125 45.    44.875
 44.75  44.625 44.5   44.375 44.25  44.125 44.   ]
#取出变量blh  10 metre V wind component(10米V风分量)
v10=nc_obj['v10'][:]
# print(v10)
a = [0]*124
for i in range(124):
    a[i]=nc_obj.variables['v10'][i][4][12]
import matplotlib.pyplot as plt
plt.rc('font', family='SimHei', size=15) #绘图中的中文显示问题,图表字体为SimHei,字号为15
#plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
plt.figure(figsize=(9,8))  
plt.title('风速(v10)与时间的函数')  #有标题(风速与风向的函数)
plt.xlabel('时间') #横坐标的标题
plt.ylabel('风速(m/s)') #纵坐标的标题
plt.grid(color='#95a5a6',linestyle='--',linewidth=3,axis='both',alpha=0.4)#设置网格
plt.plot(time1,a, 'ro')
# plt.scatter(winddirection,windspeed1,c='',s=30,marker = 'o',edgecolors='r')  #空心圆
plt.savefig('1风速与风向的函数111.png') #保存图片文件命名为1风速与风向的函数.png
plt.show() 

在这里插入图片描述

plt.figure(figsize=(9,8))  
plt.title('风速(v10)与时间的函数')  #有标题(风速与风向的函数)
plt.xlabel('时间') #横坐标的标题
plt.ylabel('风速(m/s)') #纵坐标的标题
plt.legend(['实测功率曲线','设计功率曲线']) #设置图例
plt.grid(color='#95a5a6',linestyle='--',linewidth=3,axis='both',alpha=0.4) #设置网格
plt.plot(time1,a, 'ro',time1,a, 'r')#实测功率曲线
plt.savefig('b.png') #保存图片文件命名为3实测与设计功率曲线对比.png
plt.show() 

在这里插入图片描述

#取出变量10 metre U wind component,(10米U风分量)
u10=nc_obj['u10'][:]
b = [0]*124
for i in range(124):
    b[i]=nc_obj.variables['u10'][i][4][12]
plt.figure(figsize=(9,8))  
plt.title('风速(u10)与时间的函数')  #有标题(风速与风向的函数)
plt.xlabel('时间') #横坐标的标题
plt.ylabel('风速(m/s)') #纵坐标的标题
plt.legend(['实测功率曲线','设计功b率曲线']) #设置图例
plt.grid(color='#95a5a6',linestyle='--',linewidth=3,axis='both',alpha=0.4) #设置网格
plt.plot(time1,b, 'ro',time1,b, 'r')#实测功率曲线
plt.xticks(rotation='vertical')
plt.savefig('c.png') #保存图片文件命名为3实测与设计功率曲线对比.png
plt.show() 

在这里插入图片描述


posted @ 2019-12-05 23:12  爱做梦的子浩  阅读(587)  评论(0编辑  收藏  举报