基於Python的Grib資料視覺化

2021-08-14 07:15:02 字數 4701 閱讀 3750

利用python語言實現grib資料視覺化主要依靠三個庫——pygrib、numpy和matplotlib。pygrib是歐洲中期天氣預報中心(ecmwf)的grig api c庫的python介面,通過這個庫可以將grib資料讀取出來;numpy是python的一種開源的數值計算擴充套件,這種工具可用來儲存和處理大型矩陣;matplotlib是python著名的繪相簿,它提供了一整套和matlab相似的命令api,十分適合互動式地進行製圖;在資料視覺化過程中,我們常需要將資料在地圖上畫出來,所以還需要matplotlib的乙個子包basemap,負責地圖繪製。

(一)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 make && date

3 sudo make install && date

7、安裝freetype

1  ./configure

2 make && date

3 sudo make install && date

8、安裝libpng

1  ./configure

2 make && date

3 sudo make install && date

9、安裝matplotlib-1.5.0

解壓縮後,進入命令提示符 執行

1 python3 setup.py install
geos

pyproj

1、安裝geos

1  ./configure

2 make && date

3 sudo make install && date

2、安裝pyproj

1 python3 setup.py install
3、安裝basemap

1 python3 setup.py install
jasper

grib api

numpy

pyproj

由於之前已經安裝了numpy和pyproj,這裡只需安裝jasper和grib api即可安裝pygrib

1、安裝jasper

1 ./configure

2 make && date

3 sudo make install && date

2、安裝grib api

1 ./configure --with-jasper='/usr/local/'

2 make && date

3 sudo make install && date

3、安裝pygrib

安裝pygrib之前首先要根據自己的實際情況修改檔案目錄下的setup.cfg檔案,最主要的就是修改grib_api_dir和jasper_dir,這兩個是剛剛安裝的jasper和grib api的路徑,如果這兩個位址不正確安裝會報錯

修改好就可以正常安裝了

1 python3 setup.py install
(一)匯入pygrib模組

1 >>> import pygrib
(二)開啟grib檔案

1 >>> grbs = pygrib.open('/users/kallan/documents/data/echhae50.082')
(三)提取檔案資訊

1 >>> grbs.seek(0)

2 >>> for grb in grbs:

3 grb

4 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 :起報時間

綜合上面的資訊可以得出,這個檔案是從2023年7月8日12時開始的24小時後500hpa等壓面高度場資料

1 >>> grb = grbs.select(name='geopotential height')[0]

2 >>> data = grb.values

3 >>> print(data.shape,data.min(),data.max())

4 (37, 37) 5368.6796875 5941.0390625

5 >>> lat,lon=grb.latlons()

6 >>> print(lat,'\n',lon)

7 [[ 0. 0. 0. ..., 0. 0. 0. ]

8 [ 2.5 2.5 2.5 ..., 2.5 2.5 2.5]

9 [ 5. 5. 5. ..., 5. 5. 5. ]

10 ...,

11 [ 85. 85. 85. ..., 85. 85. 85. ]

12 [ 87.5 87.5 87.5 ..., 87.5 87.5 87.5]

13 [ 90. 90. 90. ..., 90. 90. 90. ]]

14 [[-90. -87.5 -85. ..., -5. -2.5 0. ]

15 [-90. -87.5 -85. ..., -5. -2.5 0. ]

16 [-90. -87.5 -85. ..., -5. -2.5 0. ]

17 ...,

18 [-90. -87.5 -85. ..., -5. -2.5 0. ]

19 [-90. -87.5 -85. ..., -5. -2.5 0. ]

20 [-90. -87.5 -85. ..., -5. -2.5 0. ]]

1 >>> import matplotlib.pyplot as plt

2 >>> from mpl_toolkits.basemap import basemap

3 >>> import numpy as np

1 >>> plt.figure()

2

1 >>> m=basemap(projection='mill',lat_ts=10,llcrnrlon=lon.min(), \

2 urcrnrlon=lon.max(),llcrnrlat=lat.min(),urcrnrlat=lat.max(), \

3 resolution='c')

4 >>> m.drawcoastlines(linewidth=0.25)

5 6 >>> m.drawcountries(linewidth=0.25)

7 8 >>> m.fillcontinents(color='coral',lake_color='aqua')

9 >>> m.drawmapboundary(fill_color='aqua')

10 11 >>> m.drawmeridians(np.arange(0,360,30))

12 >>> m.drawparallels(np.arange(-90,90,30))

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 >>> plt.show()

matlab讀取grib2資料

採用nctoolbox 詳細說明見 nctoolbox提供幾種型別的資料介面,官方推薦最新的ncgeodataset ncdataset and cfdataset 較老,為相容目的保留 常用命令 nc ncgeodataset grib2 nc.netcdf 類似ncdisp或ncdump命令 讀...

python讀取grib2檔案

一 安裝pygrib庫 linux安裝conda後執行命令 conda install c conda forge pygrib y 二 讀取檔案操作 1.獲得屬性列表 import pygrib import sys import pandas as pd if name main fr sys....

基於python資料分析

資料質量分析是資料探勘中資料準備過程的重要 環,是資料預處理的前提,也是資料探勘分析結論有效性和準確性的基礎,沒有可信的資料,資料探勘構建的模型將是空中樓閣。資料質量分析的主要任務是檢查原始資料中是否存在髒資料,髒資料一般是指不符合要求,以及不能直接進行相應分析的資料。在常見的資料探勘工作中,髒資料...