Re: [visad] help

Hello Devanshi

You need to do:

ncFile.findVariable("ScienceData/Latitude");

This should solve the problem.

Are you working with SAC/ISRO?

Ghansham

On 03/27/2014 01:10 AM, visad-request@xxxxxxxxxxxxxxxx wrote:
Send visad mailing list submissions to
        visad@xxxxxxxxxxxxxxxx

To subscribe or unsubscribe via the World Wide Web, visit
        http://mailman.unidata.ucar.edu/mailman/listinfo/visad
or, via email, send a message with subject or body 'help' to
        visad-request@xxxxxxxxxxxxxxxx

You can reach the person managing the list at
        visad-owner@xxxxxxxxxxxxxxxx

When replying, please edit your Subject line so it is more specific
than "Re: Contents of visad digest..."


Today's Topics:

    1. Re: Error reading h5 file using NetcdfFile class
       (Devanshi Prajapati)


----------------------------------------------------------------------

Message: 1
Date: Thu, 27 Mar 2014 01:10:00 +0530
From: Devanshi Prajapati<prajapati.devanshi@xxxxxxxxx>
To: "visad@xxxxxxxxxxxxxxxx"<visad@xxxxxxxxxxxxxxxx>
Subject: Re: [visad] Error reading h5 file using NetcdfFile class
Message-ID:
        <CAH3DJ6L4KO84O_Rb5AkuMYHFhjnJ0gOs0Zwrq-pOpRYFatqunw@xxxxxxxxxxxxxx>
Content-Type: text/plain; charset="iso-8859-1"

Hello and thank you all for reply ,

Ghansham Sir, Yes I am trying with Megha-Tropiques dataset.

And reading the group, ScienceData, was my last attemp,as I have already
tried the same with "Latitude"(var2 in coding),"Longitude" and other
variables.
So, passing var2 while getting Dimension,I get the same error.

And all that variable names with detailed information is displayed by
printing the ncFile vaiable(Line No:3 which is in comment),
  but when I pass it to the Variable class, or trying to getDimension gives
me a null value.


*And the code is,*

import java.io.IOException;

import ucar.ma2.Array;

import ucar.nc2.Dimension;

import ucar.nc2.NetcdfFile;

import ucar.nc2.Variable;



public class Netcdf_readh5

{

     String filePath;

     int scans=0;



     public Netcdf_readh5() throws IOException

     {

          filePath="F:\\img1.h5";

                 NetcdfFile  ncFile = NetcdfFile.open(filePath);

         System.out.println(ncFile);



          Variable var2 = ncFile.findVariable("Latitude");



         Dimension d=var1.getDimension(0);

         System.out.println(d.getFullName());



      }

     public static void main(String args[]) throws IOException

     {        new Netcdf_readh5();

     }   }



/*

On Wed, Mar 26, 2014 at 11:30 PM,<visad-request@xxxxxxxxxxxxxxxx>  wrote:

Send visad mailing list submissions to
         visad@xxxxxxxxxxxxxxxx

To subscribe or unsubscribe via the World Wide Web, visit
         http://mailman.unidata.ucar.edu/mailman/listinfo/visad
or, via email, send a message with subject or body 'help' to
         visad-request@xxxxxxxxxxxxxxxx

You can reach the person managing the list at
         visad-owner@xxxxxxxxxxxxxxxx

When replying, please edit your Subject line so it is more specific
than "Re: Contents of visad digest..."


Today's Topics:

    1. Re: help (Ghansham Sangar)
    2. Re: help (Ghansham Sangar)


----------------------------------------------------------------------

Message: 1
Date: Wed, 26 Mar 2014 09:14:39 +0530
From: Ghansham Sangar<ghansham@xxxxxxxxxxxxxxx>
To: visad@xxxxxxxxxxxxxxxx
Subject: Re: [visad] help
Message-ID:<53324D27.2010809@xxxxxxxxxxxxxxx>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed

Hi all....


Well McV and IDV have lots of code demonstrating that.

IDV goes one step further to use ucar.n2.dataset.grid.GridDataset which
uses NetcdfFile class to create grids
which it further connects with visad using
ucar.visad.data.GeoGridFlatField. That is pretty complicated in the sense,
   you know how to extend the ucar.nc2.dataset.CoordSysBuilder to insert
your dataset file in that.
In McV, it is plain NetcdfFile class being used almost in the new
development may be related to S-NPP datasources
or even the Hydra stuff. The new incarnation of Hydra (Hydra 2), uses
McV code based for creating Multispectral datasources
for calipso, cloudsat, modis, etc.

Coming back to what Devanshi is concerned about. Actually as far  as I
know she is trying with Meghatropiques dataset.
It is a very special satellite as it provides all the acquisitions in
tropical region specifically dedicated to study the water cycle of
tropical region. It is collaboration between ISRO and CNES.


I would suggest Devanshi, you should just first try to see how you are
reading variables. The code snippet that you sent,
in that you are reading the "Science Data" as a variable but it is
group. You should first try the following method:

List<Variable>  var_list = ncFile.getVariables();

It gives the list of all the variables in the hdf-5 file.
Then you can pick the variable of interest from that list and apply
float samples[] = variable.read(float.class); //assuming data type is float

I hope it helps.

Ghansham


On 03/25/2014 11:30 PM, visad-request@xxxxxxxxxxxxxxxx wrote:
Send visad mailing list submissions to
       visad@xxxxxxxxxxxxxxxx

To subscribe or unsubscribe via the World Wide Web, visit
       http://mailman.unidata.ucar.edu/mailman/listinfo/visad
or, via email, send a message with subject or body 'help' to
       visad-request@xxxxxxxxxxxxxxxx

You can reach the person managing the list at
       visad-owner@xxxxxxxxxxxxxxxx

When replying, please edit your Subject line so it is more specific
than "Re: Contents of visad digest..."


Today's Topics:

     1. Re: help (Tom Whittaker)
     2. Re: help (Curtis Rueden)
     3. Re: help (Tom Whittaker)


----------------------------------------------------------------------

Message: 1
Date: Tue, 25 Mar 2014 09:12:12 -0500
From: Tom Whittaker<whittaker@xxxxxxxx>
To: Devanshi Prajapati<prajapati.devanshi@xxxxxxxxx>
Cc: "visad@xxxxxxxxxxxxxxxx"<visad@xxxxxxxxxxxxxxxx>
Subject: Re: [visad] help
Message-ID:
       <CAA6nkJBHXNWD=
YWJ2+TWbG865GQwVXQmC4+xTEZuj2X2YSDJrg@xxxxxxxxxxxxxx>
Content-Type: text/plain; CHARSET=US-ASCII

I believe the main issue here is that the code in the VisAD library
for HDF files has not been maintained by the original authors.  This
also is true of the netCDF adapter ("Plain").  Unfortunately, this
means that for files that use newer features in these formats, the
code no longer works.

I do not have any solutions, other than as Ghansham suggests, using
the "official" releases of the respective libraries and then building
your own VisAD Data objects...

tom

On Fri, Mar 21, 2014 at 3:14 AM, Devanshi Prajapati
<prajapati.devanshi@xxxxxxxxx>   wrote:
Hi.......This is my program,

package myapp;

import java.rmi.RemoteException;
import visad.DataImpl;
import visad.VisADException;
import visad.data.hdf5.HDF5Form;
import ncsa.hdf.hdf5lib.*;

public final class hfAdapter2
{  String filePath;
      public hfAdapter2() throws VisADException, RemoteException
      {
          filePath="F:\\Devanshi\\Input\\xyz.h5";
          System.load("F:\\Devanshi\\Projects\\MyApp\\Lib\\jhdf.dll");
          System.load("F:\\Devanshi\\Projects\\MyApp\\Lib\\jhdf5.dll");
          HDF5Form h=new HDF5Form();
          DataImpl ncData=h.open(filePath);
      }
      public static void main(String[] args)
      throws RemoteException, VisADException, IOException
      {      new hfAdapter2();
      }
}
And the Error I got is,

run:
Exception in thread "main" java.lang.UnsatisfiedLinkError:
ncsa.hdf.hdf5lib.H5.H5Fopen(Ljava/lang/String;II)I
at ncsa.hdf.hdf5lib.H5.H5Fopen(Native Method)
at visad.data.hdf5.hdf5objects.HDF5File.<init>(HDF5File.java:85)
at visad.data.hdf5.HDF5FileAdapted.<init>(HDF5FileAdapted.java:70)
at visad.data.hdf5.HDF5Form.open(HDF5Form.java:102)
at myapp.hfAdapter2.<init>(hfAdapter2.java:46)
at myapp.hfAdapter2.main(hfAdapter2.java:96)
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)

--
Devanshi U. Prajapati


_______________________________________________
visad mailing list
visad@xxxxxxxxxxxxxxxx
For list information, to unsubscribe, visit:
http://www.unidata.ucar.edu/mailing_lists/



------------------------------

Message: 2
Date: Wed, 26 Mar 2014 10:41:41 +0530
From: Ghansham Sangar<ghansham@xxxxxxxxxxxxxxx>
To: visad@xxxxxxxxxxxxxxxx
Subject: Re: [visad] help
Message-ID:<5332618D.1010408@xxxxxxxxxxxxxxx>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed

Some sample snippet to read kalpana-1 hdf5 dataset using NCSA hdf5 library:

public Test(String filename) throws HDF5Exception, Exception {

          H5File h5File = new H5File(filename, FileFormat.READ);
          int id = h5File.open();
          H5Group rootGroup = (H5Group) ((DefaultMutableTreeNode)
h5File.getRootNode()).getUserObject();
          List<HObject>  member_list = rootGroup.getMemberList();
          H5Group vhrr_group = null;
          for (int i = 0; i<  member_list.size(); i++) {
              HObject member = member_list.get(i);
              if (member.getName().equals("VHRR")) {
                  vhrr_group = (H5Group) member;
                  break;
              }
          }
          List<HObject>  vhrr_members = vhrr_group.getMemberList();
          H5Group image_data_group = null;
          for (int i = 0; i<  vhrr_members.size(); i++) {
              HObject vhrr_member = vhrr_members.get(i);
              if (vhrr_member.getName().equals("Image Data")) {
                  image_data_group = (H5Group) vhrr_member;
                  break;
              }
          }
          List<HObject>  image_data_members =
image_data_group.getMemberList();
          H5ScalarDS tir_ds = null;
          for (int i = 0; i<  image_data_members.size(); i++) {
              HObject image_data_member = image_data_members.get(i);
              if (image_data_member.getName().equals("VHRR_TIR")) {
                  tir_ds = (H5ScalarDS) image_data_member;
                  break;
              }
          }
          short[] tir_data =(short[]) tir_ds.read();
          long dims[] = tir_ds.getDims();
          int scans = (int) dims[0];
          int pixels = (int) dims[1];
          h5File.close();


      }


Now you have got the samples and dimensions of dataset, now you can
create a visad data object using
that. You can check any of the examples bundled with visad library.

I think you can start from here...
As far as library settings are concerned.
You should have all java-hdf jars in your project.

and dll(for windows) and .so (for linux) in LD_LIBRARY_PATH.

I hope it helps


One more point, being a JNI library this should be relatively
performance wise faster as compared to netcdf-java which is pure java
library.


Ghansham




On 03/25/2014 11:30 PM, visad-request@xxxxxxxxxxxxxxxx wrote:
Send visad mailing list submissions to
       visad@xxxxxxxxxxxxxxxx

To subscribe or unsubscribe via the World Wide Web, visit
       http://mailman.unidata.ucar.edu/mailman/listinfo/visad
or, via email, send a message with subject or body 'help' to
       visad-request@xxxxxxxxxxxxxxxx

You can reach the person managing the list at
       visad-owner@xxxxxxxxxxxxxxxx

When replying, please edit your Subject line so it is more specific
than "Re: Contents of visad digest..."


Today's Topics:

     1. Re: help (Tom Whittaker)
     2. Re: help (Curtis Rueden)
     3. Re: help (Tom Whittaker)


----------------------------------------------------------------------

Message: 1
Date: Tue, 25 Mar 2014 09:12:12 -0500
From: Tom Whittaker<whittaker@xxxxxxxx>
To: Devanshi Prajapati<prajapati.devanshi@xxxxxxxxx>
Cc: "visad@xxxxxxxxxxxxxxxx"<visad@xxxxxxxxxxxxxxxx>
Subject: Re: [visad] help
Message-ID:
       <CAA6nkJBHXNWD=
YWJ2+TWbG865GQwVXQmC4+xTEZuj2X2YSDJrg@xxxxxxxxxxxxxx>
Content-Type: text/plain; CHARSET=US-ASCII

I believe the main issue here is that the code in the VisAD library
for HDF files has not been maintained by the original authors.  This
also is true of the netCDF adapter ("Plain").  Unfortunately, this
means that for files that use newer features in these formats, the
code no longer works.

I do not have any solutions, other than as Ghansham suggests, using
the "official" releases of the respective libraries and then building
your own VisAD Data objects...

tom

On Fri, Mar 21, 2014 at 3:14 AM, Devanshi Prajapati
<prajapati.devanshi@xxxxxxxxx>   wrote:
Hi.......This is my program,

package myapp;

import java.rmi.RemoteException;
import visad.DataImpl;
import visad.VisADException;
import visad.data.hdf5.HDF5Form;
import ncsa.hdf.hdf5lib.*;

public final class hfAdapter2
{  String filePath;
      public hfAdapter2() throws VisADException, RemoteException
      {
          filePath="F:\\Devanshi\\Input\\xyz.h5";
          System.load("F:\\Devanshi\\Projects\\MyApp\\Lib\\jhdf.dll");
          System.load("F:\\Devanshi\\Projects\\MyApp\\Lib\\jhdf5.dll");
          HDF5Form h=new HDF5Form();
          DataImpl ncData=h.open(filePath);
      }
      public static void main(String[] args)
      throws RemoteException, VisADException, IOException
      {      new hfAdapter2();
      }
}
And the Error I got is,

run:
Exception in thread "main" java.lang.UnsatisfiedLinkError:
ncsa.hdf.hdf5lib.H5.H5Fopen(Ljava/lang/String;II)I
at ncsa.hdf.hdf5lib.H5.H5Fopen(Native Method)
at visad.data.hdf5.hdf5objects.HDF5File.<init>(HDF5File.java:85)
at visad.data.hdf5.HDF5FileAdapted.<init>(HDF5FileAdapted.java:70)
at visad.data.hdf5.HDF5Form.open(HDF5Form.java:102)
at myapp.hfAdapter2.<init>(hfAdapter2.java:46)
at myapp.hfAdapter2.main(hfAdapter2.java:96)
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)

--
Devanshi U. Prajapati


_______________________________________________
visad mailing list
visad@xxxxxxxxxxxxxxxx
For list information, to unsubscribe, visit:
http://www.unidata.ucar.edu/mailing_lists/





_______________________________________________
visad mailing list
visad@xxxxxxxxxxxxxxxx
For list information, to unsubscribe, visit:
http://www.unidata.ucar.edu/mailing_lists/

End of visad Digest, Vol 50, Issue 8
************************************