Hi everybody,
Sorry for the delays in getting the next release out, we're just trying
to get it right. We're planning on release OpenMap 4.5 within the next
couple of days.
The new ChangeLog entries for 4.5 that mark it different than 4.4.2:
*****
Fixed that annoying NullPointerException in the
com.bbn.openmap.layer.shape.ShapeLayer.renderDataForProjection()
method.
*****
Overhauled the com.bbn.openmap.omGraphics package. The changes
are extensive, but the use of OMGraphics is backward compatible.
The biggest change is that internally, OMGraphics represent
themselves as java.awt.Shape objects (actually, GeneralPaths)
after they are projected/generated. After generation, the Shape
object can be retrieved by OMGraphic.getShape(). The Java Shape
interface provides different spatial operations you can perform on
other shapes - contains, intersects, getBounds.
The first new thing to notice is the
com.bbn.openmap.omGraphics.OMGeometry interface, which is a basic
interface describing renderable shapes. The most basic
implementation of this interface is the abstract class
com.bbn.openmap.omGraphics.geom.BasicGeometry, which contains the
code that manages Shape creation. OMGraphic now extends
BasicGeometry, adding DrawingAttributes information to describe
how the Shape should be rendered (linePaint, fillPaint, Stroke).
There is now an OMGeometryList, which extends OMGraphicList. The
difference between them is that OMGeometryList contains OMGeometry
objects, and when an OMGeometryList is generated, all of the
OMGeometry objects contribute to a single Shape object (disjointed
or not), with the DrawingAttributes of the OMGeometryList
dictating how the Shape is drawn. The
com.bbn.openmap.omGraphics.geom package contains these OMGeometry
objects, of which there are two currently implemented -
PolygonGeometry and PolylineGeometry. When rendering an list of
graphics that share the same color and stroke types, using an
OMGeometryList with a single Shape obejct is faster than using an
OMGraphicList with separate OMGraphics.
Some other omGraphic package improvements:
- Moved the OMArrowHead calculations from OMLine to OMArrowHead.
- Removed dependency on java.awt.Toolkit from OMBitmap and
OMRaster in favor of BufferedImage.
To add control over managing OMGraphics, the OMGraphicHandler
interface was created. This interface defines methods to interact
with a component that has OMGraphics, including spatial
filtering. The FilterSupport object helps objects implement this
interface. The abstract classes OMGraphicHandlerLayer and
OMGraphicHandlerPlugIn are OMGraphicHandlers that use FilterSupport.
Layers that implement the OMGraphicHandler interface -
GraticuleLayer, DemoLayer, DrawingToolLayer, ShapeLayer.
Other layer improvements that take advantage of the OMGeometry
changes:
- ShapeLayer2.java - A shape layer that uses the new OMGeometry
objects. BufferedShapeLayer uses the new OMGeometryList. The
com.bbn.openmap.layer.shape.EsriRecord components handle
OMGeometryLists and OMGeometry graphics.
- The com.bbn.openmap.layer.shape.areas.AreaHandler groups all
like areas together in a OMGeometryList.
As a side note, OMRaster and OMBitmap create rectangles outlining
their shape. OMGrid hasn't been modified to do anything in
particular with it's Shape object pointer.
*****
Created a com.bbn.openmap.dataAccess package, which is intended
to hold components that access particular data types. As an
example, the com.bbn.openmap.plugin.esri components that were
responsible for directly reading and writing shape files, were
moved to com.bbn.openmap.dataAccess.shape. The rpf, dted, mif,
etopo, and other data components will follow. Note that the
EsriPlugIn and EsriLayer classes in the
com.bbn.openmap.plugin.esri package still exist.
*****
Incorporated a submission by Karl Stuempfle and Lonnie Goad
working for OptiMetrics, Inc. that provides a way to take an
OMGraphicList and export it to a (or up to three) Shape files.
The class that does this is
com.bbn.openmap.dataAccess.shape.EsriShapeExport. If a dbf file
isn't specified in the OMGraphicList.AppObject(), one will be
created for each .shp file, and it will contain the rendering
attributes for the OMGraphics. The
com.bbn.openmap.plugin.esri.EsriPlugIn reads the dbf file and
looks for these attributes in it. If they are there, they are
used, otherwise the default settings are used to render the shape
graphics.
The DbfTableModel was modified, and augmented with the
MetaDbfTableModel, to allow direct editing and modification of the
Dbf files.
The DrawingToolLayer was modified to use the EsriShapeExport class
to export its graphics when a button is clicked on its palette.
*****
Added the com.bbn.openmap.tools.j3d package, which contains
components for creating a Java 3D scene, and creating and
controlling a viewer for that scene. This package requires that
the Java 3D extension package
(http://java.sun.com/products/java-media/3D/index.html) in order
to compile and run.
There are some basic components to this package:
- The OM3DManager is the abstract object that creates a 3D scene
and loads it with objects. The MapContentManager is a basic
manager that creates a view window that is controlled by the arrow
keys. The ControlledManager creates a view window that is
controlled by an outside component, and the
com.bbn.openmap.plugin.pilot.PilotPath is an example of an object
that controls it.
- The OMKeyBehavior class is a behavior class that controls
movement of the camera over the scene.
- The MapContent class controls how components are added to the
scene. Map objects are added to the scene in different ways,
check the javadocs for more information.
There is still work to do in this package. Give feedback, money
or code and guide where it goes.
*****
Added the com.bbn.openmap.plugin.pilot package, which is
a demo package to show how to use the j3D package. The user can
add paths for a 'pilot' to follow, and then create a view into a
3D scene that changes as the 'pilot' moves over the map.
*****
New OpenMap .NET XML Web Services code has been written and included
in the openmap/iis directory. A demo of this code, which is a
html OpenMap client, will be set up at http://www.openmap.net (get
it?) eventually, but a link from the main OpenMap web page will
direct you to it as well.
There are two directories in the OpenMap.net project:
ImageWebService and OpenMapWeb.
ImageWebService contains the .NET XML Web Services. There are
three of them: ProperService.asmx, GetMapService.asmx, and
TimerService.asmx.
- ProperService is responsible for starting and killing Java Image
servers, updating user sessions, keeping information about layers
used.
- GetMapService service has three methods: GetMapImage,
RecenterMap, PanMap. It uses ProperService to start Java processes
as needed.
- TimerService is a utility that will call CleanServerProcs()
method in ProperService every certain number of minutes to check
whether it's time to kill some java servers.
The <appSettings> section in web.config file in ImageWebService
folder is used to configure web services to point to the Java
OpenMap installation and openmap.properties file.
The OpenMapWeb folder contains two ASP.NET files: WebMap.aspx and
MapImage.aspx.
- WebMap.aspx is the user interface to the project.
- MapImage.aspx is used to contact a web service to get raw image
data.
To support this service, additional functionality was added to the
ImageServer class:
- the PAN, AZIMUTH, X and Y arguments were added to the parsable
argument list, allowing the client to send the server panning and
centering commands (based on the current image projection).
- if the 'layers' property is not defined for the ImageServer
(including the MapRequestHandler) to use to configure the default
layers, then the 'openmap.layers' property will be used to create
the layers available to the ImageServer, and the
'openmap.startUpLayers' property will define the default layer list.
*****
Modified the build files and the build.xml ant file so that
source files that require other software packages will not be
included in the general build, but can be built with modifications
to some settings. There are three main groups of addition code
that are controlled this way:
- the Java 3D components in the com.bbn.openmap.tools.j3d package,
which depend on the Java 3D package from Sun.
- the SVGFormatter in the com.bbn.openmap.image package, which depends
on Batik, see entry below regarding SVG creation.
- the CORBA components in com.bbn.openmap.layer.rpf.corba (existed),
com.bbn.openmap.layer.specialist (new) and
com.bbn.openmap.plugin.corbaImage (new) packages, which are all
configured to compile and run with the Visibroker CORBA
implementation. The are based on the BOA model, so if anyone
wants to translate that to POA and updated them to work with the
CORBA classes in the Java distributions, please do.
*****
SVG creation is now supported. Added the SVGFormatter class to
the image package, created from code contributed by Sebastien
Prud'homme. This class requires the installation of the Batik
package (http://xml.apache.org) to compile and use. If the Batik
classes are found at runtime, the SVG option is added to the File
-> Save As menu.
*****
Added the com.bbn.openmap.layer.specialist package. This
package has actually been around since OpenMap started. It's a
client-server package that transfers OMGraphic-like objects.
Doesn't transfer OMGrids or OMPoints graphics. There are
implemenations of servers for DTED, Shape and VPF data. All use
the CSpecLayer for the client. The Specialist.idl file needs to
be compiled (idl2java) to create the com.bbn.openmap.CSpecialist
package, which gets compiled and put into the cspec58.jar file.
All of the other classes get put into the specialist.jar file. To
used this package, these jars, along with the Visibroker jar
files, need to be added to the classpath using the -Xbootclasspath
java flag. The rt.jar java runtime jar needs to be added to the
bootclasspath as well, but after the Visibroker jars.
*****
Added the com.bbn.openmap.plugin.corbaImage package, which is a
corba-based version of the SHISPlugIn/SimpleHttpImageServer
client-server setup. The package has a corba-based server that
creates image objects sent to the client plugin.
*****
The Corba RPF package has been improved. The server now has
settings for the maximum number of caches to use, and a timer that
cleans them up after a certain amount of time.
*****
Modified the examples (com.bbn.openmap.examples packages) to
show how to use the MapHandler for even simple applications.
Moved the examples away from connecting components manually.
*****
Added the OMScalingRaster, created from a contribution from
Adrian Lumsden (and as I understand, with help from Steve
McDonald). It's an extension to the OMRaster object that takes an
upper left and lower right coordinate, and automatically scales
its source image according to the projection in generate(). It
does *not* warp the image to match the projection, it just does
straight scaling. Turns out, this is pretty fast.
Because of this class, the
com.bbn.openmap.plugin.CSVTiledImagePlugin was created to use
them. It uses a CSV file to list coverage coordinates and URLs of
images. This PlugIn does not do any real management of the images
other than to load them and use them - it doesn't drop images that
aren't used on the map, etc. Those are saved as improvements for
later.
Also, the RpfLayer code (RpfSubframe) now uses the OMScalingRaster
for the Rpf subframe tiles.
*****
Added some new functionality to the com.bbn.openmap.layer.shape
package. Created the MultiShapeLayer, which can display one or
more shape files. The palette for this layer provides controls
for adding buffering and rendering behaviors. The AreaHandler in
the com.bbn.openmap.layer.shape.areas now also uses dbf files, in
addition to csv files.
*****
AppletDataNugget has been deprecated, it's not needed anymore.
BinaryFile has been fixed to be able to find files in jar files
from an applet as expected.
*****
Modified the Layer parent class, adding a Projection variable
for all subclasses to use. Accessor methods that take projection
events and projections to get to the projection variable were also
added. Added Layer.projectionChanged() method that sets this
projection variable. Most layer subclasses will probably have
their own version of the projectionChanged() method, so it can be
called if desired. The OpenMap layers that used to save a copy of
the projection have been updated to use the new method and the
Layer.projection variable.
*****
Added the Quantize.java class, written by Adam Doppelt, to the
contrib/doppelt directory. The Acme GIF creation code has been
modified to use Quanitize if the image being encoded has more than
255 colors. Because of this improvement, the GIF option has been
added to the File -> Save As menu.
*****
Added the com.bbn.openmap.plugin.graphicLoader package, which is
a demo package to show how to use the LOS code in the
com.bbn.openmap.tools.terrain package. The user can add points
over the map, some stationary, some wandering, some following a
path, and the components figure out if they can see each other,
drawing a dynamic network on the map.
*****
Fixed a bug in the SoloMapComponentReplacePolicy where the
replaced SoloMapComponent wasn't actually removed before being
replaced.
*****
Fixed a bug in LayerHandler where hasLayer() only checked the
first layer, instead if iterating through all of them.
*****
Updated the Link package so that OMBitmap, OMCircle, OMGrid,
OMLine, OMPoint, OMRect, OMRaster, OMText and OMPoly objects are
able to be written to the link via the LinkGraphic.write() method.
*****
OMDrawingTool now makes distinction between new graphics and
updated graphics when it notifies the DrawingToolRequestor. The
OMGraphicList properly handles the OMAction that reflects these
changes, adding updated graphics it doesn't currently have, adding
new graphics, and doing nothing for updated graphics it has.
*****
ProjectionStack now picks up changes to Background color changes
to the MapBean.
*****
Added a MouseModeButtonPanel to the gui package. This can be
used instead of the MouseModePanel (option menu). Right now, the
buttons display the MouseModeID text. If the <id>.gif file is
found as a resource, that image would be used on the button
instead. We haven't designed images yet.
*****
Misc changes:
- EarthquakeLayer default sites updated.
- Fixed layout of CoordPanel and DMSCoordPanel.
- Environment class adjusted so that for the Windows platform, the
XWindowsWorkaround for improved clipping performance is enabled.
- The Environment was also changed to handle internal windows
better. It now containes a JLayeredPane to use as a desktop. All
OpenMap components that consider using internal windows have been
updated to use the new setup.
- The DMSLatLonPoint has been updated to use floats for its
internal seconds representation, for better precision.
- app/RouteLayer was removed, it was redundant.
- Projections now use/return ArrayLists instead of Vectors.
*****
Numerous changes to VPF layer code to make it more robust. A
few minor performance improvements. Some initial code to handle
"node" features - this code is not yet complete.
Cheers!
Don
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Don Dietrick, BBN Technologies, dietrick@bbn.com
10 Moulton Street, Cambridge, MA 02138
617-873-3031 [fax]-2794
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-- [To unsubscribe to this list send an email to "majdart@bbn.com" with the following text in the BODY of the message "unsubscribe openmap-users"]Received on Tue May 28 18:34:07 2002
This archive was generated by hypermail 2.1.8 : Thu May 12 2005 - 07:18:33 EDT