วันพุธที่ 30 กรกฎาคม พ.ศ. 2557

ขั้นตอน-การต่อระวางโมเดลความสูง GTOPO30 2 ระวาง

การต่อGtopo30 dem 2 tiles ในFortran และ เปิดเป็นแผนที่ดูใน GRADS
เป็นวิธีการต่อโมเดลความสูงของผมเอง โดยผมต้องการต่อเพื่อเอาไปประมวลผลความสูงกับลมพื้นผิวในขั้นต่อไปเพื่อหาฝนที่เกี่ยวเนื่องกับภูเขา โปรแกรมอาจจะไม่สวยเพราะเขียนแบบลูกทุ่ง แต่ก็ใช้งานได้ ลองเอาไปทำกันดูครับ

1.) ดาวโหลดไฟล์โมเดลความสูงDEM Gtopo30 จาก https://lta.cr.usgs.gov/get_data ทำการswap dataของแต่ละTile ก่อน เช่น   dd if=gt30e100n40.dem of= DEM_tile_E100N40.dat conv=swab
2.) ต่อ DEM ใน Fortran ดังนี้
program mosaic_dem_2tiles
implicit none
character*150 :: infile_path
integer,parameter :: nrow=6000,ncol=4800                  ! dem dimension
integer,parameter :: row=6000,col=9600                    ! dem merged dimension
integer,parameter :: sizeofreal=4                         !-record size
integer,parameter :: sizeofint=2                          !-record size
integer*2,dimension(ncol,nrow) :: deml,demr               !-dem left and right
real*4,dimension(col,row) :: demn                         !-merged dem
integer :: i,j,m,n

infile_path='/home/mnattapon/RAID3storage4/research_icp/analysis_phb/beamblock_ans/dem_preparation/dem_raw_gtopo30/'
open(unit=10,file=trim(infile_path)//'E060N40.DEM2',form='unformatted',access='direct',recl=ncol*nrow*sizeofint)
open(unit=20,file=trim(infile_path)//'E100N40.DEM2',form='unformatted',access='direct',recl=ncol*nrow*sizeofint)
read(10,rec=1)deml
read(20,rec=1)demr
close(10);close(20)
print*,'merging...'
do i=1,ncol
  do j=1,nrow
         m=ncol+i
         n=nrow-j+1  !-row inverse dem left
         demn(i,n)=deml(i,j)*1.0
         demn(m,n)=demr(i,j)*1.0
  enddo
enddo
open(unit=30,file='DEM_2tiles_merged.dat',form='unformatted',access='direct',recl=col*row*sizeofreal)
write(30,rec=1)demn
close(30)
endprogram mosaic_dem_2tiles

3.)  เขียน GRADS control file เพื่อบอกให้โปรแกรมทราบ ตั้งชื่อว่า "ctl_read_merge_dem2tiles.ctl"
dset DEM_2tiles_merged.dat
title gtopo30 globaldem map 0.008333333333333 deg
undef -9999.0
XDEF 9600  LINEAR   60    0.00833333333333
YDEF 6000  LINEAR  -10    0.00833333333333
zdef 1 levels 0 1
tdef 1 linear 22Z24aug2010 1hr
vars 1
dem     0 99 elevation [m]
endvars
               
4)เปิด GRADS และเปิด control file ข้อสามมา
open ctl_read_merge_dem2tiles.ctl
set gxout shaded
d dem
cbarn

จะได้ผลลัพธ์ดังภาพ

ไม่มีความคิดเห็น:

แสดงความคิดเห็น