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.

[visad] Convert Netcdf content to visad object in order generate contours coordinates

  • To: visad@xxxxxxxxxxxxxxxx
  • Subject: [visad] Convert Netcdf content to visad object in order generate contours coordinates
  • From: Jose Carro <joandca@xxxxxxxxx>
  • Date: Tue, 2 Jul 2013 12:49:25 -0300
Dear visad group
I am totally new in visad library and netcdf manipulation.
The file I am trying to manipulate has this features:

Netcdfile follows the convention CF-1.0
type: Time -> ((Longitude, Latitude, zlev) -> (sst, anom, err, ice)
It is 2D because zlev is 0.

I wrote a small java program where I can read a Netcdf file and list
 values following some examples from netcdf library,
My question is how can I transform this array into a format that visad can
understand. As instance FieldImpl.
My goal is to get isotherms (contours) lat,lon using some visad contour
class.
Thanks in advance
Jose
code:

 dataFile=NetcdfFile.open("d:/mymodel.nc");
Variable tempVar = dataFile.findVariable("sst");
if (tempVar == null) {
System.out.println("Cant find Variable sst");
return;
 }else{
 // read variable
 int [] shape = tempVar.getShape();
   int recLen = shape[0]; // number of times
   int[] origin = new int[4];
    shape[0] = 1; // only one rec per read

    // loop over the rec dimension
    for (int rec = 0; rec < recLen; rec++) {
     origin[0] = rec;  // read this index
     // Get the lat/lon data from the file.
     ArrayShort.D2 tempArray = null;
     try {
tempArray = (ArrayShort.D2) (tempVar.read(origin, shape).reduce());
} catch (InvalidRangeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


     // now checking the value
     for (int lvl = 0; lvl < NLVL; lvl++)
     for (int lat = 0; lat < NLAT; lat++)
     for (int lon = 0; lon < NLON; lon++) {
     // System.out.println(tempArray.get(1,1, lat, lon));
     System.out.println("Longitude:" + lon);
     System.out.println("Latitude:" + lat);
     System.out.println("Temp:" + Float.toString(tempArray.get(lat, lon)));
     }
    }
  • 2013 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the visad archives: