NOTICE: This version of the NSF Unidata web site (archive.unidata.ucar.edu) is no longer being updated.
Current content can be found at unidata.ucar.edu.

To learn about what's going on, see About the Archive Site.

Re: A bug with Lat/Lon grids...

Hi Rob: thanks, I found this bug and will patch 2.2.18. Still looking at the 
gini stride problem.

Rob Weingruber wrote:
Hi John -

Looks like I might have found another bug, this time with server-side Netcdf data
that's natively in a lat/lon grid (seems to work if non-LL grid).

The method on GridCoordSys:

public List getRangesFromLatLonRect(LatLonRect rect)

has this snippet of code near the beginning of the method:

    if (isLatLon()) {
minx = getMinOrMaxLon( llpt.getLongitude(), ulpt.getLongitude(), true);
      miny = Math.min( llpt.getLatitude(), lrpt.getLatitude());
maxx = getMinOrMaxLon( urpt.getLongitude(), lrpt.getLongitude(), false);
      maxy = Math.min( ulpt.getLatitude(), urpt.getLatitude());

    } else {...}

If I try to geoGrid.subset(....) with a lat/lon bbox that is *bigger* than the data (say I zooom waaaay out, strides = 1), the above code will return, say, a minx and maxx that would extend outside of the data. That's good (i think). But then a few lines later, the following
code will have problems:

if ((xaxis instanceof CoordinateAxis1D) && (yaxis instanceof CoordinateAxis1D)) {
      CoordinateAxis1D xaxis1 = (CoordinateAxis1D) xaxis;
      CoordinateAxis1D yaxis1 = (CoordinateAxis1D) yaxis;

      int minxIndex = xaxis1.findCoordElementBounded(minx);
      int minyIndex = yaxis1.findCoordElementBounded(miny);

      int maxxIndex = xaxis1.findCoordElementBounded(maxx);
      int maxyIndex = yaxis1.findCoordElementBounded(maxy);

      ArrayList list = new ArrayList();
      try {
list.add(new Range(Math.min(minyIndex, maxyIndex), Math.max(minyIndex, maxyIndex))); list.add(new Range(Math.min(minxIndex, maxxIndex), Math.max(minxIndex, maxxIndex)));
      } catch (InvalidRangeException e) {
        e.printStackTrace();
      }


If the minx/maxx etc fall outside of the data, then for example,
xaxis1.findCoordElementBounded(minx) might return -1, in which
case the new Range(....) will throw an exception.

Havent tried non-1 strides yet...

Here's the url (with tunnel ;-( that I am using:

http://www.rap.ucar.edu/projects/rdwx_mdss/thredds.php/dodsC/data/decIR

geoGridName = "micron11"

And an example data file is attached.

;-)  Thanks for listening, and whatever you can do ;-))

Enjoying the conference??

;-)


  • 2007 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the netcdf-java archives: