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.

Re: netCDF files



Scheller, Robert M. wrote:

Dear John Caron:

I am a grad student at UW-Madison and I have been attempting
to work with a suite of VEMAP climate data files in the
netCDF format.  Although the User's Manual for NetCDF Java
has been helpful, I am utterly stuck.  It appears fairly
simple to create the NetcdFile class.  However, I want only
a very small subsection of the data.  It appears that ma2.Index
would provide this function but I haven't been able to
make the logical leap from creating the NetcdFile class to
creating a MultiArray that I can index on.  Specifically, it
isn't clear to me how to use the MultiArray read() functions
on a netcdfile.

Hi Rob: you dont directly manipulate Index, the read() is done on the Variable to get an in-memory Array, see example below.

Also, what is the constructor for the Range
class?  Thanks very much for any information, advise or
references you could provide.

see http://www.unidata.ucar.edu/packages/netcdf-java/ and print out the "user documentation".
there's also online javadoc there, you can look up the Range class


Sincerely,

Rob Scheller

Robert M. Scheller
Dept. Forest Ecology & Management
University of Wisconsin - Madison
1630 Linden Dr., Madison, WI 53706
w: 608.265.6321

Visit my webpage! http://landscape.forest.wisc.edu/staff/rob/
Forest Landscape Ecology Lab  http://landscape.forest.wisc.edu


Here's an example that 1) reads a 2x2 subset of an array and then 2) reads the entire array and subsets it.


package test.nc2;

import ucar.ma2.*;
import ucar.nc2.*;

import java.io.*;

public class ExampleRead  {

  public static void main(String [] args) {
    new ExampleRead();
  }

  public ExampleRead() {

    try {
NetcdfFile ncfile = new NetcdfFile("E:/metapps/src/test/nc2/mydata.nc");
      System.out.println( "ncfile "+ ncfile);

      Variable temp = ncfile.findVariable("temperature");
      System.out.println( "temperature "+ temp);

      // read subset
      int[] origin = {1,3};// start at index [1,3]
      int[] shape = {2,2}; // 2x2 array

      Array As = temp.read( origin, shape);
      System.out.println( "physical subset");
      printArray( As);

      // read all the data and logically subset it
      Array A = temp.read();
      Range[] r = new Range[2];
      r[0] = new Range(1,2);
      r[1] = new Range(3,4);

      Array Ap = A.section( r); // logical subset
      System.out.println( "logical subset");
      printArray( Ap);


    } catch (InvalidRangeException e) {
      System.err.println("ERROR reading file "+e);
      return;
    } catch (IOException e) {
      System.err.println("ERROR reading file "+e);
      return;
    }

  }

  private void printArray( Array a) {
    IndexIterator iter = a.getIndexIterator();
    while (iter.hasNext())
      System.out.println( iter.getDoubleNext()+ ",");
  }
}


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