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.

[Fwd: Re: 20010711: Netcdf Java problem]

  • Subject: [Fwd: Re: 20010711: Netcdf Java problem]
  • From: John Caron <caron@xxxxxxxxxxxxxxxx>
  • Date: Wed, 11 Jul 2001 12:00:38 -0600


-------- Original Message --------
Subject: Re: 20010711: Netcdf Java problem
Date: Wed, 11 Jul 2001 10:30:59 -0600
From: Russ Rew <russ@xxxxxxxxxxxxxxxx>
Organization: UCAR Unidata Program
To: "Michael P Duff" <mpduff@xxxxxxxx>
CC: support-netcdf@xxxxxxxxxxxxxxxx, caron@xxxxxxxx

>To: support@xxxxxxxxxxxxxxxx
>From: "Michael P Duff" <mpduff@xxxxxxxx>
>Subject: Netcdf Java problem
>Organization: UCAR/Unidata
>Keywords: 200107111340.f6BDeO122826

Hi Mike,

> Hi.  I am having a problem with the NetCDF Java version 2.  I am reading
> data from an existing NetCDF file using the read() function to place the
> data into an Array. The data is stored as a double in the Netcdf file. I
> then use the IndexIterator to step through the Array.  I get a compile
> error.  I am using the code I found in the API for the Interface
> IndexIterator, the "Replace array with its square" example.  The program
> works if I just print the values instead of put them into a variable.  I
> have below my code, my compile error and the "Replace array with its
> square" example.  I would appreciate any help you can give me.
>
> Thank you,
>
> Mike
> ------------------------------------------------------------------------------------------------------------------------------
> // My code that gets a compile error
> import ucar.ma2.*;
> import ucar.nc2.*;
> import java.io.*;
> import java.util.*;
>
> public class ncproblem {
>
>      public static void main(String[] args) {
>           try {
>                NetcdfFile nc = new NetcdfFile(args[0]);
>                System.out.println(nc);
>                Variable heightVar = nc.findVariable("height");
>                System.out.println(heightVar);
>                int[] origin = new int[4];
>                origin[0] = 45000;
>                int[] shape = new int[4];
>                shape[0] = 50;
>                for (int i = 1; i<4; i+=1){
>                     origin[i] = 1;
>                     shape[i] = 1;
>                }
>                Array hgtVals = heightVar.read(origin,shape);
>                IndexIterator iter = hgtVals.getIndexIterator();
>                while(iter.hasNext()) {
>                     for(int i=0; i<50; i+=1) {
>                          Double val = iter.getDoubleNext();
>                          System.out.println(val + ",");
>                     }
>                }
>           }catch (java.io.IOException e) {
>                e.printStackTrace();
>           }
>      }
> }
> ------------------------------------------------------------------------------------------------------------------------------
> The compile error is:
> incompatible types
> found      :  double
> required:  java.lang.Double
>                               Double val = iter.getDoubleNext();
>                                                              ^
> 1 error
> ------------------------------------------------------------------------------------------------------------------------------

Since IndexIterator.getDoubleNext() returns double rather than Double,
you need to change this statement to:

   double val = iter.getDoubleNext();

After that, you'll get another compile error because the read() method
can generate an InvalidRangeException, which is not a java.io.IOException:

ncproblem.java:23: unreported exception ucar.ma2.InvalidRangeException; must be caught or declared to be thrown
                Array hgtVals = heightVar.read(origin,shape);
                                         ^
One (crude) way to handle this would be to change your catch statement to:

          }catch (Exception e) {

--Russ


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