Coder Social home page Coder Social logo

esri / joint-military-symbology-xml Goto Github PK

View Code? Open in Web Editor NEW
138.0 66.0 58.0 83.78 MB

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

License: Apache License 2.0

C# 97.67% Batchfile 2.33%
data-management military symbols

joint-military-symbology-xml's Introduction

To follow the development of Esri supported military symbology solutions, please go to Esri/military-symbology

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 US DOD MIL-STD-2525D and NATO APP-6(D).

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.

**Repo Owners: Joe Bayles (joebayles) **

Image of Joint Military Symbology XML

Releasability

  • APP-6:
    • APP-6(D): Unmarked, denoting that it is approved for public release and unlimited distribution.
    • Previous Versions: As of promulgation of APP-6(D)(1), the classification markings on all previous editions are invalid and no longer applicable.
  • MIL-STD-2525: Approved for public release, distribution is unlimited.

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 Bc2, for all relevant appendices/chapters.
  • SVG files for all of the frames, entities, modifiers, and other graphic amplifiers needed to implement military symbology.

  • 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 old 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 2012 or later.
    • NLog (see below).
    • Svg (see below, if you wish to build/run the JMSML Demo project).
    • 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

  • If you intend to use the SVG files with the image conversion utilities found under the Utilities source folder, please consult its instructions here.
  • 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 2012 | Visual Studio Tools | Developer Command Prompt for VS 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 to 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 2012 | Visual Studio Tools | Developer Command Prompt for VS 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 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) for the individual parts of MIL-STD 2525 (included herein). 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.
  • If you wish to use the Joint Military Symbology XML Demo from the screenshot above, build and run the Test Folder located here (https://github.com/Esri/joint-military-symbology-xml/tree/master/source/JointMilitarySymbologyLibraryCS/Test).

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.

Svg

Svg is a GitHub repo located here: https://github.com/vvvv/SVG

It provides the JMSML Demo application/project with the capability to display the svg files included in this repo.

The Svg Rendering Engine is licensed under the Microsoft Public License.

To configure JMSML to use the included svgs, edit the jmsml.config file found here: jmsml.config with a value for GraphicHome that points to your folder containing the svg files. Then clean and rebuild the JMSML solution.

In jmsml.config, The SVGHome attribute should point to the location of the actual 2525 svg files. The GraphicRoot attribute is the string prefixed to paths in the image, name, category, tag export files. The GraphicHome attribute should point to the real disk location of your GraphicRoot. The GraphicExtension attribute should be the three letter file name extension for the image files you have stored in your GraphicHome. These may be the original svg files or, perhaps, they are emf files if you have converted the svgs.

Documentation

  • To learn more about the design of this project, please see here.
  • To get a high level overview of the XML schema, please see here.
  • To learn more about importing raw data into the symbol library, please see here.
  • To learn more about exporting data from the symbol library, please see here.
  • To learn more about the naming conventions used for the svg files, please see here.
  • To learn more about the status of various svg issues, please see here.
  • To follow the progress of Esri-authored change proposals, please see here.

This repo's documentation includes HTML pages generated with a pair of third party tools, re-distributed here in the Documentation folder's Utilities sub-folder.

The tools include xs3p, which is a schema documentation generator in the form of an XSLT. xs3p was developed by Australia's Distributed Systems Technology Centre (DSTC), a Cooperative Research Center, which folded in 2006. The DSTC started and hosted the Australian W3C Office. Since its abandonment, xs3p has been hosted by FiForms Solutions on SourceForge.

More information about xs3p can be found here. The DSTC Public License information can be found included here, and was used by the DSTC to make its work available to software developers.

These utilities also include a batch file and JS script that exercise MSXML6 as a command line utility. More information can be found here. With its license information found here.

Versioning

JMSML models an XML representation of the contents of MIL-STD-2525D. One of the stated goals for JMSML is to facilitate the delivery of approved, and subsequently implemented, Change Proposals (CPs) to fielded systems.

JMSML versioning facilitates the tracking of CP implementation between major published releases of 2525D.

JMSML Versioning

JMSML Version Notes
1.0.0 2525D, as published
1.0.1 May include approved and implemented Change 1 CPs
1.0.2 May include more approved and implemented Change 1 CPs
'' ''
1.1.0 2525D Change 1, as published
'' ''

2525D Versioning

2525D Version Notes
2525D-0 2525D, as published
2525D-1 2525D Change 1, as published

Each JMSML version will also include bug fixes and other enhancements or content improvements deemed necessary to better meet our goal of providing military symbology implementers with a quality resource.

Implemented change proposals (CPs) and other major enhancements will be identified/listed in each version's release notes.

Resources

Projects using this Repo

Project Repository
Joint military symbology explorer https://github.com/kjellmf/military-symbology-explorer
milsymbol 2525D Implementation https://github.com/spatialillusions/milsymbol

Other Standards Referenced by this Repo

JMSML utilizes NGA's Geopolitical Entities, Names, and Codes (GENC). standard for the three-character country codes used in the base XML file. Edition 3, Update 1, dated September 30, 2015, is the current version in use herein.

Issues

Several parts of the provided schema have been defined (DrawingRules, LabelRules, Geometries, etc.) but are otherwise empty of full instance data. Work continues on this project, as it evolves to provide more content for use by implementers, and some of that work will fill in the aforementioned missing data.

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

Issues with the Esri-supported stylx files are not managed in this repository. Please contact Esri Support Services or log them in Esri/military-symology.

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 ArcGISSolutions) [](Esri Language: XML)

joint-military-symbology-xml's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

joint-military-symbology-xml's Issues

2525C Air SIDCs that don't return a value from Librarian.MakeSymbol("2525C", sidc2525C)

These values below didn't return a value from Librarian.MakeSymbol("2525C", sidc).

So a few questions:

  1. Is there some way to tell if they are still valid in 2525D?
  2. Does everything from 2525C and APP6B have a mapping to 2525D?
  3. How do we know if this a defect (that a value should be returned from 2525D)
  4. How do we detect a failure with MakeSymbol

SFAP-------------> (1000000000, 1000000000)
SHAP-------------> (1000000000, 1000000000)
SNAP-------------> (1000000000, 1000000000)
SUAP-------------> (1000000000, 1000000000)
SFAPMFQA---------> (1000000000, 1000000000)
SHAPMFQA---------> (1000000000, 1000000000)
SNAPMFQA---------> (1000000000, 1000000000)
SUAPMFQA---------> (1000000000, 1000000000)
SFAPMFQI---------> (1000000000, 1000000000)
SHAPMFQI---------> (1000000000, 1000000000)
SNAPMFQI---------> (1000000000, 1000000000)
SUAPMFQI---------> (1000000000, 1000000000)
SFAPMFQRZ--------> (1000000000, 1000000000)
SHAPMFQRZ--------> (1000000000, 1000000000)
SNAPMFQRZ--------> (1000000000, 1000000000)
SUAPMFQRZ--------> (1000000000, 1000000000)
SFAPMHK----------> (1000000000, 1000000000)
SHAPMHK----------> (1000000000, 1000000000)
SNAPMHK----------> (1000000000, 1000000000)
SUAPMHK----------> (1000000000, 1000000000)

Required Reference API/Test Sample Features

From an end-user perspective some Reference API/Test sample code that shows how to perform the following would be helpful:

Search:

  1. How to get a list of valid symbols
  2. How to get a list of symbols based on some attribute. e.g. Air symbols/Point Symbols/Etc.

Basic Lookup:

  1. How to get the data properties/attributes of a symbol
    a. Is it a point, line, area, etc.
    b. What are its metadata tags: Air, Sea, etc.; Friendly, Hostile, etc.
    c. Where its legacy 2525C code would be just another attribute one could query
    d. What labels are valid for a particular symbol
    e. What special geometry transform rules are needed for the lines/areas that don't draw in point order
    f. [NEW/ADDED 2/20] Like the Tags list, but returns a list of the SVG (or PNG if that is all that exists) files/layers used to build that symbol: ex. GraphicLayers = "center_icon.svg; mod1_ex.svg; friend_frame.svg; battalion_echelon.svg" (Note: I only added this one since it looks like the code might already do this with the .Graphic property)
  2. How to tell if a symbol code is valid

Additional:
The code should also probably more ".NET-like" (e.x. implement IEnumerable, etc.) versus a flat API so things like Linq queries will just work on these operations.

Batch Files included in CSV folders for common export tasks & rename Folders to use "Simple Names"

For ease-of-use: (so a user doesn't need to worry about figuring out the command line option, regex stuff)

Just create/include the batch files that are used to create all of the exported csv's that get stored in this project/repo: e.g. https://github.com/abouffard/joint-military-symbology-xml/tree/master/samples

So - if a sample csv is stored in this repo, it must have an associated bat file to recreate/test that output.

You can have example bat's to produce subset csv's filtered on symbol set or other filters, but the most import one to make sure is there is the "ALL" form that spits out everything for that export type.

Also rename the folders to use the established "simple/common names":

  1. symbolcode_firstten_domains_values
  2. entity_modifier_domains_values
  3. imagefile_name_category_tags
  4. "simple_symbolset_entity_modifier_codes" = { simple_symbolset_entities_codes, simple_symbolset_modifiers_codes }
  5. label_names_and_placement_rules
  6. line_area_exceptions
  7. mapping_2525C_2525D

Note: we mentioned all of this in passing, just didn't want to forget about, so adding as issue.

Just a note on the motivation for these - since I'm not sure if this is even capture anywhere in the readme doc (if not, it should be added also) - these exports/formats are to:

  • Demonstrate that this repo data can produce output in a simple, easily readable, usable tabular format
  • Use this data in other environments (not just with the large, reference .NET API provided)

LegacySymbol Issues

After speaking with Andy to clarify this issue, there are two different issues:

Some symbols are in the proper 2525D XML, but reference symbols that come from other locations inside of 2525C (these have in-line comments explaining more specifically). Andy will have to come up with a way to solve this issue.

Some symbols that are in the 2525C Appendix but are referenced in other 2525D XMLs. These LegacySymbol code lines have been removed from the XML and placed in a text file on Box. The solution to the above problem may need to be applied, or may not, depending on the symbol.

OCA data needs to be simplified

DISA has agreed that there are too many operational condition amplifier svg files and the extra files are redundant. DISA have provided us a new set of OCA svg files and these need to be incorporated into our XML and image name category tag output.

Icon Exports Improvements

Not requirements, just a few suggested changes to the icon exports for when/if this ever gets updated

  • Add some columns (to the right of Tags) for Unique ID and Geometry Type
    1. I realize these are already in the tags, but also having in a separate column will make these easier to work with
  • It would be helpful if the icon export process did some validation:
    • Check that the Unique ID and Icon Name match as expected
    • Check that the Unique ID and Unique Name are in fact unique
    • Check if the expected svg file actually exists if the user defines an expansion constant/location for {Symbols_Root} in the source code
    • Note: I originally envisioned that the icon export process would check/validate these files when it created the export file & only then add that Note: "image file does not exist;" - right now it just adds that note for everything which doesn't add a lot of value. I understand it probably give this warning because "{Symbols_Root}" doesn't exist but perhaps the export code could expand this to some constant used in the code and do the "exists" check on export.
  • Adding the 2525Charlie ID to the tags (already noted here: #86)
  • Better Categories for Control Measures, METOCs, e.g. 'Control Measure : Point','Meteorological-Atmospheric : Point' since 'Main Icon' doesn't seem quite right for these

MIL-STD-2525D Issues

This issue is to track issues found in the draft of MIL-STD-2525D for @abouffard to take back to the committee (@mepler). Some of these may not be issues at all, but in the review they seemed counter-intuitive, so I am listing them here.

Location Page Issue
A-XIX 57 Acquisition is mispelled (130302)
A-XIX 58 Equipped is mispelled (140105)
A-XXV 72 Mine is not capitalized (210200)
A-XLIV 122 General is not capitalized (29)
D-II 165 Field AR (Special Designator) should have a designated location
F-II 328 Sea Subsurface does not have all of the Sea amplifiers (i.e. Speed, Location)
G-II 354 Offset Location Indicator is Field S, not Q
D-XIII 272 Law Enforcement (20112100) should list an Icon Type.
D-XIII 274 Emergency Operation (20112200) should list an Icon Type.
D-XIII 277 Economic Infrastructure Asset (20120204) should be Icon Type: Main
D-XV 294 Symbol Set Code should be 20
D-XV 294 Descriptions should only be listed once
D-XV 294 All modifiers should have a Category
I-II 737 Shoreline Protection - EntitySubType and EntitySubSubType?
I-II 738 Hydrography:Aids to Navigation - Error! Bookmark not defined.

Missing icons to investigate

List of Missing Icons from export file:

( Note: doesn't include the many from #77 )

Source Symbol does NOT exist: Symbols-061914\svgs\Appendices\Land\10121395_0.svg
Source Symbol does NOT exist: Symbols-061914\svgs\Appendices\Land\10121395_1.svg
Source Symbol does NOT exist: Symbols-061914\svgs\Appendices\Land\10121395_2.svg
Source Symbol does NOT exist: Symbols-061914\svgs\Appendices\Land\10121395_3.svg
Source Symbol does NOT exist: Symbols-061914\svgs\Appendices\ControlMeasures\25140103.svg
Source Symbol does NOT exist: Symbols-061914\svgs\Appendices\ControlMeasures\25140104.svg
Source Symbol does NOT exist: Symbols-061914\svgs\Appendices\ControlMeasures\25140200.svg
Source Symbol does NOT exist: Symbols-061914\svgs\Appendices\ControlMeasures\25150301.svg
Source Symbol does NOT exist: Symbols-061914\svgs\Appendices\ControlMeasures\25150302.svg
Source Symbol does NOT exist: Symbols-061914\svgs\Appendices\ControlMeasures\25170101.svg
Source Symbol does NOT exist: Symbols-061914\svgs\Appendices\ControlMeasures\25212900.svg
Source Symbol does NOT exist: Symbols-061914\svgs\Appendices\ControlMeasures\25320310.svg
Source Symbol does NOT exist: Symbols-061914\svgs\Appendices\ControlMeasures\25342201.svg
Source Symbol does NOT exist: Symbols-061914\svgs\Appendices\ControlMeasures\25342202.svg
Source Symbol does NOT exist: Symbols-061914\svgs\Appendices\ControlMeasures\25342203.svg
Source Symbol does NOT exist: Symbols-061914\svgs\Appendices\ControlMeasures\25342300.svg
Source Symbol does NOT exist: Symbols-061914\svgs\Appendices\Subsurface\36110600a.svg
Source Symbol does NOT exist: Symbols-061914\svgs\Appendices\Subsurface\36110700a.svg
Source Symbol does NOT exist: Symbols-061914\svgs\Appendices\METOC\Atmospheric\45110203.svg
Source Symbol does NOT exist: Symbols-061914\svgs\Appendices\METOC\Atmospheric\45110104.svg
Source Symbol does NOT exist: Symbols-061914\svgs\Appendices\METOC\Atmospheric\45160503.svg
Source Symbol does NOT exist: Symbols-061914\svgs\Appendices\METOC\Atmospheric\45160504.svg
Source Symbol does NOT exist: Symbols-061914\svgs\Appendices\METOC\Atmospheric\45160700.svg
Source Symbol does NOT exist: Symbols-061914\svgs\Appendices\Cyberspace\60160000.svg
Source Symbol does NOT exist: Symbols-061914\svgs\Appendices\SigInt\mod1\52151.svg
Source Symbol does NOT exist: Symbols-061914\svgs\Appendices\SigInt\mod1\52531.svg
Source Symbol does NOT exist: Symbols-061914\svgs\Appendices\SigInt\mod1\52531.svg
Source Symbol does NOT exist: Symbols-061914\svgs\HQTFFD\6305.svg
Source Symbol does NOT exist: Symbols-061914\svgs\HQTFFD\6306.svg
Source Symbol does NOT exist: Symbols-061914\svgs\HQTFFD\6307.svg

Update Icon Export sample files to remove "image file does not exist"

It would be extremely useful to be able to see any missing files/errors before trying to use the icon exports at https://github.com/Esri/joint-military-symbology-xml/tree/master/samples/imagefile_name_category_tags - but every entry has "image file does not exist"

Issue also mentioned here: #90 (comment) & here:
#90 (comment)

Also consider removing "'icon is MAIN'', etc. if that is the normal/expected condition and/or if these are already captured in the tags so that "Notes" just contain useful info that can be seen at a glance.

Amplifier coded value domain contains unrelated values for Echelon

Units use the Echelon amplifier but not Mobility. Because Mobility is mutually exclusive with Echelon, these should be separate domains.

I propose the Amplifier domain, Coded_Domain_Amplifier, should be split into 2 domains:

  1. Coded_Domain_Echelon
  2. Coded_Domain_Mobility

Land Installations name and code issues

  1. Entity names are incorrect for all Land Installations
    https://github.com/Esri/joint-military-symbology-xml/blob/master/samples/entity_modifier_domains_values/All_Coded_Domain_Entities.csv#L522
  2. Codes are incorrect starting here:
    https://github.com/Esri/joint-military-symbology-xml/blob/master/samples/entity_modifier_domains_values/All_Coded_Domain_Entities.csv#L562

I noticed this when I tried to create coded value domains and there were duplicates shown in the screenshot error:
landinstallationerror

Civilian frames need to be added to XML and image export

Civilian (magenta) frames, as a display option for end users, needs to be added to JMSML and exported as additional entries in the image name category tag output. This won't change the domain range values, but it will introduce more frame svgs/emfs for the style files (magenta versions of some of the current ones).

Tag/Category Changes before next Icon Csv generation

There are a couple of things we want to modify in the Icon csv files now that these are entering the stabilization phase (and before we generate these csv's again):

  • Add 2 columns (to the right of styleItemTags and left of notes) for UniqueID and GeometryType (IMPORTANT: this will be needed/required for the style update process) - named: styleItemUniqueId styleItemGeometryType
  • We need to increase the default point size to 64 points (we are still experimenting with how this looks in Pro so this value may change)
  • Remove the source svg tag (ex. Appendices\Air\01110101.svg) - this is no longer needed/desired
  • If something is already included in the tags, please remove this repeat from the notes, e.g. "icon is FULL_OCTAGON;" "FULL_FRAME;" is still in the notes even though now included in the tags - the notes are only for extra/amplifying things like "Tags > 255" that don't make sense to include in the tags
  • I don't think these cases are there any more, but we used to have "placeholder" icon row entries that didn't have an icon associated with them - are there any more of these cases in the csv's? If so we just need to make sure this case in properly tagged as "NO_ICON" instead of "MAIN"
    • Speaking of this IconType enumeration: MAIN, FULL_OCTAGON, FULL FRAME, etc. - there should always be an entry for this for when we need to parse these tags - so need to add an enumeration for MOD1, MOD2 (Modifier 1 & 2) - and any other icons that are missing this enumeration (this is a lower priority item, just mentioning with the icon change above in case related)
  • Change/refine these "Main Icon" categories to these more useful terms (based on Geometry Type):
Current Category Desired Category
'Control Measure : Main Icon' 'Control Measure : Point'
'Control Measure : Main Icon' 'Control Measure : Line'
'Control Measure : Main Icon' 'Control Measure : Area'
'Meteorological - Atmospheric : Main Icon' 'Meteorological-Atmospheric : Point'
'Meteorological - Atmospheric : Main Icon' 'Meteorological-Atmospheric : Line'
'Meteorological - Atmospheric : Main Icon' 'Meteorological-Atmospheric : Area'
'Meteorological - Oceanographic : Main Icon' 'Meteorological-Oceanographic : Point'
'Meteorological - Oceanographic : Main Icon' 'Meteorological-Oceanographic : Line'
'Meteorological - Oceanographic : Main Icon' 'Meteorological-Oceanographic : Area'

@abouffard - check these off above as they are completed - there should be nothing overly involved about the above (disabling tags exported) so I made this a high priority, short term task - so we can get these fixes in before the next time we generate the styles - let me know soon if this will be a problem getting accomplished.

@csmoore - above, you mention the need for additional MOD1 and MOD2 values to "fill in", so the tags can be adequately parsed. Since I'm about to produce a version that contains 2525C SIDCs as one of the tags, can I assume that you also need a "fill in" for when a given 2525D symbol has no equivalent 2525C SIDC, to ensure the tags can be parsed. Something like. "NEW_TO_2525D" or "NOT_IN_2525C"?

Move affiliation/identity/dimension to the end of the name for the exports

Can the affiliation/identity/dimension be moved to the end of the name for the exports (icon, domain)?

The naming of the frames make sense, but for the other amplifiers we might want to the amplifier name to come before the other affiliation/identity/dimension names - export file here

Somewhat arbitrary, but will help keep these together when sorting by name.

Current Example:

Category Name
Amplifier : Mobility Amplifier : Mobility : Unknown : Amphibious
Amplifier : Auxiliary Equipment Amplifier : Auxiliary Equipment : Unknown : Short towed array

Preferred:

Category Name
Amplifier : Mobility Amplifier : Mobility : Amphibious : Unknown
Amplifier : Auxiliary Equipment Amplifier : Auxiliary Equipment : Short towed array : Unknown

Drawing business logic of/constraints imposed by Icon Types?

I am just trying to completely understand the business rules that are implied by these icon types

Can someone confirm/verify these rules are correct?

  • MAIN - Normal Case, can have Modifier 1 & 2
  • MAIN_1 - Normal Case - but can't have Modifier 1 because area is taken
  • MAIN_2 - Normal Case - but can't have Modifier 2 because area is taken
  • FULL_FRAME - Touches Frame (Question - can this have modifier 1 and/or 2? Is sample below valid?),
    • i.e. does it also mean "MAIN" or "FULL_OCTAGON"
    • Or as a question: "Can a FULL_FRAME icon have modifiers?"
  • FULL_OCTAGON - Fills Full Central Icon Area, can't have modifier 1 or 2
  • SPECIAL - ? (None of the above? - are there any of these cases?)

If available can you point me to a succinct definition of these rules (or even better yet add to the XML/XSD as a description attribute/element). Or if there are changes to the above, just modify these succinct definitions shown (I just want to keep it brief/clear, rather than extensive & prolonged discussion):

10031000001204020900:
sampleimage

XML Data Import/Entry Status

This issue is just to capture at a glance the current status of the data import task.

I know we can just check the folder: https://github.com/Esri/joint-military-symbology-xml/tree/master/instance - but this doesn't provide a complete view of the work remaining or if the items there are complete/have significant work remaining.

Simply keep this table updated (i.e. edit this entry) as work progresses:

Sets Complete:

Fully Complete (all planned data entered):
Fully Complete = 11
Total Sets= 23
Percent of Sets=50% (*see Note)

Entity/Modifiers:
Complete = 23 (_see Note)
Total Sets= 23
Percent of Sets=100% (_see Note)

Symbol Set # Symbol Set Name Effort/Size** Status (See ***) Notes
1 N/A Frames And Modifiers Large Complete
2 1 Air Medium Complete
3 2 Air Missile Small Complete
4 5 Space Small-- Complete
5 6 Space Missile Small-- Complete
6 10 Land Unit Large Complete
7 11 Land Civilian Unit Organization Small Complete
8 15 Land Equipment Large Complete
9 20 Land Installation Large Complete
10 25 Control Measures Large+++ Complete -Text Amplifiers
11 30 Sea Surface Medium Complete
12 35 Sea Subsurface Medium Complete
13 36 Mine Warfare Medium Complete -MEDAL icons (See #42 (comment))
14 40 Activities Medium+ Complete
15 45 Atmospheric Large Complete
16 46 Oceanographic Large Complete
17 47 Meteorological Space Small Complete
18 50 Signals Intelligence Space Medium Complete
19 51 Signals Intelligence Air Medium Complete
20 52 Signals Intelligence Land Medium Complete
21 53 Signals Intelligence Surface Medium Complete
22 54 Signals Intelligence Subsurface Medium Complete
23 60 Cyberspace Medium Complete
24 98 Special Cases / Internal Small-- Complete
* Note: Sets Complete is not a very good metric because some of the remaining sets are quite large and complex & will require significant manual data entry

**Size (approx # of Entries)
<50 - Small
50-150 - Medium
150+ - Large

*** Status Samples (but feel free to use others if they fit):
Complete
Complete(-Legacy Symbols)
Complete(-Text Amplifiers)
Complete with Defects Remaining
In Progress
Partial (Work stopped)
(Blank = not started)

Test App Improvements

Some small changes to the test app would make it easier to use

  1. Default Values should be ones that work - or perhaps change to a combo box with several working values
  2. Image SizeMode --> StretchImage
  3. Arrange the UI so that how it works, how one uses it is more clear. Here is a proposed layout/design:

testappimprovements

Unique IDs not always unique

We discussed this, just adding an issue for tracking/testing. I realize the IDs are unique within a given export file, but we need them to be globally unique within this repo.

Note: If you change the current ID encoding scheme, make sure you explain/document what that new scheme is.

Some sample unique IDs that are repeated (Note: samples, not a complete/exhaustive list).

Amplifier : Mobility : Unknown : Towed 135
Frame : Reality : Unknown : Sea Subsurface 135

Amplifier : Echelon : Friend : Company/Battery/Troop 315
Frame : Reality : Friend : Land Equipment 315

Amplifier : Mobility : Friend : Towed 335
Frame : Reality : Friend : Sea Subsurface 335

Amplifier : Echelon : Neutral : Company/Battery/Troop 415
Frame : Reality : Neutral : Land Equipment 415

Air : Modifier 1 : Military Aircraft Type : Attack/Strike 1011
HQTFFD : Unknown : Air : Feint/Dummy 1011

Create "Image file-Name-Category-Tags" export files from source data

For each svg/graphic image, we need to be able to create a corresponding entry in a list table of "Image file-name-category-tags" - these tables will be included with the other sample export data in the (sample data folder)[https://github.com/Esri/joint-military-symbology-xml/tree/master/samples]

Below is a sample of the format.

Note: just creating an issue for tracking & MAJOR problems/issues. I don't want this issue to degenerate into a sidetrack discussions of relative merits of Naming/Tagging conventions used, but I do want to capture and capture briefing and succinctly (i.e. < 5 sentences & preferable without needing to paste in a bunch of pages from a standard) any major issues we might encountered).

Item # Item Image Path Item Name Item Category Item Tags
1 C:\My_Symbols_Root\Appendices\Space\05110000.svg Space : Military Space : Main Icon Space;Military;Point;Appendices\Space\05110000.svg;Space : Military;05110000
2 C:\My_Symbols_Root\Appendices\Space\05110100.svg Space : Military : Space Vehicle Space : Main Icon Space;Military;Space Vehicle;Point;Appendices\Space\05110100.svg;Space : Military : Space Vehicle;05110100
3 C:\My_Symbols_Root\Appendices\Space\05110200.svg Space : Military : Re-Entry Vehicle Space : Main Icon Space;Military;Re-Entry Vehicle;Point;Appendices\Space\05110200.svg;Space : Military : Re-Entry Vehicle;05110200
4 {QED & So On for Entities}
5 C:\My_Symbols_Root\Appendices\Space\mod1\05051.svg Space : Modifier 1 : {CATEGORY-TODO}: Geostationary Orbit (GO) Space : Modifier 1 Space;Modifier 1;{CATEGORY-TODO};Geostationary Orbit (GO);Appendices\Space\mod1\05051.svg;Space : Modifier 1 : {CATEGORY-TODO}: Geostationary Orbit (GO);05051
6 C:\My_Symbols_Root\Appendices\Space\mod1\05061.svg Space : Modifier 1 : {CATEGORY-TODO}: Molniya Orbit (MO) Space : Modifier 1 Space;Modifier 1;{CATEGORY-TODO};Molniya Orbit (MO);Appendices\Space\mod1\05061.svg;Space : Modifier 1 : {CATEGORY-TODO}: Molniya Orbit (MO);05061
7 C:\My_Symbols_Root\Appendices\Space\mod2\05002.svg Space : Modifier 2 : {CATEGORY-TODO}: Unspecified Space : Modifier 2 Space;Modifier 2;{CATEGORY-TODO};Unspecified;Appendices\Space\mod2\05002.svg;Space : Modifier 2 : {CATEGORY-TODO}: Unspecified;05002
8 C:\My_Symbols_Root\Appendices\Space\mod2\05012.svg Space : Modifier 2 : {CATEGORY-TODO}: Optical Space : Modifier 2 Space;Modifier 2;{CATEGORY-TODO};Optical;Appendices\Space\mod2\05012.svg;Space : Modifier 2 : {CATEGORY-TODO}: Optical;05012
9 {QED & So On for Modifiers

Incorrect Geometry Types for symbols

Geometry Type should be "Area":

25120400 - Command and Control Areas : Airfield Zone
25241901 - Fires Areas : Zone of Responsibility : Irregular
25241902 - Fires Areas : Zone of Responsibility : Rectangular
25241903 - Fires Areas : Zone of Responsibility : Circular

Image Discrepancies (since 7/21/14 drop)

An issue to capture image issues found since 7/21/14 drop of SVG Symbols

Specific Issues:

Id/Filename Symbol Set EntityCode Name Issue
20120902 Land Installation(20) 120902 Infrastructure : Postal Problem with central icon/fill - partial draw
46130203 & 46130204 Oceanographic(46) 130203 & 130204 Oceanography : Beach Slope : Moderate & Steep Grey dots missing with some SVG libraries(Inkscape-works in Webkit/Chrome through)
{TemplateLine} {SymbolSet} {Entity-or-Modifier-Code} {Lookup Name} {Issue/Problem}

General/Global Issues:

Neutral central icons can't be seen-they are touching/past/obscured by frame (Land-10):
130101, 121103, 121105, 10_xxxx96/97/98

Non friendly central icons don't touch frame (Land-10):
121303_X & 120402_X 140105_X, 164400_X

Template Label Issues (Templates still visible or non-template made invisible)
25_131400, 25_150502, 25_151202, 25_270200, 25_270702, 25_300100, 25_321701,
25281801-25281808 - missing "DCN XXX" Label

Blue Icons :
40_150104, 15_201501, Appendices\Air\mod1\01141.svg, Appendices\Land\mod1\10751.svg - not an exhaustive list - anywhere a "+"/Medevac was used it seemed to be blue (so not sure if by design)

Gray background (maybe by design):
25200400, 25200600, 25200700

Non-centered Control Measure points: list provided (ex. Action Points)

Include 2525C Symbol ID Code in Export Tags where applicable

Where there is a mapping (ex. nearly all Control Measures and METOCs should have a 1:1 mapping) include the legacy/2525Charlie Symbol ID Code (SIDC) in the metadata tags used in the exports.

Ex:

Name: Protection Points : Abatis (25280100)

Tags: Control Measure;Protection Points;Abatis;G-MPOS--------X;Line;Protection Points : Abatis;25280100

Add remaining Missing icons to the icon exports (ex. FULL_FRAME icons)

A known issue/already discussed, just adding an issue for tracking/testing.

Currently the only version of the icons exported for FULL_FRAME (center icons that touch the frame) icons are the "_2.svg" (Neutral) version ( Example ).

That was an optimization but now that we are entering the stabilization/refinement stage, it is probably time to address this issue so all of the icons are exported for these.

Some possible derived tasks/things to make sure are included/addressed:

  • The Tags need to include some tags that identify this condition: "FULL_FRAME", etc (currently this info is only in the "Notes" columns so should be moved/included with the tags so they are accessible)
  • You'll also probably need to append " : Friend" " : Neutral" " : Hostile" " : Unknown" to the icon name to keep unique
  • Explain the rules of how we go from the name/tags to assembly a complete symbol for these

Image Discrepancies

Frame Symbol Issues

File Context Dimension Identity Issue
0601 Reality Air Hostile Symbol should not be closed at bottom
0605 Reality Space Hostile Symbol should not be closed at bottom
0635 Reality SubSurface Hostile Symbol should not be closed at bottom
2601 Simulation Air Hostile Symbol should not be closed at bottom
2605 Simulation Space Hostile Symbol should not be closed at bottom
2635 Simulation SubSurface Hostile Symbol should not be closed at bottom

Entity Symbol Issues

File Symbol Set Entity EntityType EntitySubType Issue
01110111 Air Military Fixed-Wing Reconnaissance Should not have blue reference octagon
05121000 Space Civilian Space Station The ring should be thicker
10130101 Land Unit Fires Air Defense Main Gun The arc should not close on Friendly version
10130102 Land Unit Fires Air Defense Missile The arc should not close on Friendly version
10130102 Land Unit Fires Air Defense Missile Should not have Main Gun symbol
10130200 Land Unit Fires Naval Gun Liaison Anchor flukes should be shorter
10163300 Land Unit Sustainment Seaport Anchor flukes should be shorter
15130000 Land Equip Engineer Vehicles The top of the E is too long
15220300 Land Equip Sensors Radar The bolt is crooked
15230000 Land Equip Manual Track Code in MIL-STD may be wrong
20111500 Land Installation Military Nuclear Center circle should be larger
20111600 Land Installation Military Printed Media Should not be 20116000.svg
20120902 Land Installation Infrastructure Postal Post Office Did not draw completely
20121309 Land Installation Infrastructure Transportation Seaport Anchor flukes too long
20121310 Land Installation Infrastructure Transportation Shipyard Anchor flukes too long
25130300 Control Measures Command and Control Points Checkpoint "AMN" should be "CKP"
30130204 Sea Surface Military Noncombatant Launch Should be spelled YFT
35150000 Sea Subsurface Fused Track Should not be closed on top (should be open)
36140000 Mine Warfare MILCO Should not have a symbol
36140100 Mine Warfare MILCO General Should have a symbol
40130100 Activities Operation Patrolling The "P" is too small
40130201 Activities Operation MISO TV & Radio Files should use "_", not "."
40131202 Activities Operation Emergency Food Distribution Files should use "_", not "."
40131400 Activities Operation Firefighting Operation Should be Icon Type:Main version of the Maltese Cross (40131402 is the Full Octagon version)
45161505 Atmospheric Weather Fog Obscured Should not be named 45161605
45161506 Atmospheric Weather Fog Freezing, Sky Vis Should not be named 45161606
46130203 Oceanic Oceanography Beach Slope Moderate Should have light gray dots
46130204 Oceanic Oceanography Beach Slope Steep Should have dark gray dots
50110100 SIGINT Signal Intercept Communications Should not be named 50110000
50110200 SIGINT Signal Intercept Jammer Should not be named 50110100
51110100 SIGINT Signal Intercept Communications Should not be named 51110000
51110100 SIGINT Signal Intercept Communications Should not be named 51110000
51110200 SIGINT Signal Intercept Jammer Should not be named 51110100
52110100 SIGINT Signal Intercept Communications Should not be named 52110000
52110200 SIGINT Signal Intercept Jammer Should not be named 52110100
53110100 SIGINT Signal Intercept Communications Should not be named 53110000
53110200 SIGINT Signal Intercept Jammer Should not be named 53110100
54110100 SIGINT Signal Intercept Communications Should not be named 54110000
54110200 SIGINT Signal Intercept Jammer Should not be named 54110100

Modifier Symbol Issues

File Symbol Set Modifier Sector Issue
10501 Land Unit Radar 1 The bolt is crooked
10132 Land Unit EPLRS 2 The end points should be level
11231 Land Civilian Other 1 The symbol should say OTH, not CIV
54061 SIGINT Air Traffic Control 1 Should not exist

Remove "Magic Numbers" from the code

The code has many instances of "magic numbers" that will make reading and maintaining the code difficult. Ex.

            this._first10 = 1000980000;
            this._second10 = 1000000000;

These should all be changed to reference const/static objects. ex:

this._first10 = Symbol.RETIRED.First10

where RETIRED is a static field on Symbol that returns a static Symbol Object with those "magic number" properties.

Note: also mentioned in commit review notes: ab681e1 but not addressed in latest commit (so please make sure you have these notifications turned on).

Support for Dynamic Symbols

I'm sure @abouffard already has a way forward, but I don't know how we will implement dynamic symbols like Atmospheric/Wind/Wind Plot (45140200).

@abouffard @jrweakland we need to ensure that we capture all use cases for dynamic symbology here.

Creating issues for each of the sub-sets of this problem:

  • #182 - Wind Plotting
  • - Circular Targets

Add Simple High Level Schema Description/Doc

It looks like this has already been thought of: Missing Sections here: https://github.com/Esri/joint-military-symbology-xml/blob/master/documentation/APIUserDoc.md#schema-reference

So just wanted to add an issue to remind/track. Given that this repo is now at the maturing/stabilizing stage, it is probably time to add those missing sections to the doc (perhaps as separate .md files since that doc is already too large) and produce some high level description, diagrams, that explain the schema to a newcomer.

Something brief, high-level that explains the schema and has a few diagrams - something similar to what you might put in a 10-slide executive briefing or training overview.

Create repeatable CSV-> Draft XML -> Export CSV Files writeup/steps/doc

@joebayles mentioned that he still needs Andy to generate the "draft XML" doc's he is using/updating...

So just adding an issue to track the fact that we need some repeatable steps/for doc’ing the ingestion of csv’s to spitting out those draft/base XMLs that he and @jrweakland are starting with. Once the XML is there, we need the steps to go from the XML to the exported csv files (in particular the icon files that I need here:

This will also help to verify that these are automated as much as possible & that someone besides Andy is able to update/create these. Doc would go in a readme-type-doc.md in the documentation folder of this repo.

Format SIDC.PartAString, SIDC.PartBString

Format string so it is 10 characters:

This code:

SIDC sidc = new SIDC(0, 0);
System.Diagnostics.Trace.WriteLine(sidc.PartAString + ", " + sidc.PartBString);

Outputs: 0, 0

But I would expect: 0000000000, 0000000000

Reference Sample to Produce/Convert Data Tables from XML Source Files

Being able to produce an output (println/cout, .txt, .csv) in a tabular format like as a Data Table would allow visual validation of the data in the repo.

The exact formatting/columns can be determined later but having the information in columns in a one tabular output would better enable someone to check the info at a glance.

A comma-delimiter output console app that can be piped to a file is fine. Here is an example of what the output format might look like:

ENTITY ENTITY TYPE ENTITY SUBTYPE CODE LABEL NAME ICON TYPE
MILITARY FIXED WING MEDEVAC 01 MEDEVAC Medevac Main

Move detailed user doc to separate .md in documentation folder

For really detailed usage doc (like which bits to set on an int to get error codes), please move this info to a separate .md file in {repo root}/documentation folder

Note: also mentioned in commit review notes: ab681e1 but not addressed in latest commit (so please make sure you have these notifications turned on).

Land Unit Special Entities

Land Unit Special Entities proved especially difficult to translate to XML.

4-25-2014 5-00-26 pm

The issue is that they are separate files and therefore separate layers, but the code seems to indicate there should be separate symbols for each variable (five for Main to Full Octagon symbols, eight for Full Frame symbols). After talking w/ @abouffard we have implemented the following code (in this example, it is the Headquarters Element Entity Subtype.

Main to Full Octagon
Graphic="xxxxxxxx.svg"
SpecialCloverGraphic="10xxxx95_0.svg" SpecialRectangleGraphic="10xxxx95_1.svg" SpecialSquareGraphic="10xxxx95_2.svg" SpecialDiamondGraphic="10xxxx95_3.svg"

Full Frame
CloverGraphic="xxxxxxxx_0.svg" RectangleGraphic="xxxxxxxx_1.svg" SquareGraphic="xxxxxxxx_2.svg" DiamondGraphic="xxxxxxxx_3.svg"
SpecialCloverGraphic="10xxxx95_0.svg" SpecialRectangleGraphic="10xxxx95_1.svg" SpecialSquareGraphic="10xxxx95_2.svg" SpecialDiamondGraphic="10xxxx95_3.svg"

This should draw both, and draw the symbol properly according to the standard.

Address dependent PNG/SVG Image Files needed by this repo

@abouffard plans on removing the files from

https://github.com/ArcGIS/joint-military-symbology-xml/tree/master/instance/graphics

So the issues to address are:

  1. Andy will add instructions to the readme for how to obtain these files.
  2. Ensure that these files are readily obtainable from a public distribution site.
  3. Having the image files as part of this repo would be preferred, since it will certainly make using it easier, but if that is not possible, then downloading from the public web should be fine.
  4. If any files remain in that folder that are not the original work of this repo then they still need to state the license
  5. If any new content/files are independently developed for this repo. Then they will have Apache V2 license.
    1. So this might get a bit complex if this repo needs to add additional files and these are mixed with other files

Note: this issue was already captured in #5 - Item 3 , but creating a new issue for discussion/addressing this one large issue.

Initial Repo Review Issues

  1. Add Screenshot to Repo/Readme
  2. Readme: add steps to run automated unit tests from command line using VSTest.Console.exe / MSTest.exe (needed for nightly auto build/test runs)
  3. tree/master/instance/graphics - include the license and source of all of those svg/png files - i.e. what license gives you permission to include these - Note: Opened new issue #10 for this
  4. Remove extraneous files:
    a. master/instance/graphics/image test.zip + image test folder
    b. JointMilitarySymbologyLibrary.csproj.user
    c. Remove: the binaries/folder for NLog-2.1.0 that probably won't be used - net20,slXXXX
  5. Provide some more unit test to improve test coverage (beyond the 1 method). Add tests with some known bad input.

Easy way to have a file with all icons in single file?

Can we also get one additional version of these files with everything, all the icons in one file/place: https://github.com/Esri/joint-military-symbology-xml/tree/master/samples/imagefile_name_category_tags

I'm just seeing if there is an easy way to do this with the app provided, if not I'll just use some batch-ology like (+add a .bat + all file to repo):

type Military-Activities-Source-Icons.csv > Military-All-Icons.csv
REM Note: more +1 used to skip header row
more +1 Military-Air-Source-Icons.csv >> Military-All-Icons.csv

How do I export the Name, Domain values for the Frames and Amplifiers?

Just wanted to find out how we generate name-domain tables for these (Frames, Echelons, and other Amplifiers)

And can we get a script to do this added to: https://github.com/Esri/joint-military-symbology-xml/tree/master/samples/entity_modifier_domains_values to do this (and have this added to the "All" version)

Here is a sample of what I would expect to see for frames:

Frame : Reality : Pending : Unknown, 0000
Frame : Reality : Pending : Air, 0001
Frame : Reality : Pending : Space, 0005
Frame : Reality : Pending : Land Unit, 0010
Frame : Reality : Pending : Land Equipment, 0015

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.