延續前一篇文章,使用pyresample轉換了衛星雲圖的投影。接下來要在圖上加上海岸線和經緯線。
from PIL import Image import numpy as np import pyresample as pr from pycoast import ContourWriterAGG import aggdraw Source_def = pr.load_area('Table/Projection.proj','KoChi_1800') # 原始FDK資料的投影 Image_def = pr.load_area('Table/Projection.proj','LCC_1000') # 輸出圖檔的投影 PGMIR1='HMW822090416IR1.pgm' cntS = np.fromfile(PGMIR1,dtype='uint8') dsize=1800 arraysize=dsize*dsize cntS = cntS[-arraysize:] cntS = cntS.reshape((dsize,dsize)) RoI = 5000 # 取樣之影響半徑 Cnt = pr.kd_tree.resample_nearest(Source_def, cntS, Image_def, radius_of_influence=RoI) Img = Image.fromarray(Cnt,'L') Img_new=Img.convert('RGB') #把灰階的Img轉換成RGB的Img_new
前面這些程式碼先把要輸出的圖準備好,注意,要把圖轉換成RBG的格式,否則海岸線和經緯線也會是黑白的。
要完成這件事情要準備一些東西。首先要下載gshhg提供的shape file,依照範例程式,解壓縮的shape file放在Table/gshhg-shp-2.3.7資料夾內。再來隨便找一個字型檔,範例程式用的是LiberationMono-Regular.ttf。
繪海岸線需用到pycoast這套件中的ContourWriterAGG,字型則是用到aggdraw。
ShapePath = 'Table/gshhg-shp-2.3.7' cw = ContourWriterAGG(ShapePath) cw.add_coastlines(Img_new,Image_def,resolution='l',outline=(255,0,0),width=2) #畫紅色的海岸線 ttfFile = 'Table/LiberationMono-Regular.ttf' font = aggdraw.Font('white',ttfFile) cw.add_grid(Img_new,Image_def,(20,20),(10,10),font,outline=(0,0,255),width=3) #畫藍色的經緯線,20度畫一條,10度一格次網格。 Img_new.show()
最後的結果
沒有留言:
張貼留言