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.
============================================================================== Robb Kambic Unidata Program Center Software Engineer III Univ. Corp for Atmospheric Research rkambic@xxxxxxxxxxxxxxxx WWW: http://www.unidata.ucar.edu/ ============================================================================== ---------- Forwarded message ---------- Date: Thu, 05 May 2005 10:51:17 -0700 From: John Caron <caron@xxxxxxxxxxxxxxxx> To: robb@xxxxxxxxxxxxxxxx Subject: [Fwd: Re: Problem Reading GRIB Data] just got this -------- Original Message -------- Subject: Re: Problem Reading GRIB Data Date: Thu, 5 May 2005 18:13:41 +0100 From: Adityarajsingh Santokhee <ads@xxxxxxxxxxxxxxxxxxxx> Organization: UCAR/Unidata To: John Caron <caron@xxxxxxxxxxxxxxxx> References: <1115303745.427a2f41a616a@xxxxxxxxxxxxxxxxxxx> <427A335A.4020608@xxxxxxxxxxxxxxxx> <1115305637.427a36a5a2f08@xxxxxxxxxxxxxxxxxxx> Hello again John, There was a bug in my program. > int[] start = {0,0,0,0}; > int[] stride = {1,1,1,1}; > int[] count = {0,1,2,2}; <--------0 instead of 1 > myTest.readData(ds,4,start,stride,count); The start index in count should have been 0 instead of 1. That was causing the index out of bounds error. Sorry for the mistake. Adit Quoting Adityarajsingh Santokhee <ads@xxxxxxxxxxxxxxxxxxxx>: > Hello John, > > The GRIB file can be downloaded from: > > http://www.nerc-essc.ac.uk/~ads/FOAM_atl19_anal.130502.scal.grb > > Version of jar file: 2.2.08 > > > Java Program used: > > import ucar.nc2.*; > import ucar.ma2.*; > import ucar.nc2.dataset.*; > > import java.io.*; > import java.util.*; > import java.text.DateFormat; > import java.text.SimpleDateFormat; > > > public class Test2netcdf > { > > public void readData(NetcdfDataset ncFile, int numDimensions, int[] > start, > int[] stride, int[] count) > { > try > { > String variableName = "Salinity"; > Variable var = ncFile.findVariable(variableName); > > List myList = new ArrayList(); > for (int i = 0; i < numDimensions; i++) > { > int lastElement = start[i] + (count[i] - 1) * stride[i]; > myList.add(i, new Range(start[i], lastElement, > stride[i])); > } > > /* > this is the original range definition > myList.add(0, new Range(0, 0, 1)); > myList.add(1, new Range(0, 19, 1)); > myList.add(2, new Range(0, 629, 1)); > myList.add(3, new Range(0, 899, 1)); > */ > > > Calendar calendar = Calendar.getInstance(); > long start1 = calendar.getTimeInMillis(); > > Array arr = var.read(myList); > //Array subsetArr = arr.sectionNoReduce(myList); > > Calendar calendar2 = Calendar.getInstance(); > long end1 = calendar2.getTimeInMillis(); > > long timeTaken = end1 - start1; > System.out.println("Time Taken (ms) : " + timeTaken); > > // Get the data as an array of floats > //float[] data = (float[])subsetArr.copyTo1DJavaArray(); > /* > int[] myShape = arr.getShape(); > for (int i=0; i<myShape.length; i++) > System.out.println("Shape : " + myShape[i]); > */ > > ncFile.close(); > } > catch(Exception ioe) > { > ioe.printStackTrace(); > } > } > > > > > public static void main (String[] args) > { > try > { > Test2netcdf myTest = new Test2netcdf(); > > String [] filenames > { > "130502/FOAM_atl19_anal.130502.scal.grb" > }; > > > for (int i=0; i<filenames.length; i++) > { > > String path = > "/data/cadfael/marine/FOAM/FOAM_9th/" + filenames[i]; > NetcdfDataset ds = > NetcdfDataset.openDataset(path); > > int[] start = {0,0,0,0}; > int[] stride = {1,1,1,1}; > int[] count = {1,1,2,2}; > myTest.readData(ds,4,start,stride,count); > } > } > catch (Exception e) > { > e.printStackTrace(); > } > } > } > > > > Cheers, > > Adit > > > > > > > > > > > Quoting John Caron <caron@xxxxxxxxxxxxxxxx>: > > > Adityarajsingh Santokhee wrote: > > > > >Hello, > > > > > >I am trying to read a variable's data from a GRIB file. The > > read(java.util.List > > >section) function is giving an array out of bounds error message for any > > >section apart from the whole range. Are there any workarounds to this > > problem > > >or should I load whole data for that variable and then do subsetting. > This > > >might be a problem if I have to read hundred's of files. > > > > > >Error Message: > > > > > >java.lang.ArrayIndexOutOfBoundsException: 4 > > > at ucar.ma2.ArrayFloat.setFloat(ArrayFloat.java:193) > > > at ucar.ma2.IteratorFast.setFloatNext(IteratorFast.java:61) > > > at > > > >ucar.nc2.iosp.grib.GribServiceProvider.readXY(GribServiceProvider.java:177) > > > at > > > >ucar.nc2.iosp.grib.GribServiceProvider.readLevel(GribServiceProvider.java:150) > > > at > > > >ucar.nc2.iosp.grib.GribServiceProvider.readData(GribServiceProvider.java:134) > > > at ucar.nc2.NetcdfFile.readData(NetcdfFile.java:848) > > > at ucar.nc2.Variable._read(Variable.java:737) > > > at ucar.nc2.Variable.read(Variable.java:451) > > > at ucar.nc2.dataset.VariableDS._read(VariableDS.java:206) > > > at ucar.nc2.Variable.read(Variable.java:451) > > > at ucar.nc2.dataset.VariableDS._read(VariableDS.java:206) > > > at ucar.nc2.Variable.read(Variable.java:475) > > > at Test2netcdf.readData(Test2netcdf.java:76) > > > at Test2netcdf.main(Test2netcdf.java:128) > > > > > > > > >Cheers, > > > > > >Adit. > > > > > > > > >---------------------------------------------------------------- > > >This message was sent using IMP, the Internet Messaging Program. > > > > > > > > Hi Adit: > > > > send us the file or URL to the file so we can try to reproduce the > > problem. also, what version of jar file are you using ? (see README > > inside it) > > > > > > > ----------------------------------------------------------------------- > Adityarajsingh Santokhee Tel: +44 118 378 5213 (direct line) > eScience Data Manager Tel: +44 118 378 8741 (ESSC) > Reading e-Science Centre Fax: +44 118 378 6413 > ESSC Email: ads@xxxxxxxxxxxxxxxxxxxx > University of Reading > 3 Earley Gate > Reading RG6 6AL, UK > > ----------------------------------------------------------------------- > > ---------------------------------------------------------------- > This message was sent using IMP, the Internet Messaging Program. > ----------------------------------------------------------------------- Adityarajsingh Santokhee Tel: +44 118 378 5213 (direct line) eScience Data Manager Tel: +44 118 378 8741 (ESSC) Reading e-Science Centre Fax: +44 118 378 6413 ESSC Email: ads@xxxxxxxxxxxxxxxxxxxx University of Reading 3 Earley Gate Reading RG6 6AL, UK ----------------------------------------------------------------------- ---------------------------------------------------------------- This message was sent using IMP, the Internet Messaging Program.
thredds
archives: