這篇文章主要為大家展示了“如何讀取netcdf數(shù)據(jù)并在matplotlib Basemap上繪圖”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“如何讀取netcdf數(shù)據(jù)并在matplotlib Basemap上繪圖”這篇文章吧。
成都網(wǎng)絡(luò)公司-成都網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)十余年經(jīng)驗(yàn)成就非凡,專(zhuān)業(yè)從事網(wǎng)站建設(shè)、成都網(wǎng)站制作,成都網(wǎng)頁(yè)設(shè)計(jì),成都網(wǎng)頁(yè)制作,軟文發(fā)稿,一元廣告等。十余年來(lái)已成功提供全面的成都網(wǎng)站建設(shè)方案,打造行業(yè)特色的成都網(wǎng)站建設(shè)案例,建站熱線(xiàn):18980820575,我們期待您的來(lái)電!
netcdf是一種數(shù)據(jù)格式;
matplotlib是python中的一個(gè)畫(huà)圖插件;
使用python做地圖效果的,是工作中的需要,氣象數(shù)據(jù)一般都存在netcdf中,也沒(méi)有深入學(xué)習(xí)python語(yǔ)言,只是按照要求達(dá)到了個(gè)實(shí)現(xiàn)效果。
下邊的代碼是詳細(xì)列舉了如何從netcdf中讀取數(shù)據(jù),在繪制在basemap地圖上的效果;
python的開(kāi)發(fā)環(huán)境和下載代碼中的各種輪子,請(qǐng)百度搜索去部署,我也不熟,下邊的代碼是基于python2.7進(jìn)行開(kāi)發(fā)的,netcdf的樣例數(shù)據(jù)從網(wǎng)上也能下載到;
#設(shè)置編碼格式,引用所需要的各種類(lèi)庫(kù)
#coding=utf-8
import matplotlib.pyplot as plt
import numpy as np
import scipy.ndimage
from mpl_toolkits.basemap import Basemap, cm
import netCDF4 as nc
import matplotlib.colors as colors
#netcdf文件的路徑設(shè)置,使用反向斜杠,和windows常用不一樣
filename="E:/git/grib2json/20171011/20171011-3KM_WEST.nc"
#打開(kāi)nc文件,從中按照變量獲取數(shù)據(jù),詳細(xì)學(xué)習(xí)nc數(shù)據(jù)中的格式
data=nc.Dataset(filename)
lat= data.variables['XLAT'][:].squeeze()
lon= data.variables['XLONG'][:].squeeze()
pm25=data.variables['pm25'][:].squeeze()
cutpm= pm25[20, 4, :, :]
#初始化一個(gè)basemap的對(duì)象,設(shè)置坐標(biāo)系為經(jīng)緯度,后邊是范圍
m = Basemap(epsg=4326,resolution='i',llcrnrlat=23,urcrnrlat=37,llcrnrlon=97,urcrnrlon=112)
fig1 = plt.figure()
x, y = m(lon, lat)
# 初始化設(shè)置顏色級(jí)別,根據(jù)不同的值渲染不同顏色
levels = [0, 35, 75, 115, 150, 250, 350, 500]
myRBB = np.array([[153, 219, 231], [26, 161, 206], [0, 123, 217], [103, 255, 136], [10, 227, 50], [50, 244, 62],[228, 243, 62],[226, 151, 62]])
cmap = colors.ListedColormap(myRBB / 255.0)
norm = colors.BoundaryNorm(boundaries=levels, ncolors=len(levels))
#根據(jù)以上的x\y\值數(shù)組,在地圖上進(jìn)行畫(huà)圖
CS2 = m.contourf(x, y, cutpm,cmap=cmap,alpha=0.75)
#畫(huà)海岸線(xiàn)和國(guó)家邊界
m.drawcoastlines(linewidth=0.5)
m.drawcounties(linewidth=0.3)
plt.title('pm25', size=20)
#加載個(gè)base自帶的地圖圖片
m.etopo()
#顯示繪畫(huà)窗口
plt.show()
注:使用時(shí),請(qǐng)去掉所有注釋?zhuān)菀讏?bào)錯(cuò)
以下是效果圖:
以上是“如何讀取netcdf數(shù)據(jù)并在matplotlib Basemap上繪圖”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
當(dāng)前標(biāo)題:如何讀取netcdf數(shù)據(jù)并在matplotlibBasemap上繪圖
網(wǎng)站路徑:http://www.rwnh.cn/article24/jdjjje.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、域名注冊(cè)、全網(wǎng)營(yíng)銷(xiāo)推廣、網(wǎng)站營(yíng)銷(xiāo)、軟件開(kāi)發(fā)、網(wǎng)站設(shè)計(jì)公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)