340 likes | 767 Views
The Scientific Graphics Toolkit (A Technical Overview) Donald Denbo UW-JISAO/NOAA-PMEL http://www.epic.noaa.gov/java/sgt Introduction The Scientific Graphics Toolkit (SGT) is a collection of Java classes and interfaces to create graphical applications.
E N D
TheScientific Graphics Toolkit(A Technical Overview) Donald Denbo UW-JISAO/NOAA-PMEL http://www.epic.noaa.gov/java/sgt
Introduction • The Scientific Graphics Toolkit (SGT) is a collection of Java classes and interfaces to create graphical applications. • SGT is a toolkit, not an application. Using SGT requires moderate Java programming skills. • SGT does have several classes that make creating a graphical application easier, but using SGT does require producing code. • With a modicum of effort a Java programmer can, using SGT, create graphical Java applications that are easy to use. • SGT has had 5588 downloads to 2393 unique sites in 60 countries since March 2000 (as of Jan 7, 2002). NVODS/DODS Technical Workshop
History • Sgt was developed to allow a NOAAServer user to interactively preview data and overlay plots. • Originally developed using jdk 1.0.3, now uses jdk 1.1.x. Next release will require jdk 1.2 or newer. • Tutorial made available October 25, 2001. • SGT release dates • 1.0 – March 20, 2000 • 2.0 – March 14, 2001 • 2.1 – December 14, 2001 NVODS/DODS Technical Workshop
SGT Applications • OceanShare • a collaborative tool for distributed in situ data visualization • Being customized for Fisheries-Oceanography use • http://www.epic.noaa.gov/collab/ (pdf paper) • ncBrowse • a netCDF file browser for local and remote netCDF files • http://www.epic.noaa.gov/java/ncBrowse/(power point presentation) • 3452 downloads to 1680 unique sites in 48 countries since February 2000 (as of Jan 7, 2002). • Climate Data Portal client • A distributed in-situ data application • http://www.epic.noaa.gov/cdp/(power point presentation) • Although the CDPclient has not been publicly released, it has had 125 downloads to 51 unique sites in 6 countries. NVODS/DODS Technical Workshop
Outline • Demos and Examples • Technical Issues • Design philosophy & Goals • Using standard Java idioms • Design Patterns • Architecture • Real world applications using SGT NVODS/DODS Technical Workshop
Outline • Demos and Examples (applet demo) • Technical Issues • Design philosophy & Goals • Using standard Java idioms • Design Patterns • Architecture • Real world applications using SGT NVODS/DODS Technical Workshop
TAOMap • Plot built from basic sgt components • Uses ValueIcon, which implements Draggable • Uses a Point Key, which implementsMoveable andSelectable http://www.epic.noaa.gov/java/sgt/sgt_demos.shtml NVODS/DODS Technical Workshop
JRealTimeDemo • Built from basic sgt components. • Data class uses PropertyChangeEvents to notify sgt. • Sgt then updates plot. NVODS/DODS Technical Workshop
JVectorDemo • Uses JPlotLayoutwhich provides: • Zoom • LayerChildselection • Vector head style is HEAD, where vector head is unscaled. http://www.epic.noaa.gov/java/sgt/sgt_demos.shtml NVODS/DODS Technical Workshop
JGridDemo • Uses JPlotLayoutwhich provides: • Zoom • LayerChildselection • GridAttributeis initially set to RASTER_CONTOUR style. http://www.epic.noaa.gov/java/sgt/sgt_demos.shtml NVODS/DODS Technical Workshop
Outline • Demos and Examples • Technical Issues • Design philosophy & Goals • Using standard Java idioms • Design Patterns • Architecture • Real world applications using SGT NVODS/DODS Technical Workshop
Design Philosophy & Goals • Don’t provide too much functionality in the toolkit • Require developer to disambiguate zoom request (which layer) • Use interfaces for data model specification • Hide as much of the internal machinery as possible • Provide utility classes to support developer • Dialogs to set/edit graphics properties • Plot layout class to support simple graphics • Basic implementations of data model interfaces • Keep toolkit flexible and extensible • GIS style layer approach • Support several display types • Time series/Time axes • X-Y plot • 2-D contour and “pixel” plots • Vector plot • Point-Value plot NVODS/DODS Technical Workshop
Using standard Java idioms(don’t reinvent the wheel) • Basic graphics toolkits • AWT support (now being deprecated) • Pane is a container • Printing • Swing support • Scrolling • Printing • Repaint (refresh) • Minimum, maximum, and preferred size • JPane is a container • JavaBeans idiom • Use set/get for parameters • Use add/remove for event listeners • Use set/is for boolean parameters NVODS/DODS Technical Workshop
Don’t reinvent the wheel (cont…) • Events • Mouse events • Trapped by SGT • Object selection • Object move/drag operations • Zoom rectangle handling • Passed on by SGT • All others… • SGT internal events (not really events!) • Add/remove SGT components • Modify component appearance (eg. Label, axis) • Property change events • When a property changes value (eg. LineAttribute) • When a value changes in a data object • When the range of a data object changes NVODS/DODS Technical Workshop
Design Patterns • Strategy. Define a family of algorithms, encapsulate each one, and make them interchangeable. • Transform, TimeAxisStyle, CartesianRenderer • Proxy. Provide a surrogate or placeholder for another object to control access to it. • Pane, JPane • Abstract Factory. Provide an interface for creating families of related or dependent objects without specifying their concrete classes. • CartesianRenderer, GridCartesianRenderer, LineCartesianRenderer, VectorCartesianRenderer, PointCartesianRenderer NVODS/DODS Technical Workshop
More Design Patterns • Interface. Keep a class that uses data and services provided by instances of other classes independent of those classes by having it access those instances through an interface. • SGTData, SGTGrid, SGTLine, etc • IndexedColor, TransformColor, TransformAccess • LayerChild, Moveable, Selectable, Draggable • Façade. Provide a unified interface to a set of interfaces in a subsystem. • JPlotLayout NVODS/DODS Technical Workshop
Outline • Demos and Examples • Technical Issues • Design philosophy & Goals • Using standard Java idioms • Design Patterns • Architecture • Real world applications using SGT NVODS/DODS Technical Workshop
Core Architecture • Three coordinate systems • Device – lowest level in pixels • Physical – lower-left origin • User – user defined • Three main components • Pane/JPane – extends Container/JLayeredPane • Layer – physical units, used to build plot • Graph – user units, axes, renders data (presently only CartesianGraph is implemented) NVODS/DODS Technical Workshop
Core structure NVODS/DODS Technical Workshop
Layers • Contain a single Graph object and many LayerChild objects. • Many Layers can be associated with a single Pane • Layers can share AxisTransforms via their CartesianGraph objects • LayerChild objects use physical coordinates NVODS/DODS Technical Workshop
Rendering data • A CartesianGraph object aggregates: • Zero or more X or Y axes • A renderer appropriate for the data type and attribute (e.g., PointCartesianRenderer, LineCartesianRenderer, or GridCartesianRenderer) • One X AxisTransform • One Y AxisTransform • AxisTransforms provide a user to physical coordinate transformation for space or time NVODS/DODS Technical Workshop
Space and Time Axes • SpaceAxis provides a visual scale for the spatial user to physical coordinate transform • TimeAxis creates a visual scale for the GeoDate to physical coordinate transform • TimeAxis has several “styles” that can be used depending on the temporal span • Minute-Hour • Hour-Day • Day-Month • Month-Year • Year-Decade NVODS/DODS Technical Workshop
Sgt Data Model • Data model needs to • Support X-Y, contour, raster, vector, and point plots • Be compact and “light-weight” • Throw events to notify applications of data and/or range changes. • Accomplished the above by • Supporting “plottable” objects • One- and two-dimensional arrays • Coordinate information • Units and titles • Data model implemented using java interfaces NVODS/DODS Technical Workshop
Mouse Events • Mouse events are pre-processed by Pane • Events passed to the user are • Object selection • Zoom rectangle selected • PropertyChangeEvents thrown are • objectSelected • zoomRectangle • Events processed by sgt are • Object move • Object drag NVODS/DODS Technical Workshop
Outline • Demos and Examples • Technical Issues • Design philosophy & Goals • Using standard Java idioms • Design Patterns • Architecture • Real world applications using SGT NVODS/DODS Technical Workshop
ncBrowse • ncBrowse was developed to browse netCDF files. • Uses JPlotLayout which provides: • Zoom • LayerChild selection http://www.epic.noaa.gov/java/ncBrowse NVODS/DODS Technical Workshop
Climate Data Portal Client • Client developed to plot data from distributed data servers. • Data from multiple servers can be combined on a single plot. • Uses JPlotLayout • Line Plots • Area Plots http://www.epic.noaa.gov/cdp/ NVODS/DODS Technical Workshop
OceanShare • OceanShare provides • Collaborative work environment • Local and network access of data sets • Access to Habanero tools (whiteboard, chat, etc.) • Implemented using LineProfileLayout • Line style (highlight, mark, or solid) • Line color • Interactive zoom • UserIcon and ValueIcon(implements LayerChild interface) http://www.epic.noaa.gov/collab/ NVODS/DODS Technical Workshop
What next? • Finish GridAttributeDialog. (enables GridAttribute, contour, and ColorMap editing.) • Next version (2.2) will • use Java2D to provide native support of physical to device coordinate transformation • Remove deprecated classes and drop jdk1.1 support NVODS/DODS Technical Workshop
Real World Applications using SGT • SGT – Java graphics toolkit • A Tutorial of the Scientific Graphics Toolkit, NOAATech 2002. • “Interactive Graphics Toolkit for Java Applications and Web Applets”, American Meteorological Society paper, January 2001. • SGT home page. • ncBrowse – netCDF file browser • ncBrowse home page. • OceanShare – collaborative tool for distributed in-situ data “OceanShare: Interactive Access to Distributed In Situ Data in a Collaborative Tool Environment”, American Meteorological Society paper, January 2000. • GOIN 99 Presentation. • Climate Data Portal – distributed in-situ data access • Climate Data Portal home page. NVODS/DODS Technical Workshop