日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

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

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

一、庫的安裝

(一)matplotlib安裝

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

這里我都是通過源碼包安裝的,大家也可以再終端里通過pip install 命令來安裝

1、安裝nose

解壓縮后,進入命令提示符 運行

 
 
 
 
  1. python3 setup.py install 

2、安裝numpy

解壓縮后,進入命令提示符 運行

 
 
 
 
  1. python3 setup.py install 

3、安裝pyparsing

解壓縮后,進入命令提示符 運行

 
 
 
 
  1. python3 setup.py install 

4、安裝python-dateutil

解壓縮后,進入命令提示符 運行

 
 
 
 
  1. python3 setup.py install 

5、安裝cycler

解壓縮后,進入命令提示符 運行

 
 
 
 
  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

解壓縮后,進入命令提示符 運行

 
 
 
 
  1. python3 setup.py install 

(二)basemap安裝

  • basemap依賴
    • geos
    • pyproj
  • 安裝過程

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
  • 安裝過程

由于之前已經安裝了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ù)自己的實際情況修改文件目錄下的setup.cfg文件,最主要的就是修改grib_api_dir和jasper_dir,這兩個是剛剛安裝的Jasper和GRIB API的路徑,如果這兩個地址不正確安裝會報錯

修改好就可以正常安裝了

 
 
 
 
  1. python3 setup.py install 

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

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

(一)導入pygrib模塊

 
 
 
 
  1. >>> import pygrib 

(二)打開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ù)列表的行號,有的文件可能包括多個數(shù)據(jù)

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

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

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

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

level 500:這個字段表示的是高度層

fcst time 24 :預報時效

from 201507081200 :起報時間

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

(四)導出文件數(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ù)可視化

(一)導入需要的模塊

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

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

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

(三)創(chuàng)建一個basemap實例

 
 
 
 
  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ù)格式轉換成投影需要的格式存入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()  

(七)圖像展示


網(wǎng)頁題目:基于Python的Grib數(shù)據(jù)可視化
文章鏈接:http://www.dlmjj.cn/article/djeciod.html