bcon檔案之視覺化(bcon2icon.py)
Table of contents
背景
- BCON檔案與一般5維的ioapi.nc檔案有很大的出入,除了維度的差異,方向上也有很大的不同。需特別加以處理。
- BCON的成果圖可以參考沙塵暴案例、或美國西北太平洋區域空品預報系統(AIRPACT)之邊界條件。
- 程式檔:bcon2icon.py
程式說明
IO’s
- 引數:邊界條件檔案名稱(必須含有網格名稱,
res={'CWBWRF_45k', 'SECN_9k', 'TWEPA_3k'}
3者其中一個) - 模版檔案:
'/nas1/cmaqruns/2022fcst/data/bcon/template'+tpl[i]+'_'+ext+'.nc'
其中的字尾對照表tpl={0:'SN',1:'WE',2:'SN',3:'WE'}
- 程式會將
template
置換成today
,另存新檔備用。
4邊迴圈的規則
- 4邊的順序依序是南、東、北、西邊界。按照nbnd維度的逆時針行進方向
- 改成icon格式後,垂直軸變成圖面的y方向,圖面的x軸先設定為自西向東、或自南向北。
- y方向放大3倍,因此需要進行高度的內插。此處因不處理非等間距高度的問題,故以簡單的線型內插即可。
- 北面與西面邊界x方向與檔案原來的nbnd維度相反,此處以一字典(
drn[i]
)來取代if區段的做法。 - 最後要儲存前,北、西邊界再將x軸進行一次性反轉(
np.flip()
)。 - 此4個圖向右排列,即為BCON檔案的逆時針次序。
for i in range(4):
...
for v in V1[3]:
nc1[v][:]=0.
if v not in Vb[2]:continue
nc1v=np.zeros(shape=nc1[v].shape)
nc1[v][:,0,1::3,i1s[i]:i2s[i]]=nc[v][:,:,ibnd[i][0]:ibnd[i][1]:drn[i]]
nc1[v][:,0,0,:] =nc1[v][:,0,1,:]
nc1[v][:,0,-1,:]=nc1[v][:,0,-2,:]
nc1[v][:,0,2:-1:3,:]=(nc1[v][:,0,1:-2:3,:]*2+nc1[v][:,0,4::3,:] )/3
nc1[v][:,0,3:-1:3,:]=(nc1[v][:,0,1:-2:3,:] +nc1[v][:,0,4::3,:]*2)/3
if i>=2:
nc1[v][:]=np.flip(nc1[v][:],axis=3)
nc1.close()
程式下載