python如何繪制登陸時(shí)的衛(wèi)星云圖(TBB)
根據(jù)前面的文章python處理衛(wèi)星云圖獲取亮溫值可以從hdf文件中獲取某時(shí)刻某經(jīng)緯度的亮溫值。
然后就是把這些讀取的亮溫值可視化,繪制成TBB的衛(wèi)星云圖。
先展示一下結(jié)果:
1.讀取hdf文件
詳見上篇文章,這里不再贅述,再貼一下代碼。
主要是從全圓盤標(biāo)對(duì)稱文件經(jīng)緯度對(duì)照表獲取經(jīng)緯度和從hdf文件中獲取亮溫值。
# 從全圓盤標(biāo)對(duì)稱文件經(jīng)緯度對(duì)照表獲取經(jīng)緯度 def getLatLonFromdat(): lonlatfile = 'F:/Satellite_Imagery/Code/NOM_ITG_2288_2288(0E0N)_LE.dat' with open(lonlatfile, 'rb') as f: #lon_fy = np.fromfile(f, count=2288 * 2288, dtype='float32') + 79 # 先存經(jīng)度,根據(jù)衛(wèi)星的不同加上對(duì)應(yīng)的經(jīng)度值 #lat_fy = np.fromfile(f, count=2288 * 2288, dtype='float32') # 再存緯度 data = np.fromfile(f, dtype='float32') data = data.reshape([2288, 2288, 2], order='F') #lon = lon_fy.reshape([2288, 2288], order='F') #lat = lat_fy.reshape([2288, 2288], order='F') lon = data[:, :, 0] + 104.5 lat = data[:, :, 1] return lon, lat
# 從hdf文件中獲取亮溫值 def getTBBFromhdf(): hdfFile = h5py.File('F:/IR/Satellite_Imagery/IR_data/利奇馬/FY2G_FDI_ALL_NOM_20190811_1200.hdf', 'r') db1 = hdfFile['/CALChannelIR1'] hw1 = hdfFile['/NOMChannelIR1'] # db2 = hdfFile['/CALChannelIR2'] # hw2 = hdfFile['/NOMChannelIR2'] # db3 = hdfFile['/CALChannelIR3'] # hw3 = hdfFile['/NOMChannelIR3'] # db4 = hdfFile['/CALChannelIR4'] # hw4 = hdfFile['/NOMChannelIR4'] infoh = hdfFile['/NomFileInfo'] # 查看衛(wèi)星的經(jīng)緯度 lat_hdf = infoh[0][3] lon_hdf = infoh[0][4] # print(lat_hdf) # print(lon_hdf) hw = hw1[()] db = db1[()] # 獲取定標(biāo)表的值 tb = np.zeros(shape=(2288, 2288)) # 2288*2288的圖像每個(gè)具體的亮溫值 for i in range(2288): for j in range(2288): if hw[i][j] == 65535 or hw[i][j] == 65534: tb[i][j] = 0 else: a = hw[i][j] tb[i][j] = db[0][a] tb = tb.T return tb
2. 畫圖
fig = plt.figure(figsize=(8, 6)) m = Basemap(projection='cyl', llcrnrlat=10, llcrnrlon=110, urcrnrlat=40, urcrnrlon=140) # 使用Basemap繪制地圖,這里可以讀取對(duì)應(yīng)的地圖shp文件。 m.drawcoastlines(color='black') m.drawstates(color='black') m.drawcountries(color='black') x, y = m(lon, lat) # 將lats / lons轉(zhuǎn)換為地圖投影坐標(biāo) # 繪制輪廓圖 # 這里data就是計(jì)算的亮溫值,x,y就是經(jīng)緯度投影的坐標(biāo) cf = m.contourf(x, y, data, levels=np.linspace(180, 301, 400), cmap='jet') cbar = m.colorbar(cf, location='right', size='5%', pad='2%') font = {'family': 'serif', 'color': 'darkred', 'weight': 'normal', 'size': 16, } cbar.set_label('Brightness Temperature ( K )', fontdict=font) m.drawmeridians(np.arange(110, 140, 5), labels=[0, 0, 0, 1]) m.drawparallels(np.arange(10, 40, 5), labels=[1, 0, 0, 0]) # 將最佳路徑集上的經(jīng)緯度映射到地圖上,再把該點(diǎn)繪制在地圖上 best_lon, best_lat = m(best_lon, best_lat) m.plot(best_lon, best_lat, 'o', color='fuchsia', ms=5) plt.xticks(fontsize=20) plt.yticks(fontsize=20) plt.title('Brightness Temperature(2019081112) ', fontdict=font) plt.savefig('test.png') plt.show()
注:讀取地圖文件時(shí),可以使用readshapefile函數(shù)。
以2019081112時(shí)刻為例,對(duì)應(yīng)地圖10-40,110-140的區(qū)域,讀取對(duì)應(yīng)的hdf文件,繪制該點(diǎn)的衛(wèi)星云圖的亮溫值。
總結(jié)
這是找了好久,調(diào)整過的結(jié)果。
以上僅為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用PyTorch實(shí)現(xiàn)限制GPU顯存的可使用上限
從?PyTorch?1.4?版本開始,引入了一個(gè)新的功能,可以允許用戶為特定的?GPU?設(shè)備設(shè)置進(jìn)程可使用的顯存上限比例,下面我們就來看看具體實(shí)現(xiàn)方法吧2024-03-03python scrapy腳本報(bào)錯(cuò)問題及解決
這篇文章主要介紹了python scrapy腳本報(bào)錯(cuò)問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02Python判斷和循環(huán)語句的分析與應(yīng)用
判斷語句是用來篩選條件,過濾條件的。循環(huán)語句是用來解決重復(fù)性代碼的問題,提高工作效率。今天的知識(shí)點(diǎn)不多,耐心看完吧2022-07-07python虛擬環(huán)境多種創(chuàng)建方式圖文詳解
創(chuàng)建虛擬環(huán)境是為了讓項(xiàng)目運(yùn)行在一個(gè)獨(dú)立的局部的Python環(huán)境中,使得不同環(huán)境的項(xiàng)目互不干擾,這篇文章主要給大家介紹了關(guān)于python虛擬環(huán)境多種創(chuàng)建方式的相關(guān)資料,需要的朋友可以參考下2024-08-08pyinstaller執(zhí)行報(bào)錯(cuò)的問題解決
有時(shí)候,PyInstaller可能無法正確識(shí)別和打包所有的依賴項(xiàng),導(dǎo)致名稱錯(cuò)誤,本文主要介紹了pyinstaller執(zhí)行報(bào)錯(cuò)的解決方案,感興趣的可以了解一下2023-11-11Python使用scipy模塊實(shí)現(xiàn)一維卷積運(yùn)算示例
這篇文章主要介紹了Python使用scipy模塊實(shí)現(xiàn)一維卷積運(yùn)算,結(jié)合實(shí)例形式分析了scipy模塊的功能及使用scipy模塊進(jìn)行一維卷積運(yùn)算的相關(guān)操作技巧,需要的朋友可以參考下2019-09-09基于Python實(shí)現(xiàn)人臉識(shí)別和焦點(diǎn)人物檢測(cè)功能
基于dlib庫的模型,實(shí)現(xiàn)人臉識(shí)別和焦點(diǎn)人物的檢測(cè)。最后呈現(xiàn)的效果為焦點(diǎn)人物的識(shí)別框顏色與其他人物框不一樣。對(duì)Python人臉識(shí)別和焦點(diǎn)人物檢測(cè)設(shè)計(jì)過程感興趣的朋友一起看看吧2021-10-10anaconda3:conda not found報(bào)錯(cuò)問題解決
這篇文章主要給大家介紹了關(guān)于anaconda3:conda not found報(bào)錯(cuò)問題解決的相關(guān)資料,Anaconda指的是一個(gè)開源的Python發(fā)行版本,其包含了conda、Python等180多個(gè)科學(xué)包及其依賴項(xiàng),需要的朋友可以參考下2023-10-10