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.
>From: John F Moses <jfmoses@xxxxxxxxxxxxxxxxxxxx> >Organization: Computer Sciences Corp. >Keywords: 200008112003.e7BK3tN11187 Hi John- >i'm trying to simple way to plot a real number at a given lat, lon location >in the display. i've look at the text plot example, but can't find my way >through the data types. can someone help me by pointing to an example, or >code snipet? Basically, you need to map the MathType of your Real or Text object to Display.Text. If you have a RealTuple like (lat, lon, altitude) where the MathTypes of each are RealType.Latitude, RealType.Longitude, RealType.Altitude, you could just map lat->Display.YAxis, lon->Display.XAxis and altitude->Display.Text, add the tuple to your datareference and the value for altitude should plot at the lat/lon point in your display. I've attached a file TextPlot.java which will plot a station elevation at a given lat/lon point. If you pass an arguement to the command line (any old argument will do), it will plot the station name instead. This uses NamedLocationTuple in visad.georef which is a tuple of (name, lat, lon, alt) and is useful for encapsulating a station location. >being stuck on a friday afternoon, any help would be much appriciated, My first advice would be to quit and go drink beer, but try out TextPlot instead as a second option. Don ************************************************************* Don Murray UCAR Unidata Program dmurray@xxxxxxxxxxxxxxxx P.O. Box 3000 (303) 497-8628 Boulder, CO 80307 ************************************************************* Unidata WWW Server http://www.unidata.ucar.edu/ McIDAS Demonstration Machine http://mcdemo.unidata.ucar.edu/ ************************************************************* import visad.*; import visad.georef.*; import visad.java3d.*; import visad.data.mcidas.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.net.URL; public class TextPlot { public static void main(String[] args) throws Exception { DisplayImpl display = new DisplayImplJ3D("Station Name Plots", new TwoDDisplayRendererJ3D()); // turn the box off so it won't be confused with the map lines display.getDisplayRenderer().setBoxOn(false); // create the stations NamedLocationTuple point1 = new NamedLocationTuple("Denver", 39.8, -104.6, 1656); NamedLocationTuple point2 = new NamedLocationTuple("Pueblo", 38.3, -104.5, 1439); NamedLocationTuple point3 = new NamedLocationTuple("Grand Junction", 39.2, -108.5, 1439); // create the ScalarMaps (lat-Y, lon-X, alt/name -> text) ScalarMap latMap = new ScalarMap(RealType.Latitude, Display.YAxis); display.addMap(latMap); ScalarMap lonMap = new ScalarMap(RealType.Longitude, Display.XAxis); display.addMap(lonMap); // zoom in over colorado latMap.setRange(37, 42); lonMap.setRange(-109, -104); // set up the mapping to text - use Altitude if no args, otherwise name ScalarMap textMap; if (args.length == 0) { textMap = new ScalarMap(RealType.Altitude, Display.Text); } else { textMap = new ScalarMap(NamedLocationTuple.IDENTIFIER_TYPE, Display.Text); } display.addMap(textMap); // set some attributes of the displayed text TextControl textControl = (TextControl) textMap.getControl(); textControl.setSize(1.5); // set the text size textControl.setCenter(true); // center on the LatLonPoint textControl.setFont(new Font("SansSerif", Font.PLAIN, 18)); // Create a station table with one record for each station RealType record = new RealType("record"); // Domain type FunctionType tableType new FunctionType(record, point1.getType()); Integer1DSet recordSet = new Integer1DSet(record, 3); // domain the size of the # of stations FieldImpl stationTable = new FieldImpl(tableType, recordSet); //make the table // set the stations in the table stationTable.setSample(0, point1); stationTable.setSample(1, point2); stationTable.setSample(2, point3); // add the stations to the display DataReference tableRef = new DataReferenceImpl("stations"); tableRef.setData(stationTable); display.addReference(tableRef); // add a map DataReference mapRef = new DataReferenceImpl("maplines"); try { BaseMapAdapter bma = new BaseMapAdapter( new URL("ftp://www.ssec.wisc.edu/pub/visad-2.0/OUTLUSAM")); mapRef.setData(bma.getData()); display.addReference(mapRef); } catch (Exception exp) {} // don't add to display if we can't get map // something to display it with JFrame frame = new JFrame("Text Display"); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); frame.getContentPane().add(display.getComponent()); frame.pack(); frame.setSize(400,400); frame.show(); } }
visad
archives: