日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
基于Python的Grib數(shù)據(jù)可視化

利用Python語(yǔ)言實(shí)現(xiàn)Grib數(shù)據(jù)可視化主要依靠三個(gè)庫(kù)——pygrib、numpy和matplotlib。pygrib是歐洲中期天氣預(yù)報(bào)中心(ECMWF)的GRIG API C庫(kù)的Python接口,通過(guò)這個(gè)庫(kù)可以將Grib數(shù)據(jù)讀取出來(lái);numpy是Python的一種開(kāi)源的數(shù)值計(jì)算擴(kuò)展,這種工具可用來(lái)存儲(chǔ)和處理大型矩陣;matplotlib是python著名的繪圖庫(kù),它提供了一整套和matlab相似的命令A(yù)PI,十分適合交互式地進(jìn)行制圖;在數(shù)據(jù)可視化過(guò)程中,我們常需要將數(shù)據(jù)在地圖上畫(huà)出來(lái),所以還需要matplotlib的一個(gè)子包basemap,負(fù)責(zé)地圖繪制。

一、庫(kù)的安裝

(一)matplotlib安裝

  • matplotlib依賴
    • nose
    • numpy
    • pyparsing
    • python-dateutil
    • cycler
    • pkg-config
    • freetype
    • libpng
  • 安裝過(guò)程

這里我都是通過(guò)源碼包安裝的,大家也可以再終端里通過(guò)pip install 命令來(lái)安裝

1、安裝nose

解壓縮后,進(jìn)入命令提示符 運(yùn)行

 
 
 
 
  1. python3 setup.py install 

2、安裝numpy

解壓縮后,進(jìn)入命令提示符 運(yùn)行

 
 
 
 
  1. python3 setup.py install 

3、安裝pyparsing

解壓縮后,進(jìn)入命令提示符 運(yùn)行

 
 
 
 
  1. python3 setup.py install 

4、安裝python-dateutil

解壓縮后,進(jìn)入命令提示符 運(yùn)行

 
 
 
 
  1. python3 setup.py install 

5、安裝cycler

解壓縮后,進(jìn)入命令提示符 運(yùn)行

 
 
 
 
  1. python3 setup.py install 

6、安裝pkg-config

 
 
 
 
  1. ./configure --with-intermal-glib 
  2.  
  3. make && date 
  4.  
  5. sudo make install && date  

7、安裝freetype

 
 
 
 
  1. ./configure 
  2.  
  3. make && date 
  4.  
  5. sudo make install && date  

8、安裝libpng

 
 
 
 
  1. ./configure 
  2.  
  3. make && date 
  4.  
  5. sudo make install && date  

9、安裝matplotlib-1.5.0

解壓縮后,進(jìn)入命令提示符 運(yùn)行

 
 
 
 
  1. python3 setup.py install 

(二)basemap安裝

  • basemap依賴
    • geos
    • pyproj
  • 安裝過(guò)程

1、安裝GEOS

 
 
 
 
  1. ./configure 
  2.  
  3. make && date 
  4.  
  5. sudo make install && date  

2、安裝pyproj

 
 
 
 
  1. python3 setup.py install 

3、安裝basemap

 
 
 
 
  1. python3 setup.py install 

(三)pygrib安裝

  • pygrib依賴
    • Jasper
    • GRIB API
    • numpy
    • pyproj
  • 安裝過(guò)程

由于之前已經(jīng)安裝了numpy和pyproj,這里只需安裝Jasper和GRIB API即可安裝pygrib

1、安裝Jasper

 
 
 
 
  1. ./configure 
  2.  
  3. make && date 
  4.  
  5. sudo make install && date  

2、安裝GRIB API

 
 
 
 
  1. ./configure --with-jasper='/usr/local/' 
  2.  
  3. make && date 
  4.  
  5. sudo make install && date  

3、安裝pygrib

安裝pygrib之前首先要根據(jù)自己的實(shí)際情況修改文件目錄下的setup.cfg文件,最主要的就是修改grib_api_dir和jasper_dir,這兩個(gè)是剛剛安裝的Jasper和GRIB API的路徑,如果這兩個(gè)地址不正確安裝會(huì)報(bào)錯(cuò)

修改好就可以正常安裝了

 
 
 
 
  1. python3 setup.py install 

二、grib數(shù)據(jù)讀取

雖然我做的東西和氣象沾邊,但是我本身并不是氣象專業(yè)出身,所有這些東西都是我慢慢研究琢磨出來(lái)的,所以有些方面可能講的比較外行,有不對(duì)的地方歡迎大家留言指正。

(一)導(dǎo)入pygrib模塊

 
 
 
 
  1. >>> import pygrib 

(二)打開(kāi)Grib文件

 
 
 
 
  1. >>> grbs = pygrib.open('/Users/Kallan/Documents/data/echhae50.082') 

(三)提取文件信息

 
 
 
 
  1. >>> grbs.seek(0) 
  2.  
  3. >>> for grb in grbs: 
  4.  
  5. grb 
  6.  
  7. 1:Geopotential Height:gpm (instant):regular_ll:isobaricInhPa:level 500:fcst time 24 :from 201507081200  

信息解讀

1 :數(shù)據(jù)列表的行號(hào),有的文件可能包括多個(gè)數(shù)據(jù)

Geopotential Height:數(shù)據(jù)的名稱

gpm (instant):數(shù)據(jù)的單位

regular_ll:常規(guī)數(shù)據(jù),其實(shí)這個(gè)字段我也不清楚

isobaricInhPa:這個(gè)字段表示的是數(shù)據(jù)屬性,此處表示是以hPa為單位的等壓面

level 500:這個(gè)字段表示的是高度層

fcst time 24 :預(yù)報(bào)時(shí)效

from 201507081200 :起報(bào)時(shí)間

綜合上面的信息可以得出,這個(gè)文件是從2015年7月8日12時(shí)開(kāi)始的24小時(shí)后500hPa等壓面高度場(chǎng)數(shù)據(jù)

(四)導(dǎo)出文件數(shù)據(jù)

 
 
 
 
  1. >>> grb = grbs.select(name='Geopotential Height')[0] 
  2.  
  3. >>> data = grb.values 
  4.  
  5. >>> print(data.shape,data.min(),data.max()) 
  6.  
  7. (37, 37) 5368.6796875 5941.0390625 
  8.  
  9. >>> lat,lon=grb.latlons() 
  10.  
  11. >>> print(lat,'\n',lon) 
  12.  
  13. [[ 0. 0. 0. ..., 0. 0. 0. ] 
  14.  
  15. [ 2.5 2.5 2.5 ..., 2.5 2.5 2.5] 
  16.  
  17. [ 5. 5. 5. ..., 5. 5. 5. ] 
  18.  
  19. ..., 
  20.  
  21. [ 85. 85. 85. ..., 85. 85. 85. ] 
  22.  
  23. [ 87.5 87.5 87.5 ..., 87.5 87.5 87.5] 
  24.  
  25. [ 90. 90. 90. ..., 90. 90. 90. ]] 
  26.  
  27. [[-90. -87.5 -85. ..., -5. -2.5 0. ] 
  28.  
  29. [-90. -87.5 -85. ..., -5. -2.5 0. ] 
  30.  
  31. [-90. -87.5 -85. ..., -5. -2.5 0. ] 
  32.  
  33. ..., 
  34.  
  35. [-90. -87.5 -85. ..., -5. -2.5 0. ] 
  36.  
  37. [-90. -87.5 -85. ..., -5. -2.5 0. ] 
  38.  
  39. [-90. -87.5 -85. ..., -5. -2.5 0. ]]  

三、grib數(shù)據(jù)可視化

(一)導(dǎo)入需要的模塊

 
 
 
 
  1. >>> import matplotlib.pyplot as plt 
  2.  
  3. >>> from mpl_toolkits.basemap import Basemap 
  4.  
  5. >>> import numpy as np  

(二)創(chuàng)建一個(gè)figure

 
 
 
 
  1. >>> plt.figure() 
  2.  
  3.   

(三)創(chuàng)建一個(gè)basemap實(shí)例

 
 
 
 
  1. >>> m=Basemap(projection='mill',lat_ts=10,llcrnrlon=lon.min(), \ 
  2.  
  3. urcrnrlon=lon.max(),llcrnrlat=lat.min(),urcrnrlat=lat.max(), \ 
  4.  
  5. resolution='c') 
  6.  
  7. >>> m.drawcoastlines(linewidth=0.25) 
  8.  
  9.  
  10.  
  11. >>> m.drawcountries(linewidth=0.25) 
  12.  
  13.  
  14.  
  15. >>> m.fillcontinents(color='coral',lake_color='aqua') 
  16.  
  17. >>> m.drawmapboundary(fill_color='aqua') 
  18.  
  19.  
  20.  
  21. >>> m.drawmeridians(np.arange(0,360,30)) 
  22.  
  23. >>> m.drawparallels(np.arange(-90,90,30))  

(四)將lat,lon的數(shù)據(jù)格式轉(zhuǎn)換成投影需要的格式存入x,y

 
 
 
 
  1. >>> x, y = m(lon,lat) 

(五)繪制等值線

 
 
 
 
  1. >>> cs = m.contour(x,y,data,15,linewidths=1.5) 

(六)命名并顯示圖像

 
 
 
 
  1. >>> plt.title('Geopotential Height Contour from Grib') 
  2.  
  3.  
  4.  
  5. >>> plt.show()  

(七)圖像展示


當(dāng)前文章:基于Python的Grib數(shù)據(jù)可視化
文章路徑:http://m.5511xx.com/article/djeciod.html