GRIB是WMO開發的一種用於交換和存儲規則分佈數據的二進制文件格式,主要用來表示數值天氣預報的產品資料。現行的GRIB 碼版本有GRIB1 和GRIB2 兩種格式。因爲小編只接觸過GRIB1數據,因此本文僅講解如何讀取GRIB1數據。windows
使用Python讀取GRIB數據要根據在何種平臺分別討論。數組
1、Linux及Mac OS系統下spa
Linux、Mac OS系統下使用Python語言實現Grib數據讀取主要依靠pygrib庫,pygrib是歐洲中期天氣預報中心(ECMWF)的GRIG API C庫的Python接口,經過這個庫就能夠將Grib數據讀取出來。命令行
(一)導入pygrib模塊blog
>>> import pygrib接口
(二)打開Grib文件開發
>>> grbs = pygrib.open('/Users/Kallan/Documents/data/echhae50.082')文檔
(三)提取文件信息cmd
>>> grbs.seek(0)
>>> for grb in grbs:
grb
1:Geopotential Height:gpm (instant):regular_ll:isobaricInhPa:level 500:fcst time 24 :from 201507081200
信息解讀
1 :數據列表的行號,有的文件可能包括多個數據
Geopotential Height:數據的名稱
gpm (instant):數據的單位
regular_ll:常規數據,其實這個字段我也不清楚
isobaricInhPa:這個字段表示的是數據屬性,此處表示是以hPa爲單位的等壓面
level 500:這個字段表示的是高度層
fcst time 24 :預報時效
from 201507081200 :起報時間
綜合上面的信息能夠得出,這個文件是從2015年7月8日12時開始的24小時後500hPa等壓面高度場數據
(四)導出文件數據
2、Windows系統下
windows系統下並不能使用pygrib直接讀取GRIB數據,主要緣由是:GRIB_API在Windows下沒法編譯安裝,從而致使pygrib沒法安裝。我曾經也爲這個問題苦惱了好久,也到ECMWF論壇裏找了好久,也給ECMWF發了郵件,迴應我沒有作Windows版本的打算,因此在Windows下直接用pygrib讀取GRIB數據是基本不可能實現了。
後來經過大量的百度,仍是找到了在Windows下讀取GRIB數據的方法:
一種是在Cygwin中安裝pygrib,將pygrib的方法編譯成讀取GRIB的exe;
第二種是經過一個第三方的程序wgrib,先用wgrib把數據讀存到txt,而後再用python讀取txt文件;
第三種是經過官方的GRIB數聽說明文檔本身編寫解碼程序。
首先嚐試了Cygwin,pygrib成功編譯出了exe,可是沒法運行,感受Cygwin稍微複雜,因此我沒有繼續研究這一種方法,直接轉向第二種方法。
(一)wgrib
在cmd中直接運行wgrib.exe可獲得如何使用的幫助信息。
知道如何使用wgrib程序後咱們就能夠使用os.system在Python中執行Windows命令行程序wgrib了
這樣就能夠在指定目錄找到輸出的txt文件,而後將txt文件中的數據轉換成數組。
原數據是37*37的數組,而輸出的數據是每一個數據佔一行,因此須要進行一下轉換
(二)本身編寫解碼庫
編寫解碼程序的過程我已經記不清了,可是程序已經放到了GitHub中,你們可從頭條號主頁下方的GitHub菜單進入,裏面還有GRIB的官方說明文檔,方便你們照着說明文檔繼續完善。
因爲小編只用到了GRIB1格式的數據,因此只寫了GRIB1的解碼庫,並且僅僅是將數據導出功能,若是有感興趣的同窗,能夠繼續完善這個庫。