Due to the current gap in continued funding from the U.S. National Science Foundation (NSF), the NSF Unidata Program Center has temporarily paused most operations. See NSF Unidata Pause in Most Operations for details.

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: