2022年9月25日 星期日

衛星雲圖的投影,用pyresample

這個程式的目的是要做投影的轉換,原本高知大學提供的衛星雲圖是等經緯度的投影

等經緯度的投影轉換成其他投影,例如藍伯特投影(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

沒有留言:

張貼留言

用matplotlib畫衛星雲圖

用另外一種方式畫衛星雲圖。這方法式結合了matplotlib、pyresample和cartopy 使用viridis這個色階畫出來長這樣。