Overall Package Structure.
The GISToolkit is condensed into eight main
packages. Each package is responsable for a particular area of
The Features package contains the basic building block features of
the GIS. These are the features such as Point, MultiPoint,
LineString, MultiLineString, Polygon, and MultiPolygon. There is
also a RasterShape for displaying images. There are a couple of
sub packages of Features that are used for manipulating the features.
This pacakge contains all of the non feature classes that are used
for the operation of the system. The only class contained in
common at the moment is the "Node" class. This class is used to
save configuration information from all layers of the toolkit, and is
used by the application to generate configuration files using the
Config is used to convert the "Node" information into configuration
information. It reads and writes to an XML file at the moment,
but configuration information could presumably be stored in any
persistent storage that supports trees of named value pairs.
Projections are used in several layers of the toolkit. This
is mostly for performance reasons, and to enable the support of
database level projection features. There are two levels of
projection, the projection the map uses, and the projection the data
resides within. This allows the toolkit to display data in a
dynamic projection, while reading data in a static projection. A
common use of this functionality is the storing of imagery in a UTM
projection, but displaying it in a Connic Conformal Projection.
Most common projections are cuurently supported, and adding more can be
done fairly easilly.
Data can be read from a variety of data sources. Each data
source has it's own package, with the generic base classes and
interfaces residing in the root. Datasources include ESRI
shapefile, ARCSDE, IBM DB2, Image, PostGIS, memory (kind of a scratch
data source), seamless, terraserver, and webservice. It is
expected that more datasources will be added in the future. The
AGCSDE and ARCIMS datasources are kept in a separate package under
proprietary, because they statically links to a priprietary ESRI jar
file, these packages are "proprietary.datasources.arcsde" and
All Elements associated with displaying geographic objects are
stored in the display class. The basic element is the GISDisplay
which is a swing widget for embedding GIS functionality into swing
GUIs. The basic building block of the display package is the
Layer object. Each layer object is responsible for drawing it's
data on to the graphics context it is sent. Assisting it is a
Converter object which is responsible for converting pixel screen
coordinates to World coordinates and back. Each layer has a
single data source, and contains the Style object which tells actually
renders the data.
Style objects contain multiple Labelers and Renderers but only a single
Shader. The Renderers determine how the features should be drawn,
the Labelers determine how the labels should be drawn, and the Shader
provids the colors, patterns, and other information required by the
Labelers and Shaders for them to render the objects.
Drawmodels are used bye the GISDisplay to add behavior. They
determine what happens when a user clicks on a map, drags a map,
etc. They provide the select tools, and add highlight information
to the map. Mostly they react to mouse movement on the map.
Shapeeditors are gui classes that can be used to modify a shape.
They allow the user to type in exact coordinates to a shape, as well as
modify shape contents from a tabular point of view, instead of a
In addition, there is a scale bar that allows the user interface to
represent distances on the map, and some commonly used gui widgets that
may help in generating an application with this toolkit.
The application package contains the classes that are used to
create the GISToolkitEditor. This package has become rather
large, and uses every other part of the GISToolkit, except for the
Server. It serves as an example of how an applicaiton could
be created using this toolkit.
These are the classes that are used to create the
WebMapService. They are an example of how this toolkit can be
used to create a server side application that generates maps for a
The UML documentation for the GISToolkit can be found in CVS as a
Poseidon document UML.zora.