自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

基于Python的Grib數(shù)據(jù)可視化

大數(shù)據(jù) 數(shù)據(jù)可視化 后端
利用Python語言實(shí)現(xiàn)Grib數(shù)據(jù)可視化主要依靠三個(gè)庫——pygrib、numpy和matplotlib。pygrib是歐洲中期天氣預(yù)報(bào)中心的GRIG API C庫的Python接口,通過這個(gè)庫可以將Grib數(shù)據(jù)讀取出來;numpy是Python的一種開源的數(shù)值計(jì)算擴(kuò)展,這種工具可用來存儲(chǔ)和處理大型矩陣;matplotlib是python著名的繪圖庫,十分適合交互式地進(jìn)行制圖。

[[208134]]

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

一、庫的安裝

(一)matplotlib安裝

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

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

1、安裝nose

解壓縮后,進(jìn)入命令提示符 運(yùn)行 

  1. python3 setup.py install 

2、安裝numpy

解壓縮后,進(jìn)入命令提示符 運(yùn)行

  1. python3 setup.py install 

3、安裝pyparsing

解壓縮后,進(jìn)入命令提示符 運(yùn)行

  1. python3 setup.py install 

4、安裝python-dateutil

解壓縮后,進(jìn)入命令提示符 運(yùn)行

  1. python3 setup.py install 

5、安裝cycler

解壓縮后,進(jìn)入命令提示符 運(yùn)行

  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

解壓縮后,進(jìn)入命令提示符 運(yùn)行

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

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

修改好就可以正常安裝了

  1. python3 setup.py install 

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

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

(一)導(dǎo)入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ù)列表的行號(hào),有的文件可能包括多個(gè)數(shù)據(jù)

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

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

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

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

level 500:這個(gè)字段表示的是高度層

fcst time 24 :預(yù)報(bào)時(shí)效

from 201507081200 :起報(bào)時(shí)間

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

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

(一)導(dǎo)入需要的模塊

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

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

  1. >>> plt.figure() 
  2.  
  3. <matplotlib.figure.Figure object at 0x107e65198>  

(三)創(chuàng)建一個(gè)basemap實(shí)例

  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. <matplotlib.collections.LineCollection object at 0x1091c1f28> 
  10.  
  11. >>> m.drawcountries(linewidth=0.25) 
  12.  
  13. <matplotlib.collections.LineCollection object at 0x10621d0f0> 
  14.  
  15. >>> m.fillcontinents(color='coral',lake_color='aqua'
  16.  
  17. >>> m.drawmapboundary(fill_color='aqua'
  18.  
  19. <matplotlib.patches.Rectangle object at 0x10918b3c8> 
  20.  
  21. >>> m.drawmeridians(np.arange(0,360,30)) 
  22.  
  23. >>> m.drawparallels(np.arange(-90,90,30))  

(四)將lat,lon的數(shù)據(jù)格式轉(zhuǎn)換成投影需要的格式存入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. <matplotlib.text.Text object at 0x10918bda0> 
  4.  
  5. >>> plt.show()  

(七)圖像展示

 

責(zé)任編輯:龐桂玉 來源: 36大數(shù)據(jù)
相關(guān)推薦

2020-03-11 14:39:26

數(shù)據(jù)可視化地圖可視化地理信息

2023-04-04 08:10:45

SQL數(shù)據(jù)可視化

2017-10-14 13:54:26

數(shù)據(jù)可視化數(shù)據(jù)信息可視化

2015-10-29 09:36:48

2022-08-26 09:15:58

Python可視化plotly

2022-02-23 09:50:52

PythonEchartspyecharts

2020-05-26 11:34:46

可視化WordCloud

2023-12-14 09:00:00

數(shù)據(jù)可視化Python數(shù)據(jù)集

2017-06-29 11:26:08

Python數(shù)據(jù)可視化

2020-09-02 13:56:03

Python可視化數(shù)據(jù)

2023-04-17 07:32:41

2024-08-20 18:16:49

數(shù)據(jù)可視化Python

2018-11-30 10:28:44

Python反爬網(wǎng)頁

2017-02-23 09:42:53

大數(shù)據(jù)數(shù)據(jù)可視化技術(shù)誤區(qū)

2021-08-30 11:40:06

PythonSeaborn可視化

2022-07-05 15:11:42

Python數(shù)據(jù)可視化機(jī)器學(xué)習(xí)

2015-08-20 10:00:45

可視化

2018-12-03 16:50:23

數(shù)據(jù)可視化數(shù)據(jù)分析薪水

2019-01-21 15:10:11

佩奇可視化數(shù)據(jù)

2021-10-11 08:04:22

Python數(shù)據(jù)行程
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)