OpenMap 4.5 is coming this week!

From: Don Dietrick <dietrick@bbn.com>
Date: Tue May 28 2002 - 18:30:37 EDT

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