Thomas Robinson ter at hawaii.edu
Wed Apr 29 19:33:41 EDT 2015

```Aloha Mark,

I've had much better luck using amaxlocx and amaxlocy over maxloc.

It's two lines of code instead of one, but then you don't have to deal with
the nightmare of output from the maxloc function.  When you use maxloc, it
produces a lot of output, so your script is just grabbing the wrong line.
amaxlocx and amaxlocy produce only 1 line of output.

That's what I used as a work around for this same problem.  Here is the
code to replace what you are doing.  I hope it works for you.

**Find the x-coordinate of the maximum htsgw (xc)
'd amaxlocx(htsgw,lon='lon1',lon='lon2',lat='lat1',lat='lat2')'
xc=subwrd(result,4)
**Find the y-coordinate of the maximum htsgw (yc)
'd amaxlocy(htsgw,lon='lon1',lon='lon2',lat='lat1',lat='lat2')'
yc=subwrd(result,4)

-Tom

On Sun, Apr 26, 2015 at 8:39 AM, Mark Sponsler <msponsler at comcast.net>
wrote:

> Hello everyone,
> I'm struggling with maxloc. For whatever reason - I cannot get valid
> results out of it
>  I'm using a simple 0.5 X 0.5 deg grid.
>  I can find the max value just fine.  It's the location of that value
> that is the issue.
> Specifically selecting the correct record to read to obtain the x value
> (nxp3 in this example):
>  'd maxloc(max(htsgw,lat='lat1',lat='lat2'),lon='lon1',lon='lon2')'
>    rec=sublin(result,nxp3)
>  The last valid line of data from maxloc looks like this (the next line
> is undefined values):
>         rec = MAXing.  dim = 1, start = 146, end = 286
>
> Where is the actual grib point or longitude where the max value is located?
> The results I'm getting are the same for every time step in the grib
> file....  dim = 1
>  Or should I be looking somewhere else?
>  Here's the whole script:
>  ********************************
> * Define number of grid points to scan
> ********************************
> lon1 = 120
> lon2 = 255
> lat1 = -5
> lat2 = 65
>  nxp = (lon2-lon1)
> *       say '  nxp = 'nxp
> nyp = (lat2-lat1)
> *      say '  nyp = 'nyp
> *  Grid dimensions are 0.5 x 0.5
> nxp1 = nxp/0.5
> *    say 'nxp1 = 'nxp1
> nyp1 = nyp/0.5
> *    say 'nyp1 = 'nyp1
> nxp2 = math_int(nxp1)
> nyp2 = math_int(nyp1)
> *   say 'nxp2 nyp2 = 'nxp2' 'nyp2
>
> ********************************
> * Find Max Longitude (x dim)
> ********************************
> * There are 'nxp1' number of data points over the longitude range plus 1
> for MAXLOCing
> * and 1 for the result value line. So add 2.
> ********************************
>  nxp3 = (nxp2 + 2)
>      say 'nxp3 = 'nxp3
>
> 'set gxout print'
> 'd maxloc(max(htsgw,lat='lat1',lat='lat2'),lon='lon1',lon='lon2')'
>    rec=sublin(result,nxp3)
>        say 'rec = 'rec
>    xc=subwrd(rec,4)
>         say 'Max height lon = 'xc
>
> ********************************
> * Find max Latitude (y dim)
> ********************************
> * There are 'nyp1' number of data points over the long range plus 1 for
> MAXLOCing
> * and 1 for the result value line. So add 2.
> ********************************
>  nyp3 = (nyp2 + 2)
>      say 'nyp3 = 'nyp3
> 'd maxloc(max(htsgw,lon='lon1',lon='lon2'),lat='lat1',lat='lat2')'
>    rec=sublin(result,nyp3)
>       say 'rec = 'rec
>    yc=subwrd(rec,4)
>      say 'Max height lat = 'yc
>
>        say 'location of max seas = 'xc' 'yc
>
> **************
> *  Draw Max Location
> **************
> 'q gr2xy 'xc' 'yc
>     rec2=sublin(result,1)
>       say 'rec2 = 'rec2
>     xc2 = subwrd(result,3)
>     yc2 = subwrd(result,6)
>       say 'Max Height coords = 'xc2' 'yc2
>  Thanks,
> Mark
>
> _______________________________________________