利用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 install2、安裝numpy
解壓縮後,進入命令提示符 執行
1 python3 setup.py install3、安裝pyparsing
解壓縮後,進入命令提示符 執行
1 python3 setup.py install4、安裝python-dateutil
解壓縮後,進入命令提示符 執行
1 python3 setup.py install5、安裝cycler
解壓縮後,進入命令提示符 執行
1 python3 setup.py install6、安裝pkg-config
1 ./configure --with-intermal-glib7、安裝freetype2 make && date
3 sudo make install && date
1 ./configure8、安裝libpng2 make && date
3 sudo make install && date
1 ./configure9、安裝matplotlib-1.5.02 make && date
3 sudo make install && date
解壓縮後,進入命令提示符 執行
1 python3 setup.py installgeos
pyproj
1、安裝geos
1 ./configure2、安裝pyproj2 make && date
3 sudo make install && date
1 python3 setup.py install3、安裝basemap
1 python3 setup.py installjasper
grib api
numpy
pyproj
由於之前已經安裝了numpy和pyproj,這裡只需安裝jasper和grib api即可安裝pygrib
1、安裝jasper
1 ./configure2、安裝grib api2 make && date
3 sudo make install && date
1 ./configure --with-jasper='/usr/local/'3、安裝pygrib2 make && date
3 sudo make install && date
安裝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 plt2 >>> 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資料分析
資料質量分析是資料探勘中資料準備過程的重要 環,是資料預處理的前提,也是資料探勘分析結論有效性和準確性的基礎,沒有可信的資料,資料探勘構建的模型將是空中樓閣。資料質量分析的主要任務是檢查原始資料中是否存在髒資料,髒資料一般是指不符合要求,以及不能直接進行相應分析的資料。在常見的資料探勘工作中,髒資料...