Skip to main content

A lightweight library for producing SVGs of NATO standard military symbols from NATO sidcs or natural-language descriptions

Project description

Python military symbols

This is a lightweight Python module, including a command-line script, to generate NATO APP-6(E) compliant military symbol icons in SVG format. These SVGs can be generated from inputs formatted as NATO SIDCs (Symbol identification codes) or as natural-language names for symbols, i.e. "friendly infantry platoon" or "enemy mortar section." Features supported include:

  • Headquarters, task force, mobility, and echelon indicators
  • Automatic checking of modifier and entity types for congruence
  • Symbol sets to indicate land units and installations, air, space, sea surface, subsurface, signals intelligence, and cyber units, tracks, and activities
  • Status indicators in both standard and alternate forms
  • Construction of SVGs in light, medium, dark, and unfilled styles

Control measure graphics are not yet implemented.

Available as a Python package.

Usage

Command line usage examples:

# Create a set of symbols by name, using variant symbols if available, in the current directory
military_symbol --use-variants --by-name -o . "Friendly artillery company" "Destroyed Enemy PSYOP section"

# Create a single symbol at the designated path by name
military_symbol -o platoon.svg -n "Friendly infantry platoon"

# Print a set of symbols by name, in unfilled style, to STDOUT
military_symbol -s unfilled -n "Friendly infantry platoon" "Enemy anti-air battery"

# Create the same set of symbols as above, but by SIDC
military_symbol -o .  -n 10031000141211000000 10041000141211000000

Python module usage:

import os

import military_symbol

if __name__ == '__main__':
    # Print symbol generated from a name to STDOUT
    print(military_symbol.get_symbol_svg_string_from_name("enemy infantry platoon"))

    # Add a symbol template and write it to a file adjacent to this script
    example_template_directory = os.path.dirname(__file__)
    military_symbol.add_symbol_template_set(os.path.join(example_template_directory, 'example_template.json'))
    military_symbol.write_symbol_svg_string_from_name("T-82", out_filepath=os.path.join(example_template_directory,
                                                                                        'T-82.svg'), auto_name=False)

    shapes = [
        'friendly infantry',
        'friendly cavalry',
        'friendly artillery'
    ]
    for shape in shapes:
        military_symbol.write_symbol_svg_string_from_name(shape, out_filepath=example_template_directory)

    # Generate a list of symbols from names and write them as SVG files in specific
    # styles, named according to a user-defined pattern and using variant symbols where available
    examples = [
        ('Enemy armor company', 'light'),
        ("Dummy damaged neutral hospital", 'medium'),
        ("Friendly fighter", 'dark'),
        ("Destroyed neutral artillery task force headquarters", 'unfilled'),
        ("Suspected CBRN section", 'light')
    ]

    for example_name, example_style in examples:
        example_symbol: military_symbol.individual_symbol.MilitarySymbol = military_symbol.get_symbol_class_from_name(example_name)
        print('Exporting symbol "{}"'.format(example_symbol.get_name()))

        output_filename = '{} ({}).svg'.format(example_symbol.get_sidc(), example_style)
        with open(output_filename, 'w') as output_file:
            output_file.write(example_symbol.get_svg(style=example_style, pixel_padding=4, use_variants=True))

License

This project is licensed under the MIT license.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

military_symbol-2.0.8.tar.gz (251.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

military_symbol-2.0.8-py3-none-any.whl (265.0 kB view details)

Uploaded Python 3

File details

Details for the file military_symbol-2.0.8.tar.gz.

File metadata

  • Download URL: military_symbol-2.0.8.tar.gz
  • Upload date:
  • Size: 251.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for military_symbol-2.0.8.tar.gz
Algorithm Hash digest
SHA256 bfce64fd5df00c8b3ed6fb6811d163c207907c895aaf63b8a3d2a4a1b25872a4
MD5 9b54ce9093991131b12b6b259ee998bc
BLAKE2b-256 069da598a8c6603af0b1eb5bb5a540e872e1fbe9a13066432d54af99cef17acd

See more details on using hashes here.

Provenance

The following attestation bundles were made for military_symbol-2.0.8.tar.gz:

Publisher: python-publish.yml on nwroyer/Python-Military-Symbols

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file military_symbol-2.0.8-py3-none-any.whl.

File metadata

File hashes

Hashes for military_symbol-2.0.8-py3-none-any.whl
Algorithm Hash digest
SHA256 f49be8780b54142d24f835d9981f87b2b81b689ee2f2dfcc70593194061799a5
MD5 66997abfd3d4d2bcbf56b362f5f7e185
BLAKE2b-256 fdf770c5f2bae57dabb636273ab264ddd4de9783d4b300f3f1bdde606bbea2c3

See more details on using hashes here.

Provenance

The following attestation bundles were made for military_symbol-2.0.8-py3-none-any.whl:

Publisher: python-publish.yml on nwroyer/Python-Military-Symbols

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page