Skip to content

Joint Military Symbology Markup Language is a data encapsulation of MIL-STD-2525D and APP-6(C).

License

Notifications You must be signed in to change notification settings

lfunkhouser/joint-military-symbology-xml

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

joint-military-symbology-xml

Joint Military Symbology XML (JointMilSyML or JMSML) is an XML schema, and associated instance data, designed to definitively document the contents of MIL-STD 2525D and NATO STANAG APP-6(C).

The purpose of defining this schema and populating its associated instance data is four-fold:

  • To aid in the configuration management (CM) of these standards.
  • To provide implementors with a machine-readable form of the contents of these standards.
  • To help support legacy military symbology systems by providing bi-directional lookup of SIDCs.
  • To aid in migrating old military symbology information to the latest version of these standards.

In providing this schema, files of instance data, and sample C# code to navigate same, it is hoped that future defense and intelligence systems will be engineered to take advantage of this technology and, in so doing, accelerate the delivery of new military symbology, reflected in updates to these standards, to warfighters.

Image of Joint Military Symbology XML

Features

  • Schema (xsd) files for:

    • Commonly used types.
    • The base portion (part one) of a military symbol ID code (SIDC).
    • The symbol set portion (part two) of a military symbol ID code (SIDC).
  • Instance (xml) files for:

    • The base portion of the two standards.
    • Each symbol set, including all legacy symbols from 2525C and APP-6(B). This includes:
      • Air symbols
      • Air Missile symbols
      • Space symbols
      • Space Missile symbols
      • Sea Surface symbols
  • A .Net (C#) solution that contains projects with all the code to:

    • Define all the classes needed to import the XML instance data.
    • Navigate the aforementioned classes to perform the following functions:
      • Convert from old style 15-character SIDC to new style 20-digit SIDC.
      • Convert from new style 20-digit SIDC to new style 15-character SIDC.
    • Test the above functions.

Sections

Requirements

  • A text editor of your choice for viewing and/or editing the XML files found under the instance or schema folders.
  • To build the .NET Solution source in source\JointMilitarySymbologyLibraryCS you will also need:
    • Visual Studio 2010 or later.
    • NLog (see below)
    • If you do not require the C# library, you may skip this requirement.

Instructions

General Help

New to Github? Get started here.

Getting Started with the solution

  • Open and build the Visual Studio Solution at joint-military-symbology-xml\source\JointMilitarySymbologyLibraryCS
    • To use MSBuild to build the solution
      • Open a Visual Studio Command Prompt: Start Menu | Microsoft Visual Studio 2010/2012 | Visual Studio Tools | Developer Command Prompt for VS 2010/2012
      • cd joint-military-symbology-xml\source\JointMilitarySymbologyLibraryCS
      • msbuild JointMilitarySymbologyLibrary.sln /property:Configuration=Release
        • NOTE: if you recieve an error message: 'msbuild' is not recognized
        • You may need to add the path the .NET Framework SDK (if multiple SDKs are installed)
        • E.g. set path=%path%;C:\Windows\Microsoft.NET\Framework\v4.0.30319
  • Use the UnitTests project and the Visual Studio Test tools to run the unit tests provided. These will test various aspects of the source used to navigate the XML data and convert symbol ID codes (SIDC) from one military symbology standard to another.
  • To run the unit tests from a command line:
    • Open a Visual Studio Command Prompt: Start Menu | Microsoft Visual Studio 2010/2012 | Visual Studio Tools | Developer Command Prompt for VS 2010/2012
      • cd joint-military-symbology-xml\source\JointMilitarySymbologyLibraryCS
      • MSTest /testmetadata:JointMilitarySymbologyLibrary.vsmdi /testlist:"JMSML Tests"
  • Run the Test project to see a form appear, which you can use to manually test the SIDC conversion.
    • Select from either of the two lists of symbols (2525C or 2525D) and the application will use the underlying C# library to convert the selected symbol ID code (SIDC) from one standard to the other.
    • Note that not all symbols are currently supported and not all possible 2525D codes will convert to 2525C codes, or vice versa.
      • Because of the component construction nature of 2525D, there are many more symbol ID combinations possible in 2525D, combinations that don't convert to 2525C.
  • DISA provides graphic files (svg/png) for the individual parts of MIL-STD 2525. The JMSML schema supports referencing those files and the included C# library contains functionality that can be used to combine those referenced files into a complete image.
    • To utilize this functionality you will need to acquire these graphic files from DISA's Symbology Standards Management Committee (SSMC), place them in a folder, and amend the graphicPath line in the jmsml.config file to point to this folder. Contact disa.meade.EE.mbx.symbology@mail.mil to learn more about the current availability and use of these graphic files.

NLog

NLog is a free logging platform for .NET, Silverlight, and Windows Phone with rich log routing and management capabilities. It makes it easy to produce and manage high-quality logs for your application regardless of its size or complexity.

Support for NLog is available via the NLog-Users group.

NLog is an open source project hosted on GitHub and its source code is available under the terms of a BSD license.

Binary packages are available via NuGet. The binary for NLog 2.1.0 is provided in the source/Dependencies folder.

If you're interested in joining NLog development efforts, go to the NLog-Development group.

Visit http://nlog-project.org/ for more information.

Diagnostics

Before you use a Librarian object to manufacture a Symbol, you can enable logging using the Librarian.IsLogging property. When you use Librarian.MakeSymbol, detailed diagnostics will be written to a log file found under My Documents/jmsml/logs. The negative status code illustrated in parentheses in these log files indicates any issues encountered in creating a symbol. It is a binary coded value, with each bit set if the following is determined for the desired SIDC (and used to summarize this information in the log):

  • Bit 1 = "Version Not Found"
  • Bit 2 = "Context Not Found"
  • Bit 3 = "Dimension Not Found"
  • Bit 4 = "Standard Identity Not Found"
  • Bit 5 = "Symbol Set Not Found"
  • Bit 6 = "Status Not Found"
  • Bit 7 = "HQ/TF/Dummy Not Found"
  • Bit 8 = "Amplifier Group Not Found"
  • Bit 9 = "Amplifier Not Found"
  • Bit 10 = "Affiliation Not Found"
  • Bit 11 = "Context Amplifier Not Found"
  • Bit 12 = "Entity Not Found"
  • Bit 13 = "Entity Type Not Found"
  • Bit 14 = "Entity SubType Not Found"
  • Bit 15 = "Modifier One Not Found"
  • Bit 16 = "Modifier Two Not Found"
  • Bit 17 = "Legacy Symbol Not Found"

Bits 1 to 12 directly indicate whether the desired SIDC is valid or not, and can be examined programmatically, using Librarian.StatusCode. If bits 1 to 12 are all clear (zero) then bit 17 indicates the status of older 2525C symbols (whether they are retired of not). The value of bits 13 to 16 do not necessarily indicate an issue with a given SIDC, but may be used to troubleshoot if a situation occurs where a given SIDC is not producing the results expected.

The status of a given symbol can be summarized by examining its SymbolStatus property. Values for this property are:

  • statusEnumNew = The SIDC used to create this symbol indicates a new symbol in the version of 2525/APP-6 represented by the Librarian object.
  • statusEnumOld = The SIDC used to create this symbol indicates a symbol that was in the previous version of 2525/APP-6 and is also in the version of 2525/APP-6 represented by the Librarian object.
  • statusEnumRetired = The SIDC used to create this symbol indicates a symbol that was in the previous version of 2525/APP-6 BUT IS NO LONGER in the version of 2525/APP-6 represented by the Librarian object. It has been "retired".
  • statusEnumInvalid = The SIDC used to create this symbol could not be interpreted, resulting in an invalid symbol This may also occur if the XML instance data is incomplete. For example, if you try to create a Land Installation symbol before the Land Installation symbol set has been provided in XML form.

Resources

Issues

  • Not all of the symbols in MIL-STD 2525D or NATO APP-6(C) are included in this initial release, as not all of the appendices/chapters have been instantiated as XML data.
  • The image resources (svg/png) provided by DISA, used to display the individual elements of a complete symbol, are not supplied with this repo. They are still a work in progress at DISA and many are not currently "wired" in to the XML instance data, at this time. We will provide sample code in the future that includes and uses some of these available graphic files.

Find a bug or want to request a new feature? Please let us know by submitting an issue.

Contributing

Esri welcomes contributions from anyone and everyone. Please see our guidelines for contributing.

Licensing

Copyright 2014 Esri

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

A copy of the license is available in the repository's license.txt file.

[](Esri Tags: ArcGIS Defense and Intelligence Joint Military Symbology XML) [](Esri Language: XML)

About

Joint Military Symbology Markup Language is a data encapsulation of MIL-STD-2525D and APP-6(C).

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published