This archive contains answers to questions sent to Unidata support through mid-2025. Note that the archive is no longer being updated. We provide the archive for reference; many of the answers presented here remain technically correct, even if somewhat outdated. For the most up-to-date information on the use of NSF Unidata software and data services, please consult the Software Documentation first.
=============================================================================== Robb Kambic Unidata Program Center Software Engineer III Univ. Corp for Atmospheric Research address@hidden WWW: http://www.unidata.ucar.edu/ =============================================================================== ---------- Forwarded message ---------- Date: Thu, 05 May 2005 10:51:17 -0700 From: John Caron <address@hidden> To: address@hidden 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 <address@hidden> Organization: UCAR/Unidata To: John Caron <address@hidden> References: <address@hidden> <address@hidden> <address@hidden> 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 <address@hidden>: > 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 <address@hidden>: > > > 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: address@hidden > 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: address@hidden University of Reading 3 Earley Gate Reading RG6 6AL, UK ----------------------------------------------------------------------- ---------------------------------------------------------------- This message was sent using IMP, the Internet Messaging Program.