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.
Hi, I'm trying to create a 2D display which make use of shapes (VisADLineArray) to represent precipitation values (which are - traditionally - drawn with bars). The point is, I have a math-type like (year -> (day) -> (Nitrogen_Concentration, Precipitation, Run-off_water,etc...) ) The data is shown in 2D displays. The days are along the x-axis, the above values (Nitrogen, Precipitation, etc) in the y-axis, and for each year there's a different display (or more precisely, for each year the display is redrawn with values for that year). Some of those values are drawn as points (I want to use here VisADPoints), some as normal lines (that is, no shape) and precipitation should be drawn like vertical bars (lines which I'll eventually make thicker, like bars). (I think that's the "cheapest" way to represent such a line: vectorize it.) The problem is, I'm not sure when to set the line coordinates, as they change for each year. For Nitrogen, for example, I have // samples array samples_N_Sim= new float[1][LengthY]; // real types and sets RealType days = new RealType( "day", null, null ); daySet = (Set) new Linear1DSet( days ,(float) firstDay, (float) lastDay, LengthY); RealType nitrate = new RealType( "N_", null, null ); FunctionType oFunc_N = new FunctionType( days , nitrate ); // flat field and reference ff_N_Sim = new FlatField( oFunc_N, daySet ); refer_N_Sim = new DataReferenceImpl("refer_N_Sim"); // year type, set and function RealType year = new RealType( "Year", null, null ); RealTupleType time_type = new RealTupleType(year); Set time_set = new Integer1DSet( args.length ); FunctionType anTyp_N = new FunctionType(time_type, oFunc_N); aFi_N_Sim = new FieldImpl(anTyp_N, time_set); // here set the actual data... // loop over years for(int i = 0; i < args.length ; i++){ // open data file XArcGridReader dat1 = new XArcGridReader(args[i]); // get values, set samples samples_N_Real[0] = dat1.getColumn(3); FlatField.setSamples( my_samples ); FielImpl.setSample( i , FlatField ); } // then do display.add(maps), references.setData(...) and display.addreferences(...) The question is: How can I combine the VisADLineArrays in this scheme, so that for every different year I load a different coordinate array. (I see that with "ordinary" data this is done with ff_N_Sim.setSamples(samples_N_Sim); aFi_N_Sim.setSample( i ,ff_N_Sim); but it seems I don't have the slightest clue how to deal with the shapes...) I have adapted example 47, copied the code over to my programm but then I noticed my mistake. Final question: Can this be done for the lines like above? Does this make sense, or is there a more appropriate way to do it? Thanks for the patience! Ugo
visad
archives: