2011年7月3日日曜日

JTWCのbest_trackをgradsで表示する

JTWCのbest_trackをgradsで表示する

台風再現実験において、best_trackデータをgradsで再現する gsスクリプトを作成
~/yoshi/best_trackで作成する

準備1
JTWCのサイトから、描きたいbest_trackデータを持ってくる
datファイルとしてファイルを作成する。
以下に中身を示す
 bwp011992.datの中身

WP, 01, 1992010306,   , BEST,   0,  33N, 1757E,  20
WP, 01, 1992010312,   , BEST,   0,  32N, 1769E,  20
WP, 01, 1992010318,   , BEST,   0,  35N, 1778E,  20
WP, 01, 1992010400,   , BEST,   0,  40N, 1787E,  20
WP, 01, 1992010406,   , BEST,   0,  46N, 1792E,  20
WP, 01, 1992010412,   , BEST,   0,  50N, 1791E,  25
WP, 01, 1992010418,   , BEST,   0,  53N, 1788E,  25
WP, 01, 1992010500,   , BEST,   0,  56N, 1784E,  25
WP, 01, 1992010506,   , BEST,   0,  59N, 1777E,  25
WP, 01, 1992010512,   , BEST,   0,  60N, 1768E,  30
WP, 01, 1992010518,   , BEST,   0,  61N, 1760E,  30
WP, 01, 1992010600,   , BEST,   0,  62N, 1752E,  35
WP, 01, 1992010606,   , BEST,   0,  62N, 1743E,  40
WP, 01, 1992010612,   , BEST,   0,  62N, 1735E,  45
WP, 01, 1992010618,   , BEST,   0,  60N, 1727E,  50
WP, 01, 1992010700,   , BEST,   0,  59N, 1719E,  50
WP, 01, 1992010706,   , BEST,   0,  58N, 1710E,  55
WP, 01, 1992010712,   , BEST,   0,  58N, 1701E,  60
WP, 01, 1992010718,   , BEST,   0,  58N, 1690E,  65
WP, 01, 1992010800,   , BEST,   0,  59N, 1678E,  70
WP, 01, 1992010806,   , BEST,   0,  60N, 1665E,  70
WP, 01, 1992010812,   , BEST,   0,  60N, 1651E,  70
WP, 01, 1992010818,   , BEST,   0,  60N, 1636E,  70
WP, 01, 1992010900,   , BEST,   0,  62N, 1621E,  70
WP, 01, 1992010906,   , BEST,   0,  65N, 1606E,  65
WP, 01, 1992010912,   , BEST,   0,  69N, 1593E,  65
WP, 01, 1992010918,   , BEST,   0,  73N, 1580E,  60
WP, 01, 1992011000,   , BEST,   0,  77N, 1567E,  60
WP, 01, 1992011006,   , BEST,   0,  83N, 1556E,  55
WP, 01, 1992011012,   , BEST,   0,  89N, 1545E,  50
WP, 01, 1992011018,   , BEST,   0,  93N, 1534E,  45
WP, 01, 1992011100,   , BEST,   0,  95N, 1523E,  45
WP, 01, 1992011106,   , BEST,   0,  96N, 1512E,  40
WP, 01, 1992011112,   , BEST,   0,  97N, 1501E,  40
WP, 01, 1992011118,   , BEST,   0,  98N, 1490E,  35
WP, 01, 1992011200,   , BEST,   0,  99N, 1479E,  35
WP, 01, 1992011206,   , BEST,   0, 101N, 1469E,  35
WP, 01, 1992011212,   , BEST,   0, 104N, 1459E,  35
WP, 01, 1992011218,   , BEST,   0, 109N, 1450E,  35
WP, 01, 1992011300,   , BEST,   0, 116N, 1442E,  30
WP, 01, 1992011306,   , BEST,   0, 122N, 1434E,  30
WP, 01, 1992011312,   , BEST,   0, 128N, 1426E,  30
WP, 01, 1992011318,   , BEST,   0, 135N, 1420E,  30
WP, 01, 1992011400,   , BEST,   0, 143N, 1413E,  30
WP, 01, 1992011406,   , BEST,   0, 152N, 1409E,  30
WP, 01, 1992011412,   , BEST,   0, 164N, 1408E,  30
WP, 01, 1992011418,   , BEST,   0, 179N, 1412E,  30
WP, 01, 1992011500,   , BEST,   0, 202N, 1428E,  30
WP, 01, 1992011506,   , BEST,   0, 230N, 1470E,  25                          

その次に、
・draw_track3_1.gsでreadするデータのファイル名を変える(今、作ったファイルを参照させる)
・whileループの繰り返し数を参照するデータの数に合わせる

準備完了
まずgradsを立ち上げる
$grads
ga>open gmap.ctl
ga>blankmap.gs
これで白地図が完成
(白地図が作れないときは、適当に地形データを作成、開いたものに記述する)

ga>draw_track3_1.gs
台風の強度別(Vmax)に色を変えてプロット
*vmax
  vmax=subwrd(tmp2,9)
  say vmax_ vmax
if (vmax>64)
 say T vmax red
 'set line 2'
endif
if (vmax<64 & vmax>48)
 say STS vmax orange
 'set line 8'
endif
if (vmax<48 & vmax>34)
 say TS vmax green
 'set line 3'
endif
if (vmax<34)
 say TD vmax blue
 'set line 4 '
endif

色を変えないバージョンはdraw_track2_1.gs
ちなみに、学会で使ったtwin TCsの表示させるプログラムはdraw4.gs

以下にdraw_track3_1.gsのプログラムを示す

'set display color white'
i=1
while (i<=49)
*set lon and lat
  say
  say n_hemisphere
  tmp=read(bwp011992.dat)
  tmp1=sublin(tmp,1)
  tmp2=sublin(tmp,2)
  nlon=subwrd(tmp2,8)
  nlat=subwrd(tmp2,7)
  say tmp2
  say nlon
  say nlat
  nnlon=substr(nlon,1,4)
  nnlon=nnlon*0.1
  say nnlon_is_ nnlon
  str_len=strlen(nlat)
  say lat_of_length_ str_len
if (str_len<5)
  nnlat=substr(nlat,1,2)
  nnlat=nnlat*0.1
  say nnlat_is_ nnlat
else
  nnlat=substr(nlat,1,3)
  nnlat=nnlat*0.1
  say nnlat_is_ nnlat
endif
  say
  say lon_and_lat_is
  say nnlon__ nnlon
  say nnlat__ nnlat
*vmax
  vmax=subwrd(tmp2,9)
  say vmax_ vmax
if (vmax>64)
 say T vmax red
 'set line 2'
endif
if (vmax<64 & vmax>48)
 say STS vmax orange
 'set line 8'
endif
if (vmax<48 & vmax>34)
 say TS vmax green
 'set line 3'
endif
if (vmax<34)
 say TD vmax blue
 'set line 4 '
endif
  sym = 3
  siz = 0.15
  'q w2xy 'nnlon' 'nnlat''
  x = subwrd(result,3)
  y = subwrd(result,6)
  'draw mark 'sym' 'x' 'y' 'siz
i=i+1
endwhile

i=1
while (i<=44)
  say
  say s_hemisphere
  tmp=read(bsh111992.dat)
  tmp1=sublin(tmp,1)
  tmp2=sublin(tmp,2)
  slon=subwrd(tmp2,8)
  slat=subwrd(tmp2,7)
  say tmp2
  say slon
  say slat
  sslon=substr(slon,1,4)
  sslon=sslon*0.1
  say sslon_is_ sslon
  str_len=strlen(slat)
  say lat_of_length_ str_len
if (str_len<5)
  sslat=substr(slat,1,2)
  sslat=-sslat*0.1
  say sslat_is_ sslat
else
  sslat=substr(slat,1,3)
  sslat=-sslat*0.1
  say sslat_is_ sslat
endif
  say
  say lon_and_lat_is
  say sslon__ sslon
  say sslat__ sslat
*vmax
  vmax=subwrd(tmp2,9)
  say vmax_ vmax
if (vmax>64)
 say T vmax red
 'set line 2'
endif
if (vmax<64 & vmax>48)
 say STS vmax orange
 'set line 8'
endif
if (vmax<48 & vmax>34)
 say TS vmax green
 'set line 3'
endif
if (vmax<34)
 say TD vmax blue
 'set line 4 '
endif
  sym = 3
  siz = 0.15
  'q w2xy 'sslon' 'sslat''
  x = subwrd(result,3)
  y = subwrd(result,6)
  'draw mark 'sym' 'x' 'y' 'siz
i=i+1
endwhile

draw4.gsは以下に示す
whileがこのときは使えなかったので、繰り返しになってるw

*tmp1=0
*tmp=read(data.dat)
*while(tmp1=0)
  tmp=read(data.dat)
  tmp1=sublin(tmp,1)
  tmp2=sublin(tmp,2)
  nlon=subwrd(tmp2,1)
  nlat=subwrd(tmp2,2)
  slon=subwrd(tmp2,3)
  slat=subwrd(tmp2,4)
  say tmp2
  sym = 3
  siz = 0.15
  'q w2xy 'nlon' 'nlat''
  x1 = subwrd(result,3)
  y1 = subwrd(result,6)
  'draw mark 'sym' 'x1' 'y1' 'siz
  'q w2xy 'slon' 'slat''
  x2 = subwrd(result,3)
  y2 = subwrd(result,6)
  'draw mark 'sym' 'x2' 'y2' 'siz
  'draw line 'x1' 'y1' 'x2' 'y2''

gmap.ctl中身
DSET    ^gmap.dat 
TITLE   MAP DRAW
UNDEF   1.E36
XDEF          2 LINEAR  100.000   80.00000
YDEF          2 LINEAR  -30.000   60.00000
ZDEF          1 LINEAR     .000    1.00000
TDEF    1 LINEAR 00JAN1997 60MN
VARS 1
PT  1 99 PT
ENDVARS


blankmap.gsの中身
'c'
'set vpage 0 8.5 0 5.5'
'set font 1'

'set xlint 10'
'set ylint 10'
'set xlopts 1 5 0.13'
'set ylopts 1 5 0.13'
'set grads off'
'set mpdset mres'
'set map 1 1 5'

'set cmin 1'
'd pt'


'set vpage off'

0 件のコメント:

コメントを投稿