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 tb2. 畫圖
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)文章
Python?+?Selenium?實(shí)現(xiàn)模擬登錄jd實(shí)例分享
這篇文章主要介紹了Python?+?Selenium?實(shí)現(xiàn)模擬登錄jd實(shí)例分享的相關(guān)資料,需要的朋友可以參考下2023-06-06
Python logging日志模塊的核心用法與實(shí)操技巧
logging 是 Python 標(biāo)準(zhǔn)庫中的一個(gè)模塊,它提供了靈活的日志記錄功能,通過 logging,開發(fā)者可以方便地將日志信息輸出到控制臺(tái)、文件、網(wǎng)絡(luò)等多種目標(biāo),本文給大家介紹了Python logging日志模塊的核心用法與實(shí)操技巧,需要的朋友可以參考下2026-03-03
Python構(gòu)建機(jī)器學(xué)習(xí)API服務(wù)的操作過程
這篇文章主要介紹了Python構(gòu)建機(jī)器學(xué)習(xí)API服務(wù)的操作過程,通過本文的指導(dǎo),讀者可以學(xué)習(xí)如何使用Python構(gòu)建機(jī)器學(xué)習(xí)模型的API服務(wù),并了解到在實(shí)際應(yīng)用中需要考慮的一些關(guān)鍵問題和解決方案,從而為自己的項(xiàng)目提供更好的支持和服務(wù),需要的朋友可以參考下2024-04-04
升級(jí)keras解決load_weights()中的未定義skip_mismatch關(guān)鍵字問題
這篇文章主要介紹了升級(jí)keras解決load_weights()中的未定義skip_mismatch關(guān)鍵字問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-06-06
OpenCV MediaPipe實(shí)現(xiàn)顏值打分功能
這篇文章主要介紹了通過OpenCV MediaPipe實(shí)現(xiàn)攝像頭實(shí)時(shí)檢測(cè)顏值打分功能,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定的幫助,感興趣的可以了解一下2021-12-12
Python中多個(gè)數(shù)組行合并及列合并的方法總結(jié)
下面小編就為大家分享一篇Python中多個(gè)數(shù)組行合并及列合并的方法總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-04-04

