python讀取grib grib2氣象數據


如何讀取GRIB數據?快看Python大神整理的干貨!

橙子心法

百家號17-11-0116:30

GRIB是WMO開發的一種用於交換和存儲規則分布數據的二進制文件格式,主要用來表示數值天氣預報的產品資料。現行的GRIB 碼版本有GRIB1 和GRIB2 兩種格式。由於小編只接觸過GRIB1數據,所以本文僅講解如何讀取GRIB1數據。

使用Python讀取GRIB數據要根據在何種平台分別討論。

一、Linux及Mac OS系統下

Linux、Mac OS系統下使用Python語言實現Grib數據讀取主要依靠pygrib庫,pygrib是歐洲中期天氣預報中心(ECMWF)的GRIG API C庫的Python接口,通過這個庫就可以將Grib數據讀取出來。

(一)導入pygrib模塊

>>> import pygrib

(二)打開Grib文件

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

(三)提取文件信息

>>> 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等壓面高度場數據

(四)導出文件數據

二、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的解碼庫,而且僅僅是將數據導出功能,如果有感興趣的同學,可以繼續完善這個庫。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM