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 Greg, > I need to provide some visual feedback when a user clicks on a data > point. My thought is to overlay a cross shape on the point, ie create a > new reference and add it to the display. Reading the archives keeps > pointing me to Test47.java example. Unfortunately, I just can't follow > it very well. I'm apparently missing some fundamental VisAD > understanding. Another approach to highlighting would be to include RealTypes ScalarMap'ed to color in your Data, and changing the values of those RealTypes when you want to highlight. > I am able to run the example in Jbuilder and I see 6 shapes, at the same > elevation from left to right: > 1) a tiny purple dot, > 2) a small purple cube, > 3) a pink "x", > 4) a medium sized white cube, > 5) text characters "1.2", > 6) a large purple cube. > > In setupServerData method I see: > values = new float[][] {{0.0f, 1.0f, 2.0f, 3.0f, 0.0f, 1.0f}}; > > Presumably, these are the X coordinates of the 6 objects since they are > all at the same height. Why it doesn't continue with 4.0f and 5.0f after > 3.0f, I haven't a clue. Text is apparently mapped differently for some > reason. As you note, the VisAD library is complex so its better to analyze examples than to presume, especially when the presumption is not consistent with the observed behavior. In this case, the 'values' array is passed to the setSamples() method of the histograms1 FlatField, which has MathType (ir_radiance -> count). Hence, the numbers in the 'values' array have RealType 'count'. 'count' is mapped to Display.Shape rather than Display.XAxis, so they are not X coordinates. They are indices into the 'shapes' array passed to shape_control.setShapes() (treated as ordinary integer indices since count_set, passed to shape_control.setShapeSet(), is just a sequence of integers 0, 1, 2, 3). Hence the sequence in 'values', (i.e., 0, 1, 2, 3, 0, 1) iterates through the 4 shapes in the 'shapes' array, then iterates through the first two again. In shapes, text is converted by the PlotText.render_label() method into a geometrical shape and handled like any other shape geometry. When text is used in a shape, the Display logic doesn't know the shape came from text. If text is displayed using a ScalarMap to Text then the Display logic knows it is text. > Anyway, I really have a hard time following this VisAD code. So many > internal details of the VisAD data structures seem to be hidden or deeply > layered that it makes it extremely difficult to follow. I have looked > through the tutorials and understand the simpler ones for the most part > but this shape mapping I just don't get. How does each of the 6 items > get mapped to a new shape? Does anybody have any examples with comments > that document each step along the way? Preferably one that shows how to > provide highlighting or some other type of visual feedback when data > points in the display are clicked. Unfortunately, the Tutorial does not cover Shapes, so you'll need to consult the VisAD Developer's Guide at: http://www.ssec.wisc.edu/~billh/guide.html See sections 4.3.12 and 4.7. You are correct that VisAD is complex, which is a consequence of its generality. In order to work with something as complex as shapes, you'll either need to first really experiment with the simpler topics in the tutorial, or carefully analyze (as I have above) the examples and Developers Guide sections about shape (few as they are). If you do that and get stuck on some point, we'll be happy to answer questions sent to the list. Good luck, Bill
visad
archives: