Scientific Graphics Toolkit Donald Denbo UW-JISAO/NOAA-PMEL The

Download Report

Transcript Scientific Graphics Toolkit Donald Denbo UW-JISAO/NOAA-PMEL The

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.
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).
January 11, 2002
NVODS/DODS Technical Workshop
2
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
January 11, 2002
NVODS/DODS Technical Workshop
3
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.
January 11, 2002
NVODS/DODS Technical Workshop
4
Outline
Demos and Examples
Technical Issues



Design philosophy & Goals
Using standard Java idioms
Design Patterns
Architecture
Real world applications using SGT
January 11, 2002
NVODS/DODS Technical Workshop
5
Outline
Demos and Examples
Technical Issues



(applet demo)
Design philosophy & Goals
Using standard Java idioms
Design Patterns
Architecture
Real world applications using SGT
January 11, 2002
NVODS/DODS Technical Workshop
6
TAOMap
Plot built from basic
sgt components
Uses ValueIcon,
which implements
Draggable
Uses a Point Key,
which implements
Moveable and
Selectable
http://www.epic.noaa.gov/java/sgt/sgt_demos.shtml
January 11, 2002
NVODS/DODS Technical Workshop
7
JRealTimeDemo
Built from basic sgt
components.
Data class uses
PropertyChangeEven
ts to notify sgt.
Sgt then updates
plot.
January 11, 2002
NVODS/DODS Technical Workshop
8
JVectorDemo
Uses JPlotLayout
which provides:


Zoom
LayerChild
selection
Vector head style
is HEAD, where
vector head is
unscaled.
http://www.epic.noaa.gov/java/sgt/sgt_demos.shtml
January 11, 2002
NVODS/DODS Technical Workshop
9
JGridDemo
Uses JPlotLayout which
provides:


Zoom
LayerChild selection
GridAttribute is initially
set to
RASTER_CONTOUR
style.
http://www.epic.noaa.gov/java/sgt/sgt_demos.shtml
January 11, 2002
NVODS/DODS Technical Workshop
10
Outline
Demos and Examples
Technical Issues



Design philosophy & Goals
Using standard Java idioms
Design Patterns
Architecture
Real world applications using SGT
January 11, 2002
NVODS/DODS Technical Workshop
11
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
January 11, 2002
NVODS/DODS Technical Workshop
12
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
January 11, 2002
NVODS/DODS Technical Workshop
13
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
January 11, 2002
NVODS/DODS Technical Workshop
14
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
January 11, 2002
NVODS/DODS Technical Workshop
15
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
January 11, 2002
NVODS/DODS Technical Workshop
16
Outline
Demos and Examples
Technical Issues



Design philosophy & Goals
Using standard Java idioms
Design Patterns
Architecture
Real world applications using SGT
January 11, 2002
NVODS/DODS Technical Workshop
17
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)
January 11, 2002
NVODS/DODS Technical Workshop
18
Core structure
P
ane
Abstract
P
ane
JP
ane
D
evice
January 11, 2002
T
ransform
L
ayer
1
L
ayer
Children
Graph
Renderer
Axes
P
hysical
NVODS/DODS Technical Workshop
U
ser
19
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
January 11, 2002
NVODS/DODS Technical Workshop
20
Layer Children
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
January 11, 2002
NVODS/DODS Technical Workshop
22
Graph and Renderers
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
January 11, 2002
NVODS/DODS Technical Workshop
24
Axes and AxisStyles
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
January 11, 2002
NVODS/DODS Technical Workshop
26
Sgt Data Model
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
January 11, 2002
NVODS/DODS Technical Workshop
28
Outline
Demos and Examples
Technical Issues



Design philosophy & Goals
Using standard Java idioms
Design Patterns
Architecture
Real world applications using SGT
January 11, 2002
NVODS/DODS Technical Workshop
29
ncBrowse
ncBrowse was
developed to browse
netCDF files.
Uses JPlotLayout which
provides:


Zoom
LayerChild selection
http://www.epic.noaa.gov/java/ncBrowse
January 11, 2002
NVODS/DODS Technical Workshop
30
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/
January 11, 2002
NVODS/DODS Technical Workshop
31
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/
January 11, 2002
NVODS/DODS Technical Workshop
32
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
January 11, 2002
NVODS/DODS Technical Workshop
33
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.
January 11, 2002
NVODS/DODS Technical Workshop
34