Dear All:
I have a netcdf file which have head file like this,
and
I want to get the data (rhum[0][1][][]) to draw with visad ... I don't know how to assign the section netcdf data to draw with visad. Is there any function I can use or any example which about get nectdf file, parse it and draw with visad..thanks a lot(special get section data) netcdf rh { dimensions: time = 10 ; level = 8 ; lat = 73 ; lon = 144 ; variables: short rhum(time, level, lat, lon) ;//rhum[time][level][lat][lon] ..... ..... rhum:add_offset = 302.65f ; rhum:scale_factor = 0.01f ; ..... ..... } [code] import visad.data.netcdf.*; Field imagesNC = null; DisplayImpl display = new DisplayImplJ3D("image display"); try { imagesNC = (Field) plain.open("C:/tempNcfile/rh.nc"); } catch (IOException exc) { System.out.println(exc); System.exit(0); } final Field image_sequence = imagesNC; FunctionType image_sequence_type = (FunctionType) image_sequence.getType(); FunctionType image_type = (FunctionType) image_sequence_type.getRange(); RealTupleType domain_type = image_type.getDomain(); // map image coordinates to display coordinates display.addMap(new ScalarMap((RealType) domain_type.getComponent(0), Display.XAxis)); display.addMap(new ScalarMap((RealType) domain_type.getComponent(1), Display.YAxis)); display.addMap(new ScalarMap((RealType) domain_type.getComponent(2), Display.ZAxis)); // map netcdf variable(varname) values to RGB RealTupleType range_type = (RealTupleType)image_type.getFlatRange(); for(int nIdex = 0 ; nIdex < range_type.getNumberOfRealComponents() ; nIdex++) { String netcdf_varname = range_type.getComponent(nIdex).prettyString(); if(netcdf_varname.equals(varname)) { display.addMap(new ScalarMap((RealType) range_type.getComponent(nIdex), Display.RGB)); break; } } // link the Display to image_ref // display will update whenever image changes final DataReference image_ref = new DataReferenceImpl("image"); image_ref.setData(image_sequence); display.addReference(image_ref); [/code] Can I use "import visad.data.netcdf.*;" functions in these package, or rewrite parse function in netcdf class package? Please Help me, thank you~~ :) p.s I have other question with this..Any boby knows what's wrong ? why I run examples.VerySimple class which input val(x, y) netcdf file will be ok, but I run same function which input rhum(time, level, lat, lon) will get these exception.. visad.BadMappingException: DisplayImpl.addMap: DisplayZAxis illegal for this DisplayRenderer at visad.DisplayImpl.addMap(DisplayImpl.java:1884) at visad.DisplayImpl.addMap(DisplayImpl.java:1846) at visad.util.DataUtility.makeSimpleDisplay(DataUtility.java:329) at examples.VerySimple.main(VerySimple.java:45) Thanks a lot :) |