[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

20000907: Plot hurricane tracks in 5.4?



>From: address@hidden (Chris Hennon)
>Organization: UCAR/Unidata
>Keywords: 200009071606.e87G6ZN01178

>Can you plot a hurricane track in gempak 5.4?
>
>Thanks.
>
>Chris
>
>================================================
>| Chris Hennon        Ohio State University   |
>| Tropical Meteorology      address@hidden   |
>|                                              |
>| Dept of Geography   Office: 1155 Derby Hall  |
>| 1036 Derby Hall     Phone : (614) 292-2704   |
>| Columbus, OH 43210  Fax   : (614) 292-6213   |
>================================================
>

Yep.

See the "tropical storm tracks" link from 
http://www.unidata.ucar.edu/packages/gempak/examples/

Marker types 23 and 24 are tropical storm and hurricane symbols respectively.

The dctrop decoder decodes realtime bulletins, and I have a script
which plots those files using sfmap. Or, you can create your own station table
format file and use the STNPLT option for station position setting the
marker appropriately.

The dctrop output file looks like:
 PARM = FCHR;SKNT;SCAT                                                          
 

    STN    YYMMDD/HHMM      FCHR     SKNT     SCAT
 ERNESTO  000902/0900      0.00    35.00     6.00
 ERNESTO  000902/0900     12.00    40.00     6.00
 ERNESTO  000902/0900     24.00    40.00     6.00
 ERNESTO  000902/0900     36.00    40.00     6.00
 ERNESTO  000902/0900     48.00    40.00     6.00
 ERNESTO  000902/0900     72.00    45.00     6.00
 ERNESTO  000902/1500      0.00    35.00     6.00
 ERNESTO  000902/1500     12.00    35.00     6.00
 ERNESTO  000902/1500     24.00    40.00     6.00
 ERNESTO  000902/1500     36.00    40.00     6.00
 ERNESTO  000902/1500     48.00    40.00     6.00
 ERNESTO  000902/1500     72.00    40.00     6.00
 ERNESTO  000902/2100      0.00    35.00     6.00
 ERNESTO  000902/2100     12.00    35.00     6.00
 ERNESTO  000902/2100     24.00    35.00     6.00
 ERNESTO  000902/2100     36.00    35.00     6.00
 ERNESTO  000902/2100     48.00    35.00     6.00
 ERNESTO  000902/2100     72.00    35.00     6.00
 ERNESTO  000903/0300      0.00    35.00     6.00
 ERNESTO  000903/0300     12.00    35.00     6.00
 ERNESTO  000903/0300     24.00    35.00     6.00
 ERNESTO  000903/0300     36.00    35.00     6.00
 ERNESTO  000903/0300     48.00    35.00     6.00
 ERNESTO  000903/0300     72.00    35.00     6.00
 ERNESTO  000903/0900      0.00    35.00     6.00
 ERNESTO  000903/0900     12.00    35.00     6.00
 ERNESTO  000903/0900     24.00    35.00     6.00
 ERNESTO  000903/0900     36.00    35.00     6.00
 ERNESTO  000903/0900     48.00    35.00     6.00
 ERNESTO  000903/0900     72.00    35.00     6.00
 ERNESTO  000903/1500      0.00    35.00     6.00
 ERNESTO  000903/1500     12.00    35.00     6.00
 ERNESTO  000903/1500     24.00    35.00     6.00
 ERNESTO  000903/1500     36.00    35.00     6.00
 ERNESTO  000903/1500     48.00    35.00     6.00
 ERNESTO  000903/1500     72.00    35.00     6.00
 ERNESTO  000903/2100      0.00    30.00     7.00
 ERNESTO  000903/2100     12.00    30.00     7.00



Below is the script I run for the 4 plots from the examples page above.
Basically, I run sfmap once to plot the FCHR=0 hour forecast positions for
all times, then for the last time, I plot all the forecast positions
for the overlay of the forecast track. I set the symbol based on the
SCAT storm category, where 1 through 5 are hurricane safir-simpson 
categories, 6 is tropical storm, and 7 is depression. SO below in the
script, you'll find that  I set the marker to "+" for the depressions,
then 23 for tropical storm and 24 for hurricane.

Steve Chiswell



#!/bin/csh -f
# this script sends output to the PS driver since it uses
# dattim=all (gif would create separate frames)
setenv PATH ${PATH}:/usr/local/bin

setenv TMPDIR /tmp
cd $TMPDIR

source /home/gempak/Gemenviron
setenv DISPLAY unix:0

if($#argv == 1) then
   set region=$1
else
   set region=epacific
endif

setenv STORM $GEMDATA/storm/tropic/$region
set WORK=/home/chiz/web/tmp

if(! -e $STORM) then
   echo No such directory $region
   exit
endif

switch ($region)
   case 'wpacific':
      set GAREA='#25;130;22;30'
      breaksw
   case 'epacific':
      set GAREA='#20;-120;20;30'
      set GAREA='#30;-108;16;21'
      set GAREA='#18;-108;16;21'
      breaksw
   case 'atlantic':
      set GAREA='#30;-85;15;20'
      set GAREA='#27.5;-62.5;24;38'
      breaksw
   case 'cpacific':
      set GAREA='#22;-155;22;30'
      breaksw
   default:
      echo Unknown region
      exit
endsw

cd $STORM


set FILES=`find *.gem -mtime -1 -print`

if($#FILES == 0) then
   #echo No current storms
   exit
endif

@ COUNT = 1
while ($COUNT <= $#FILES)
   if(! -l $FILES[$COUNT]) then
      echo $FILES[$COUNT]:r >>! $WORK/storm_names.$$
   endif
   @ COUNT = $COUNT + 1
end

cd $WORK

set names=`cat storm_names.$$`
rm storm_names.$$

@ COUNT = 0
foreach FILE ($FILES)
if(-l $STORM/$FILE) then
   echo Just a link $FILE
   continue
endif

echo $FILE $COUNT
sflist << EOF1 
   dattim = all
   sffile = \$STORM/$FILE
   sfparm = dset
   output = f/tropic_dat.$$
   area = dset
   idntyp = stid
   \$respond = yes
   r
   
   e
EOF1

set DATE=`cat tropic_dat.$$ | nawk 
'/[0-9][0-9][0-9][0-9][0-9][0-9]\/[0-9][0-9][0-9][0-9]/ { print $2 }'`

cat tropic_dat.$$

if($#DATE > 0) then
   set TITLE=$DATE[1]
else
   set TITLE=`date -u '+%y%m%d/%H%M'`
endif
if(-e tropic_dat.$$) then
   rm tropic_dat.$$
endif



set DEVICE="ps|${region}.ps||C"
if($COUNT == 0) then
   set CLEAR=n
   set MAP='1/1/2'
   set LATLON='30/2/1'
else
   set CLEAR=n
   set MAP=0
   set LATLON=0
endif

@ LST = 3 + $COUNT

gpmap << GP_EOF
 \$mapfil = hipowo.cia
 MAP      = $MAP
 GAREA    = $GAREA
 PROJ     = mer
 SATFIL   = 
 RADFIL   = 
 LATLON   = $LATLON
 PANEL    = 0
 TEXT     = 1.5/22/1/hw
 CLEAR    = $CLEAR
 DEVICE   = $DEVICE
 title    = 2/-${LST}/Forecast Track $FILE:r $TITLE
 r

 CLEAR = n
 MAP = 0
 LATLON = 0
 TITLE    = 4/-2/Track History, $names
 r

 e
GP_EOF

sfmap << EOF
   AREA     = dset
   GAREA    = $GAREA
   SATFIL   = 
   RADFIL   = 
   DATTIM   = all
   SFFILE   = $STORM/$FILE
   COLORS   = 4;0;0;2
   MAP      = 0
   LATLON   = 0
   TITLE    = 0
   CLEAR    = n
   PANEL    = 0
   PROJ     = mer
   FILTER   = .8
   TEXT     = 1.2/22/1/hw
   SKPMIS   = n
   SFPARM   = mark:1/2/2;fchr=0;scat=7;sknt
   !MARKER   = 4/1/2/2/hw
   OUTPUT   = t
   TITLE    = 0
   r
  
   SFPARM   = mark:23/4/6;fchr=0;scat=6;sknt
   !MARKER   = 4/23/4/6/hw
   r
   
   SFPARM   = mark:24/4/6;fchr=0;scat<5.1;sknt
   !MARKER   = 4/24/4/6/hw
   r 

   DATTIM = LAST
   COLOR = 2;0;0;2
   filter = n
   SFPARM   = mark:1/2/2;scat=7;fchr>1;sknt
   !MARKER   = 2/1/2/2/hw
   r

   SFPARM   = mark:23/4/6;scat=6;fchr>1;sknt
   !MARKER   = 2/23/4/6/hw
   r

   SFPARM   = mark:24/4/6;scat=1;fchr>1;sknt
   !MARKER   = 2/24/4/6/hw
   r

   COLOR = 15;0;0;2
   SFPARM   = mark:24/4/6;scat=2;fchr>1;sknt
   !MARKER   = 15/24/4/6/hw
   r

   COLOR = 14;0;0;2
   SFPARM   = mark:24/4/6;scat=3;fchr>1;sknt
   !MARKER   = 14/24/4/6/hw
   r

   COLOR = 13;0;0;2
   SFPARM   = mark:24/4/6;scat=4;fchr>1;sknt
   !MARKER   = 13/24/4/6/hw
   r

   COLOR = 12;0;0;2
   SFPARM   = mark:24/4/6;scat=5;fchr>1;sknt
   !MARKER   = 12/24/4/6/hw
   r

   e
EOF
   @ COUNT = $COUNT + 1
end

gpend

# use the imagemagick package to convert the ps to gif
convert -rotate 90 $region.ps $region.gif
mv $region.gif /www/staff/chiz/storm/tropic