Hello Charles<div>I want to make a jet stream plot. Can i make it with the help of hurricane center script by changing minloc and min to maxloc and max.</div><div>any suggestion?</div><div><br></div><div>thanks</div><div><br>
</div><div>Sushant <br><br><div class="gmail_quote">On Wed, Jan 5, 2011 at 1:01 AM, Charles Seman <span dir="ltr">&lt;<a href="mailto:Charles.Seman@noaa.gov">Charles.Seman@noaa.gov</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Jie,<br>
<br>
Attached is a file File_Error_1_Grads_1.9-Plot_tc_shi.gs.txt containing the text from an email exchange to the GrADS Listserv between Joe Covert and Diane Stokes on 9/13/2004 -- on 4/27/06, found via a Google search for &quot;<a href="http://plot_tc_shi.gs" target="_blank">plot_tc_shi.gs</a>&quot;: <a href="http://caos.iisc.ernet.in/gslib/plot_tc_shi.gs" target="_blank">http://caos.iisc.ernet.in/gslib/plot_tc_shi.gs</a><br>

<br>
The attached GrADS script <a href="http://plot_hurricane_center3.gs" target="_blank">plot_hurricane_center3.gs</a> (along with pause.gsf, aGrADS script function used by the plot script) is a locally modified version derived from Joe Covert&#39;s script &quot;<a href="http://plot_tc_shi.gs" target="_blank">plot_tc_shi.gs</a>&quot; (<a href="mailto:Joe.Covert@noaa.gov" target="_blank">Joe.Covert@noaa.gov</a>) which was posted to the GrADS Listserv on 9/13/2004 (his script was named <a href="http://plot_tc_shi.gs" target="_blank">plot_tc_shi.gs</a>) and code from hurricane_tracking.txt (taken from an email exchange posted to the GrADS Listserv by Kun-Hsuan Chou and Arturo Caracas Uribe in Oct, 2004)...<br>

<br>
Please find below code from hurricane_tracking.txt (taken from an email exchange posted to the GrADS Listserv by Kun-Hsuan Chou and Arturo Caracas Uribe in Oct, 2004) illustrating a technique for finding max wind in a 2D field... and below that some code from attached script <a href="http://plot_hurricane_center3.gs" target="_blank">plot_hurricane_center3.gs</a> to find the min sea-level pressure in a 2D field...<br>

<br>
code from Kun-Hsuan Chou to find maximum wind speed from hurricane_tracking.txt:<br>
---<br>
&#39;d maxloc(max(mag(u,v),lon=120,lon=130),lat=15,lat=25)&#39;<br>
 line=sublin(result,2)<br>
 ygrd=subwrd(line,4)<br>
&#39;d maxloc(max(mag(u,v),lat=15,lat=25),lon=120,lon=130)&#39;<br>
 line=sublin(result,2)<br>
 xgrd=subwrd(line,4)<br>
&#39;set x &#39;xgrd<br>
lonval = subwrd(result,4)<br>
&#39;set y &#39;ygrd<br>
latval = subwrd(result,4)<br>
&#39;q w2xy &#39;lonval&#39; &#39;latval<br>
xpos = subwrd(result,3)<br>
ypos = subwrd(result,6)<br>
&#39;draw mark 1 &#39;xpos&#39; &#39;ypos&#39; .2&#39;<br>
---<br>
<br>
sample code from <a href="http://plot_hurricane_center3.gs" target="_blank">plot_hurricane_center3.gs</a> to find hurricane center (see script for supporting code):<br>
---<br>
*<br>
* find minimum &quot;pressure&quot; within box area (x1,x2), (y1,y2)...<br>
*<br>
     &#39;set x &#39;x1<br>
     &#39;set y &#39;y1<br>
     &#39;set z 1&#39;<br>
     &#39;set t &#39;tt<br>
     &#39;set gxout print&#39;<br>
     nxp = x2-x1+1<br>
*      say &#39;    nxp = &#39;nxp<br>
     nyp = y2-y1+1<br>
*      say &#39;    nyp = &#39;nyp<br>
     &#39;d minloc(min(psl,y=&#39;y1&#39;,y=&#39;y2&#39;),x=&#39;x1&#39;,x=&#39;x2&#39;)&#39;<br>
       rec=sublin(result,nxp+3)<br>
       xc=subwrd(rec,1)<br>
     &#39;d minloc(min(psl,x=&#39;x1&#39;,x=&#39;x2&#39;),y=&#39;y1&#39;,y=&#39;y2&#39;)&#39;<br>
       rec=sublin(result,nyp+3)<br>
       yc=subwrd(rec,1)<br>
     say<br>
     say &#39;location of minimum &quot;pressure&quot;...&#39;<br>
     say<br>
     say &#39; (xc,yc) = (&#39;xc&#39;,&#39;yc&#39;)&#39;<br>
*<br>
* find &quot;world&quot; coordinates of (xc,yc) and convert &quot;world&quot; coordinates<br>
* to &quot;xy&quot; coordinates for plotting track of hurricane center...<br>
*<br>
     &#39;set x &#39;xc<br>
     lonval = subwrd(result,4)<br>
     &#39;set y &#39;yc<br>
     latval = subwrd(result,4)<br>
     say &#39; (lonval,latval) = (&#39;lonval&#39;,&#39;latval&#39;)&#39;<br>
     &#39;q w2xy &#39;lonval&#39; &#39;latval<br>
     xpos = subwrd(result,3)<br>
     ypos = subwrd(result,6)<br>
     say &#39; (xpos,ypos) = (&#39;xpos&#39;,&#39;ypos&#39;)&#39;<br>
*<br>
* write (xpos,ypos) to output file...<br>
*<br>
     res = write (&#39;&#39;<a href="http://hurricane.nf" target="_blank">hurricane.nf</a>&#39;&#39;,&#39;t = &#39;tt&#39; xpos = &#39;xpos&#39; ypos = &#39;ypos&#39;&#39;)<br>
<br>
     pause()<br>
---<br>
<br>
Please let me know if you have any questions.<br>
<br>
Hope this helps,<br>
Chuck<br>
<br>
Jie TANG wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div></div><div class="h5">
<br>
hi,grads folks ,<br>
  I am using grads v1.9, trying to find the center of typhoon via minloc function.<br>
the key script is shown as below:<br>
slplat=min(slp,lat=19,lat=26)                         tclon=minloc(slplat,lon=119,lon=126)                   slplon=min(slp,lon=119,lon=126)                        tclat=minloc(slplon,lat=19,lat=26)<br>
<br>
but grads tell me that &quot;function not found min &quot; and when i changed my script to be :<br>
tclat=min(minloc(slpt,lon=119,lon=126), lat=19,lat=26)<br>
tclon=min(minloc(slpt, lat=19,lat=26 )lon=119,lon=126)<br>
<br>
<br>
how can i finx my scrpit ? thank you .:)<br>
-- <br>
<br>
TANG Jie<br></div></div>
Email: <a href="mailto:totangjie@gmail.com" target="_blank">totangjie@gmail.com</a> &lt;mailto:<a href="mailto:totangjie@gmail.com" target="_blank">totangjie@gmail.com</a>&gt;<div class="im"><br>
Tel: 0086-2154896104<br>
Shanghai Typhoon Institute,China<br></div>
------------------------------------------------------------------------<br>
<br>
_______________________________________________<br>
gradsusr mailing list<br>
<a href="mailto:gradsusr@gradsusr.org" target="_blank">gradsusr@gradsusr.org</a><br>
<a href="http://gradsusr.org/mailman/listinfo/gradsusr" target="_blank">http://gradsusr.org/mailman/listinfo/gradsusr</a><br>
  <br>
</blockquote>
<br>
-- <br>
<br>
Please note that <a href="mailto:Charles.Seman@noaa.gov" target="_blank">Charles.Seman@noaa.gov</a> should be considered my NOAA<br>
email address, not <a href="mailto:cjs@gfdl.noaa.gov" target="_blank">cjs@gfdl.noaa.gov</a>.<br>
<br>
********************************************************************<br>
Charles Seman                                <a href="mailto:Charles.Seman@noaa.gov" target="_blank">Charles.Seman@noaa.gov</a><br>
U.S. Department of Commerce / NOAA / OAR<br>
Geophysical Fluid Dynamics Laboratory         voice: (609) 452-6547<br>
201 Forrestal Road                              fax: (609) 987-5063<br>
Princeton, NJ  08540-6649            <a href="http://www.gfdl.noaa.gov/~cjs/" target="_blank">http://www.gfdl.noaa.gov/~cjs/</a><br>
********************************************************************<br>
<br>
&quot;The contents of this message are mine personally and do not reflect any<br>
official or unofficial position of the United States Federal Government,<br>
the United States Department of Commerce, or NOAA.&quot;<br>
<br>
<br><br>
worked great ... thanks.  joe<br>
<br>
Diane Stokes wrote:<br>
<br>
&gt; Joe,<br>
&gt;<br>
&gt; Read works fine for me in 1.9.<br>
&gt;<br>
&gt; I think this is the issue where &#39;pull&#39; in 1.9 throws in a carriage<br>
&gt; return.  The read statement is not getting the exact filename.<br>
&gt;<br>
&gt; Try adding:<br>
&gt;   file=sublin(file,1)<br>
&gt; after each:<br>
&gt;   pull file<br>
&gt;<br>
&gt; Diane<br>
&gt;<br>
&gt; Joe Covert wrote:<br>
&gt;<br>
&gt;&gt; There appears to be a problem with version 1.9 of GrADS &quot;read&quot; function.<br>
&gt;&gt;<br>
&gt;&gt; The <a href="http://plot_tc_shi.gs" target="_blank">plot_tc_shi.gs</a> script (see below) uses the read function to open the<br>
&gt;&gt; track data file and the program gives the subject error message &quot;File<br>
&gt;&gt; Error 1&quot;.<br>
&gt;&gt;<br>
&gt;&gt; jc<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; *  Script to draw an hurricane-track plot.<br>
&gt;&gt; *  Does little error checking on the input file.<br>
&gt;&gt; *  Assumes the input file is set up as follows:<br>
&gt;&gt; *<br>
&gt;&gt; *    Line 1:  Title<br>
&gt;&gt; *    Line 2:  Drawing primitives for marks: marktype size<br>
&gt;&gt; *    Line 3:  Drawing primitives for lines: color style thickness<br>
&gt;&gt; *    Line 4:  Starting hour and the interval of plotting points<br>
&gt;&gt; *             e.g., 0 6 means that track starts at 0 hour and mark<br>
&gt;&gt; *                   will be plotted every 6 hours.<br>
&gt;&gt; *    Rest of lines:  hour  long.  lat.<br>
&gt;&gt; *             e.g.,   0    -70.5  25.0<br>
&gt;&gt; *                     6    -71.8  25.2<br>
&gt;&gt; *                            :<br>
&gt;&gt; *                            :<br>
&gt;&gt; *<br>
&gt;&gt; *  Also assumes that a file has been opened (any file, doesn&#39;t<br>
&gt;&gt; *  matter -- the set command doesn&#39;t work until a file has been<br>
&gt;&gt; *  opened).<br>
&gt;&gt; *<br>
&gt;&gt;<br>
&gt;&gt; function main()<br>
&gt;&gt;<br>
&gt;&gt; *  &#39;clear&#39;<br>
&gt;&gt;<br>
&gt;&gt;   &#39;open dummy.ctl&#39;<br>
&gt;&gt;   &#39;set lat 20 50&#39;<br>
&gt;&gt;   &#39;set lon -90 -30&#39;<br>
&gt;&gt;   &#39;set mpdset hires&#39;<br>
&gt;&gt;   &#39;set poli on&#39;<br>
&gt;&gt;   &#39;draw map&#39;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; say &#39;Enter File Name: (type q to stop)&#39;<br>
&gt;&gt; pull fname<br>
&gt;&gt;<br>
&gt;&gt; while (fname != &#39;q&#39;)<br>
&gt;&gt;<br>
&gt;&gt; *  Read the 1st record: Title<br>
&gt;&gt;<br>
&gt;&gt;   ret = read(fname)<br>
&gt;&gt;   rc = sublin(ret,1)<br>
&gt;&gt;   if (rc&gt;0)<br>
&gt;&gt;       say &#39;File Error 1&#39;<br>
&gt;&gt;       return<br>
&gt;&gt;   endif<br>
&gt;&gt;   title = sublin(ret,2)<br>
&gt;&gt;   say title<br>
&gt;&gt;<br>
&gt;&gt; *  Read the drawing primitives<br>
&gt;&gt;<br>
&gt;&gt;   ret = read(fname)<br>
&gt;&gt;   rc = sublin(ret,1)<br>
&gt;&gt;   if (rc&gt;0)<br>
&gt;&gt;      say &#39;File Error 2&#39;<br>
&gt;&gt;      return<br>
&gt;&gt;   endif<br>
&gt;&gt;   dpline = sublin(ret,2)<br>
&gt;&gt;   marktype = subwrd(dpline,1)<br>
&gt;&gt;   marksize = subwrd(dpline,2)<br>
&gt;&gt;   ret = read(fname)<br>
&gt;&gt;   rc = sublin(ret,1)<br>
&gt;&gt;   if (rc&gt;0)<br>
&gt;&gt;      say &#39;File Error 3&#39;<br>
&gt;&gt;      return<br>
&gt;&gt;   endif<br>
&gt;&gt;   dpline = sublin(ret,2)<br>
&gt;&gt;   lcolor = subwrd(dpline,1)<br>
&gt;&gt;   lstyle = subwrd(dpline,2)<br>
&gt;&gt;   lthick = subwrd(dpline,3)<br>
&gt;&gt;   say &#39; marktype, marksize, lcolor, lstyle and lthick:&#39;<br>
&gt;&gt;   say &#39; &#39;marktype &#39; &#39; marksize &#39; &#39; lcolor &#39; &#39; lstyle &#39; &#39; lthick<br>
&gt;&gt;<br>
&gt;&gt; * Read starting hour and the interval hours of plotting points<br>
&gt;&gt;<br>
&gt;&gt;   ret = read(fname)<br>
&gt;&gt;   rc = sublin(ret,1)<br>
&gt;&gt;   if (rc&gt;0)<br>
&gt;&gt;      say &#39;File Error 4&#39;<br>
&gt;&gt;      return<br>
&gt;&gt;   endif<br>
&gt;&gt;   dhour = sublin(ret,2)<br>
&gt;&gt;   start = subwrd(dhour,1)<br>
&gt;&gt;   jump = subwrd(dhour,2)<br>
&gt;&gt;   say &#39; starting hour and the interval hours of plotting points:&#39;<br>
&gt;&gt;   say &#39;  &#39;start&#39; &#39;jump<br>
&gt;&gt;<br>
&gt;&gt; *  Read all data points<br>
&gt;&gt;<br>
&gt;&gt;   ret = read(fname)<br>
&gt;&gt;   rc = sublin(ret,1)<br>
&gt;&gt;   while (rc = 0)<br>
&gt;&gt;       loc = sublin(ret,2)<br>
&gt;&gt;       hour = subwrd(loc,1)<br>
&gt;&gt;       dlong.hour = subwrd(loc,2)<br>
&gt;&gt;       dlat.hour = subwrd(loc,3)<br>
&gt;&gt; *      prompt &#39; hour &#39; hour &#39; are read,&#39;<br>
&gt;&gt; *      say &#39; long=&#39; dlong.hour &#39;    lat=&#39; dlat.hour<br>
&gt;&gt;       ret = read(fname)<br>
&gt;&gt;       rc = sublin(ret,1)<br>
&gt;&gt;   endwhile<br>
&gt;&gt;<br>
&gt;&gt;   if (rc!=2 &amp; rc!=0)<br>
&gt;&gt;          say &#39;File Error 5, rc=&#39; rc<br>
&gt;&gt;          return<br>
&gt;&gt;   endif<br>
&gt;&gt;<br>
&gt;&gt;   endhour = hour<br>
&gt;&gt;   say &#39; endhour=&#39; endhour<br>
&gt;&gt;<br>
&gt;&gt; * Plotting<br>
&gt;&gt;<br>
&gt;&gt;   &#39;set line &#39;lcolor&#39; &#39;lstyle&#39; &#39;lthick<br>
&gt;&gt;   &#39;query w2xy &#39;dlong.start&#39; &#39;dlat.start<br>
&gt;&gt;   xprev = subwrd(result,3)<br>
&gt;&gt;   yprev = subwrd(result,6)<br>
&gt;&gt;   &#39;draw mark &#39;marktype&#39; &#39;xprev&#39; &#39;yprev&#39; &#39;marksize<br>
&gt;&gt;   next = start+jump<br>
&gt;&gt;   while (next &lt;= endhour)<br>
&gt;&gt; *      say &#39; &#39;dlong.start&#39; &#39;dlat.start<br>
&gt;&gt;       &#39;query w2xy &#39;dlong.next&#39; &#39;dlat.next<br>
&gt;&gt;       xnext = subwrd(result,3)<br>
&gt;&gt;       ynext = subwrd(result,6)<br>
&gt;&gt;       &#39;draw line &#39;xprev&#39; &#39;yprev&#39; &#39;xnext&#39; &#39;ynext<br>
&gt;&gt; *      say &#39; &#39;xprev&#39; &#39;yprev&#39; &#39;xnext&#39; &#39;ynext<br>
&gt;&gt;       &#39;draw mark &#39;marktype&#39; &#39;xnext&#39; &#39;ynext&#39; &#39;marksize<br>
&gt;&gt;       next = next+jump<br>
&gt;&gt;       xprev = xnext<br>
&gt;&gt;       yprev = ynext<br>
&gt;&gt;   endwhile<br>
&gt;&gt;<br>
&gt;&gt;   say fname &#39; is working fine.&#39;<br>
&gt;&gt;<br>
&gt;&gt; * read in the filename to be plotted next<br>
&gt;&gt;<br>
&gt;&gt;   say &#39;Enter File Name: (type q to stop)&#39;<br>
&gt;&gt;   pull fname<br>
&gt;&gt;<br>
&gt;&gt; endwhile<br>
&gt;&gt;<br>
<br>
<br>*----------------------------------------------------------------------<br>
*<br>
*  Adapted from <a href="http://plot_hurricane_center2c.gs" target="_blank">plot_hurricane_center2c.gs</a>, which was adapted from:<br>
*<br>
*  (1) &quot;plot_hurricane_center2[a][b].gs&quot; (from &quot;<a href="http://plot_hurricane_center.gs" target="_blank">plot_hurricane_center.gs</a>&quot;),<br>
*      locally modified versions derived from Joe Covert&#39;s script<br>
*      &quot;<a href="http://plot_tc_shi.gs" target="_blank">plot_tc_shi.gs</a>&quot; (<a href="mailto:Joe.Covert@noaa.gov">Joe.Covert@noaa.gov</a>), which was posted to the<br>
*      GrADS Listserv on 9/13/2004 (his script was named <a href="http://plot_tc_shi.gs" target="_blank">plot_tc_shi.gs</a>)<br>
*      on 4/27/06, found via a Google search for &quot;<a href="http://plot_tc_shi.gs" target="_blank">plot_tc_shi.gs</a>&quot;:<br>
*      <a href="http://caos.iisc.ernet.in/gslib/plot_tc_shi.gs" target="_blank">http://caos.iisc.ernet.in/gslib/plot_tc_shi.gs</a><br>
*<br>
*  (2) code in &quot;hurricane_tracking.txt&quot; (taken from an email exchange<br>
*      posted to the GrADS Listserv by Kun-Hsuan Chou and<br>
*      Arturo Caracas Uribe in Oct, 2004)<br>
*<br>
*<br>
*  To use: grads -l<br>
*<br>
*----------------------------------------------------------------------<br>
<br>
function main()<br>
<br>
  &#39;reinit&#39;<br>
<br>
************************************************************************<br>
*  Allow external GrADS functions<br>
************************************************************************<br>
<br>
  rc = gsfallow(&quot;on&quot;)<br>
<br>
************************************************************************<br>
*  Define dataset file information and plotting limits for base map...<br>
************************************************************************<br>
<br>
**  nc_file1 = &#39;&#39;<br>
**  nc_file2 = &#39;&#39;<br>
**  nc_file3 = &#39;&#39;<br>
**  nc_file = &#39;&#39;nc_file1&#39; &#39;nc_file2&#39; &#39;nc_file3&#39;&#39;<br>
  nc_file = &#39;your_netCDF_file&#39;<br>
<br>
  lon1 = 298 ; lon2 = 308<br>
  lat1 =  20 ; lat2 =  25<br>
<br>
************************************************************************<br>
*  Legend captions, colors, and marks for the plots<br>
************************************************************************<br>
<br>
**  nmodels = 1<br>
**  model.1 = &#39;isabel_ras&#39;<br>
**  model.2 = &#39;isabel_isotke&#39;<br>
**  model.3 = &#39;isabel_my25&#39;<br>
<br>
**  titles.1 = model.1 ; colors.1 = 2 ; marks.1 = 2<br>
**  titles.2 = model.2 ; colors.2 = 3 ; marks.2 = 2<br>
**  titles.3 = model.3 ; colors.3 = 4 ; marks.3 = 2<br>
***<br>
***  Define the legend plotter input...<br>
***<br>
**  titles = &#39;-t&#39; ; colors = &#39;-c&#39; ; marks = &#39;-m&#39; ; lines = &#39;-l&#39;<br>
**  n=1<br>
**  while ( n &lt;= nmodels )<br>
**    titles = &#39;&#39;titles&#39; &quot;&#39;titles.n&#39;&quot;&#39;<br>
**    colors = &#39;&#39;colors&#39; &#39;colors.n<br>
**    marks = &#39;&#39;marks&#39; &quot;&#39;marks.n&#39;&quot;&#39;<br>
**    lines = &#39;&#39;lines&#39; 1&#39;<br>
**    n=n+1<br>
**  endwhile<br>
<br>
**  legend_info = &#39;&#39;colors&#39; &#39;lines&#39; &#39;marks&#39; &#39;titles&#39; -p&#39;<br>
<br>
  nmodels = 1<br>
  model.1 = &#39;title_name_for_your_netCDF_dataset&#39;<br>
<br>
  titles.1 = model.1 ; colors.1 = 2 ; marks.1 = 2<br>
*<br>
*  Define the legend plotter input...<br>
*<br>
  titles = &#39;-t&#39; ; colors = &#39;-c&#39; ; marks = &#39;-m&#39; ; lines = &#39;-l&#39;<br>
  n=1<br>
  while ( n &lt;= nmodels )<br>
    titles = &#39;&#39;titles&#39; &quot;&#39;titles.n&#39;&quot;&#39;<br>
    colors = &#39;&#39;colors&#39; &#39;colors.n<br>
    marks = &#39;&#39;marks&#39; &quot;&#39;marks.n&#39;&quot;&#39;<br>
    lines = &#39;&#39;lines&#39; 1&#39;<br>
    n=n+1<br>
  endwhile<br>
<br>
  legend_info = &#39;&#39;colors&#39; &#39;lines&#39; &#39;marks&#39; &#39;titles&#39; -p&#39;<br>
<br>
*  ...other drawing primitives<br>
<br>
  marksize = 0.1<br>
<br>
  lstyle = 1 ; lthick = 5<br>
<br>
************************************************************************<br>
*  Use &quot;cbar_line&quot; or &quot;cbar_line_box&quot;?<br>
************************************************************************<br>
<br>
  legend_plotter = &#39;cbar_line&#39;<br>
*  legend_plotter = &#39;cbar_line_box&#39;<br>
<br>
************************************************************************<br>
*  Plot page limits<br>
************************************************************************<br>
<br>
  plot_vpage = &#39;0 11 0 8.5&#39;<br>
  plot_area  = &#39;1 10 1 7.5&#39;<br>
<br>
  xl = subwrd(plot_area,1) ; xr = subwrd(plot_area,2)<br>
  yb = subwrd(plot_area,3) ; yt = subwrd(plot_area,4)<br>
<br>
  xc = xl + (xr-xl)/2<br>
<br>
************************************************************************<br>
*  GrADS metafile output...<br>
************************************************************************<br>
<br>
  &#39;enable print hurricane_track.gx&#39;<br>
<br>
*-----------------------------------------------------------------------<br>
*  Define and plot track of minimum surface pressure for each dataset...<br>
*-----------------------------------------------------------------------<br>
<br>
  nf=1<br>
  while ( nf &lt;= nmodels )<br>
<br>
* Open dataset file and define parameters...<br>
<br>
    fname = subwrd(nc_file,nf)<br>
    &#39;sdfopen &#39;fname<br>
    &#39;set dfile &#39;nf<br>
    &#39;q file&#39;<br>
    rec3 = sublin(result,3) ; binary_file = subwrd(rec3,2)<br>
    say<br>
    say<br>
    say &#39;*** &#39;binary_file&#39; ***&#39;<br>
    say<br>
    rec5 = sublin(result,5)<br>
    nx = subwrd(rec5,3) ; ny = subwrd(rec5,6) ; nz = subwrd(rec5,9) ; nt = subwrd(rec5,12)<br>
<br>
    if( nf = 1 )<br>
<br>
* Plot base map...<br>
<br>
      plot_base_map(plot_vpage,plot_area,lon1,lon2,lat1,lat2)<br>
<br>
    endif<br>
<br>
* Define locations of &quot;hurricane center&quot; for plotting points, and write<br>
* locations out to ASCII text file for read-in for plotting track later...<br>
<br>
    <a href="http://hurricane.nf" target="_blank">hurricane.nf</a> = &#39;hurricane_&#39;nf&#39;.txt&#39;<br>
<br>
    ts=2<br>
    tt=ts<br>
    while ( tt &lt;= nt )<br>
      &#39;set t &#39;tt<br>
      say<br>
      say &#39;---------&#39;<br>
      say &#39; tt = &#39;tt<br>
      say &#39;---------&#39;<br>
      say<br>
      &#39;set lon &#39;lon1&#39; &#39;lon2<br>
      &#39;set lat &#39;lat1&#39; &#39;lat2<br>
      &#39;set z 1&#39;<br>
*<br>
* here is where you put in the name of your sea-level pressure variable:<br>
*<br>
      &#39;define psl = name_of_your_sea_level_pressure_variable&#39;<br>
      &#39;set gxout shaded&#39;<br>
      &#39;d psl&#39;<br>
*<br>
* following interactive &quot;box location&quot; code adapted from &quot;<a href="http://cbar_line_box.gs" target="_blank">cbar_line_box.gs</a>&quot;...<br>
*<br>
      say &#39;Click where you want the left upper corner of the box&#39;<br>
      &#39;query bpos&#39;<br>
      xb1o = subwrd(result,3)<br>
      yb2o = subwrd(result,4)<br>
      say &#39;Click where you want the right lower corner of the box&#39;<br>
      &#39;query bpos&#39;<br>
      xb2o = subwrd(result,3)<br>
      yb1o = subwrd(result,4)<br>
<br>
      say<br>
      say &#39;...left upper corner of the box at X Y: &#39;xb1o&#39; &#39;yb2o<br>
      say &#39;...right lower corner of the box at X Y: &#39;xb2o&#39; &#39;yb1o<br>
*<br>
* draw box to show specified area for defining hurricane center...<br>
*<br>
      &#39;set line 1 1&#39;<br>
      &#39;draw rec &#39;xb1o&#39; &#39;yb1o&#39; &#39;xb2o&#39; &#39;yb2o<br>
*<br>
* convert box &quot;xy&quot; coordinates to &quot;grid&quot; coordinates<br>
* for finding minimum &quot;pressure&quot; (hurricane center)...<br>
*<br>
      &#39;q xy2gr &#39;xb1o&#39; &#39;yb2o<br>
      x1o = subwrd(result,3) ; x1 = math_int(x1o+0.5)<br>
      y2o = subwrd(result,6) ; y2 = math_int(y2o+0.5)<br>
      &#39;q xy2gr &#39;xb2o&#39; &#39;yb1o<br>
      x2o = subwrd(result,3) ; x2 = math_int(x2o+0.5)<br>
      y1o = subwrd(result,6) ; y1 = math_int(y1o+0.5)<br>
      say<br>
      say &#39;Specified grid coordinates (x1o,x2o), (y1o,y2o) from box,&#39;<br>
      say &#39;rounded to (x1,x2), (y1,y2) for finding minimum &quot;pressure&quot;...&#39;<br>
      say<br>
      say &#39; (x1o,x2o) = (&#39;x1o&#39;,&#39;x2o&#39;)  --&gt;  (x1,x2) = (&#39;x1&#39;,&#39;x2&#39;)&#39;<br>
      say &#39; (y1o,y2o) = (&#39;y1o&#39;,&#39;y2o&#39;)  --&gt;  (y1,y2) = (&#39;y1&#39;,&#39;y2&#39;)&#39;<br>
*<br>
* find minimum &quot;pressure&quot; within box area (x1,x2), (y1,y2)...<br>
*<br>
      &#39;set x &#39;x1<br>
      &#39;set y &#39;y1<br>
      &#39;set z 1&#39;<br>
      &#39;set t &#39;tt<br>
      &#39;set gxout print&#39;<br>
      nxp = x2-x1+1<br>
*      say &#39;    nxp = &#39;nxp<br>
      nyp = y2-y1+1<br>
*      say &#39;    nyp = &#39;nyp<br>
      &#39;d minloc(min(psl,y=&#39;y1&#39;,y=&#39;y2&#39;),x=&#39;x1&#39;,x=&#39;x2&#39;)&#39;<br>
        rec=sublin(result,nxp+3)<br>
        xc=subwrd(rec,1)<br>
      &#39;d minloc(min(psl,x=&#39;x1&#39;,x=&#39;x2&#39;),y=&#39;y1&#39;,y=&#39;y2&#39;)&#39;<br>
        rec=sublin(result,nyp+3)<br>
        yc=subwrd(rec,1)<br>
      say<br>
      say &#39;location of minimum &quot;pressure&quot;...&#39;<br>
      say<br>
      say &#39; (xc,yc) = (&#39;xc&#39;,&#39;yc&#39;)&#39;<br>
*<br>
* find &quot;world&quot; coordinates of (xc,yc) and convert &quot;world&quot; coordinates<br>
* to &quot;xy&quot; coordinates for plotting track of hurricane center...<br>
*<br>
      &#39;set x &#39;xc<br>
      lonval = subwrd(result,4)<br>
      &#39;set y &#39;yc<br>
      latval = subwrd(result,4)<br>
      say &#39; (lonval,latval) = (&#39;lonval&#39;,&#39;latval&#39;)&#39;<br>
      &#39;q w2xy &#39;lonval&#39; &#39;latval<br>
      xpos = subwrd(result,3)<br>
      ypos = subwrd(result,6)<br>
      say &#39; (xpos,ypos) = (&#39;xpos&#39;,&#39;ypos&#39;)&#39;<br>
*<br>
* write (xpos,ypos) to output file...<br>
*<br>
      res = write (&#39;&#39;<a href="http://hurricane.nf" target="_blank">hurricane.nf</a>&#39;&#39;,&#39;t = &#39;tt&#39; xpos = &#39;xpos&#39; ypos = &#39;ypos&#39;&#39;)<br>
<br>
      pause()<br>
*<br>
* erase box showing area for defining hurricane center...<br>
*<br>
*      &#39;set line 0 1&#39;<br>
*      &#39;draw rec &#39;xb1o&#39; &#39;yb1o&#39; &#39;xb2o&#39; &#39;yb2o<br>
      tt=tt+1<br>
    endwhile<br>
<br>
    res = close (&#39;&#39;<a href="http://hurricane.nf" target="_blank">hurricane.nf</a>&#39;&#39;)<br>
<br>
    nf=nf+1<br>
  endwhile<br>
<br>
*  Clear frame and re-plot base map...<br>
<br>
  plot_base_map(plot_vpage,plot_area,lon1,lon2,lat1,lat2)<br>
<br>
*  Plot track(s)...<br>
<br>
  nf=1<br>
  while ( nf &lt;= nmodels )<br>
<br>
*  Specify drawing primitives<br>
<br>
    marktype = <a href="http://marks.nf" target="_blank">marks.nf</a><br>
    lcolor = <a href="http://colors.nf" target="_blank">colors.nf</a><br>
<br>
    say &#39; marktype, marksize, lcolor, lstyle and lthick:&#39;<br>
    say &#39; &#39;marktype &#39; &#39; marksize &#39; &#39; lcolor &#39; &#39; lstyle &#39; &#39; lthick<br>
<br>
    tt=ts<br>
*<br>
*  read (xpos,ypos) from ASCII text input file...<br>
*<br>
    res = read(&#39;&#39;<a href="http://hurricane.nf" target="_blank">hurricane.nf</a>&#39;&#39;) ; rc = sublin(res,1)<br>
    if( rc != 0 )<br>
      say &#39;&quot;read&quot; status = &#39;rc<br>
      exit<br>
    endif<br>
    rec = sublin(res,2) ; say &#39;&quot;hurricane.&#39;nf&#39;&quot; record: &#39;rec<br>
    xc = subwrd(rec,6) ; yc = subwrd(rec,9)<br>
<br>
    &#39;set line &#39;lcolor&#39; &#39;lstyle&#39; &#39;lthick<br>
    &#39;draw mark &#39;marktype&#39; &#39;xc&#39; &#39;yc&#39; &#39;marksize<br>
    tt = tt+1<br>
    while ( tt &lt;= nt )<br>
      res = read(&#39;&#39;<a href="http://hurricane.nf" target="_blank">hurricane.nf</a>&#39;&#39;) ; rc = sublin(res,1)<br>
      if( rc != 0 )<br>
        say &#39;&quot;read&quot; status = &#39;rc<br>
        exit<br>
      endif<br>
      rec = sublin(res,2) ; say &#39;&quot;hurricane.&#39;nf&#39;&quot; record: &#39;rec<br>
      xn = subwrd(rec,6) ; yn = subwrd(rec,9)<br>
      say &#39; &#39;xc&#39; &#39;yc&#39; &#39;xn&#39; &#39;yn<br>
      &#39;draw line &#39;xc&#39; &#39;yc&#39; &#39;xn&#39; &#39;yn<br>
      &#39;draw mark &#39;marktype&#39; &#39;xn&#39; &#39;yn&#39; &#39;marksize<br>
      tt=tt+1<br>
      xc = xn<br>
      yc = yn<br>
    endwhile<br>
<br>
    nf=nf+1<br>
  endwhile<br>
<br>
  say<br>
  say &#39;...plot legend&#39;<br>
  &#39;&#39;legend_plotter&#39; -x 3 -y 6 &#39;legend_info<br>
  say<br>
<br>
  &#39;print&#39;<br>
  &#39;disable print&#39;<br>
<br>
  say<br>
  say &#39;************************************************&#39;<br>
  say &#39; Finished with this script.&#39;<br>
  say &#39;************************************************&#39;<br>
  say<br>
<br>
return<br>
<br>
function plot_base_map(plot_vpage,plot_area,lon1,lon2,lat1,lat2)<br>
<br>
*  Plots base map...<br>
<br>
  &#39;c&#39;<br>
  &#39;set vpage &#39;plot_vpage<br>
  &#39;set parea &#39;plot_area<br>
  &#39;set lon &#39;lon1&#39; &#39;lon2<br>
  &#39;set lat &#39;lat1&#39; &#39;lat2<br>
  &#39;set mproj latlon&#39;<br>
  &#39;set mpt * 1 1 5&#39;<br>
  &#39;set mpdset hires&#39;<br>
  &#39;set poli on&#39;<br>
*  &#39;set grid on&#39;<br>
  &#39;set grads off&#39;<br>
  &#39;set gxout contour&#39;<br>
  &#39;draw map&#39;<br>
<br>
*  add lon/lat lines...<br>
<br>
  &#39;set ccolor 1&#39;<br>
  &#39;set cstyle 5&#39; ; &#39;d lon&#39;<br>
  &#39;set cstyle 5&#39; ; &#39;d lat&#39;<br>
<br>
*  add title, x- and y-labels...<br>
<br>
  &#39;draw title \\ Track of Minimum Surface Pressure&#39;<br>
  &#39;draw xlab Longitude \\&#39;<br>
  &#39;draw ylab \\ Latitude&#39;<br>
<br>
return<br>
<br>_______________________________________________<br>
gradsusr mailing list<br>
<a href="mailto:gradsusr@gradsusr.org">gradsusr@gradsusr.org</a><br>
<a href="http://gradsusr.org/mailman/listinfo/gradsusr" target="_blank">http://gradsusr.org/mailman/listinfo/gradsusr</a><br>
<br></blockquote></div><br><br clear="all"><br><br>
</div>