這個程式的目的是要做投影的轉換,原本高知大學提供的衛星雲圖是等經緯度的投影
等經緯度的投影轉換成其他投影,例如藍伯特投影(LCC),就需用到pyresample這套件。
Source_def = pr.load_area('../Table/Projection.proj','KoChi_1800') # 原始FDK資料的投影 Image_def = pr.load_area('../Table/Projection.proj','LCC_1000') # 輸出圖檔的投影
pyresample能夠把A投影的資料轉換成B投影,高知大學的資料是等經緯度的投影,定義在Source_def這個物件,而LCC則是定義在Image_def這個物件。定義的方式是用load_area這個函式從Porjection.Proj這檔案讀進來。
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.show()
pr.kd_tree.resample_nearest這函式是進行轉換,CntS是轉換前的亮溫影像資料(灰度值),Cnt是轉換後。最後把Cnt轉換成Image物件,就可以匯出成圖檔或show在螢幕上。
而Projection.proj是個文字檔,內容是投影相關設定。
KoChi_1800: description: KoChi University for GAME 1800x1800 projection: proj: eqc lat_0: 0.0 lon_0: 140.7 shape: height: 1800 width: 1800 area_extent: lower_left_xy: [-7870287.999084442,-2226389.8158654715] upper_right_xy: [2148466.1723101796,7792364.355529149] units: m LCC_1000: description: CWB LCC 1000x1000 projection: proj: lcc lat_1: 30.0 lat_2: 60.0 lon_0: 128.5 shape: height: 1000 width: 1000 area_extent: lower_left_xy: [-3756724.329617232, 417598.18009775586] upper_right_xy: [1876783.4435341065,6024050.1189276995] units: m
沒有留言:
張貼留言