MilSym provides C# WPF & Silverlight 4.0, XAML-based, Bing & Esri map symbology for units, equipment, installations, tactical graphics, weather, oceanography, signals intelligence, stability ops, & emergency management. Implements MIL-STD 2525C appendices A, B, C, D, E, and G.
Figure 1 Sample output from BingMapTest shows single-point symbols in bounding boxes
The base of each bounding box remains located at the specified point as the map zooms and the symbol resizes.
Figure 1a Sample output from EsriMapTest shows multi-point symbols running in Esri Silverlight map with Bing background
Figure 1b Sample output from BingMapTest shows multi-point symbols running in Bing Silverlight map
The code is written in C# for WPF .NET 4.0 and Silverlight 4.0 and consists primarily of XAML files with some support code. This code drop covers all of the MIL-STD 2525C single point symbol collection. The WPF work is very new. Thus far, only the GraphicsTest program and the associated Resource Dictionaries (that exercise all single point symbology) have been ported to WPF.
The ESRI map work is even newer. Initial ports to Silverlight and WPF are complete. There are some abstractions to preserve a common code base with Bing maps - ILocation, ILocationCollection, ILocationRect, and IMilSymLayer. A single factory with support for these types is injected - this may change in the future.
The ESRI map work is limited to WKIDs 102113 and 102100. Otherwise the generated tactical graphics don't register properly witth their underlying vector definitions. For example, WKID 4326 compresses the latitude coordinate differently than WKID 102113. Support for other coordinate systems would require some abstraction of the coordinate mapping. The current technique of using ScaleTransform to properly size the results also limits potential coordinate mappings.
Multi-point symbology work is in progress. The latest drop includes some work on two-, three- and multi-point symbols (arrows, zones, lines) from Appendix B. The continuing effort will be on Appendix B's multi-point items, then Appendix C's multi-point items, then interactivity. Other potential efforts include dynamic loading of resources to reduce memory footprint.
For reference, the official symbology appendices are:
| Appendix || Description || Status|
| A || C2 Symbology for Units, Equipment, and Installations || Complete|
| B || C2 Symbology for Military Operations || Point symbology and some multi-point symbology|
| C || Meteorological and Oceanographic Symbology || Point symbology only|
| D || Signals Intelligence Symbology || Complete|
| E || Stability Operations Symbology || Complete|
| F || Use of Warfighting Symbols in Pseudo-Three-Dimensional Displays || Not applicable |
| G || Emergency Management Symbols || Complete|
Appendices A, B, and D cover symbology that has primary applicability to military operations.
The symbols in appendices C, E, and G have broader applicability.
Appendix F simply describes different ways to use or display symbols in a 2.5D or 3D display. In the case of Silverlight, adding a skew transformation to a symbol for a 2.5D display is straightforward. Only the scale and rotate transforms are exposed in the MilSymbol interface for this release. The MapTest application, as shown in Figure 1, demonstrates the use of a translate transform.
For those interested in symbology in general, the APP-6A Wikipedia article
is a good introduction to the military symbology defined by MIL-STD 2525C
The workhorse of this application is a ResourceDictionary of ControlTemplates (subject to future optimization) representing base symbols. A symbol code specifies a control template that is then rendered using either default or user-specified brushes for fills and outlines. The resulting symbol is then overlaid with label, echelon, mobility and other symbol decoration. The result is returned as a MilSymbol object whose base class is Canvas. The interesting symbology parameters are exposed as dependency properties.
This latest release includes content bounds for many single-point symbols to support their precise placement on the map.
Additional information is available under Documentation. The source code is not yet "released" but the solution builds and displays all of the available symbology via the GraphicsTest project.
Figure 2 Sample output from Appendix G as displayed by the GraphicsTest project
Figure 3 Sample output from PivotTest after PAuthor is used on generated CXML file