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.
Hi Don, Thanks for your quick reply. I switched to 2.2.17 and the problem is still there. The values of temperature from ncdump include (file is large!): 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, -20974, -20974, -20979, -20985, 32767, 32767, 32767, 32767, -21054, -21072, -21083, -21093, -21101, -21108, -21112, -21115, 32767, 32767, 32767, 32767 represents missing data (metadata has :_FillValue = 32767;) and, for example, -21072 represents (-21072 * 0.001 + 20=) -1.072 degrees C, which is within the valid range. According to the file metadata, the convention is COARDS. Also, as I said in my original post, ncBrowse displays the data without any problems. Thanks again, Jon On 19/10/06, Don Murray <address@hidden> wrote:
Hi Jon- I suspect the problem is with the valid_max and valid_min attributes. The library will return NaN if the values are outside the range of the min/max. If the type of the attribute is the same as the variable, they are compared before scale and offset. If they are different they are compared after scaling and offset. I recently found a bug with this that was fixed in the 2.2.17 pre-release, but I'm not sure if that is why you are seeing what you are seeing. What are the values for temperature in ncdump? Don ************************************************************* Don Murray UCAR Unidata Program address@hidden P.O. Box 3000 (303) 497-8628 Boulder, CO 80307 http://www.unidata.ucar.edu/staff/donm ************************************************************* Jon Blower wrote: > Dear all, > > I'm having some problems reading data from a particular NetCDF file. > The code i'm using is: > > NetcdfDataset nc = > NetcdfDataset.openDataset("C:\\data\\OA_20060830.nc", true, null); > GridDataset gd = new GridDataset(nc); > GeoGrid gg = gd.findGridByName("temperature"); > Array arr = gg.readYXData(0, 0); > IndexIterator it = arr.getIndexIteratorFast(); > while (it.hasNext()) { > double val = it.getDoubleNext(); > System.out.println("" + val); > } > nc.close(); > > I just get a load of NaNs, even though I know that there are valid > data in the file (ncBrowse displays the data perfectly). The only > unusual thing about the data is that the data are stored as short > integers, with an offset and scale factor: > > short temperature(time, depth, latitude, longitude); > :long_name = "Temperature"; > :missing_value = 32767; // short > :_FillValue = 32767; // short > :units = "degree_Celsius"; > :valid_min = -3; // short > :valid_max = 40; // short > :add_offset = 20.0; // double > :scale_factor = 0.0010; // double > :comment = "Temperature estimate (by objective analysis)"; > > I understood that the NetcdfDataset class automatically dealt with > offsets and scale factors in "enhanced" mode, which is what I am > using (or trying to use). Hence I was expecting to "see" the data as > an array of doubles. The same happens if I use getFloatNext() or > getShortNext(). > > Can anyone see what I'm doing wrong?
-- -------------------------------------------------------------- Dr Jon Blower Tel: +44 118 378 5213 (direct line) Technical Director 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 -------------------------------------------------------------- =============================================================================== To unsubscribe netcdf-java, visit: http://www.unidata.ucar.edu/mailing-list-delete-form.html ===============================================================================