diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..e7e9d11
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,2 @@
+# Default ignored files
+/workspace.xml
diff --git a/.idea/dictionaries/vickdw.xml b/.idea/dictionaries/vickdw.xml
new file mode 100644
index 0000000..276e7e4
--- /dev/null
+++ b/.idea/dictionaries/vickdw.xml
@@ -0,0 +1,11 @@
+
+
+
+ emplaced
+ entitysubtypes
+ entitytypes
+ geospatial
+ sustainment
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 0000000..dd4c951
--- /dev/null
+++ b/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..692245f
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..2f8f0e1
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/qgis-milstd2525-plugin.iml b/.idea/qgis-milstd2525-plugin.iml
new file mode 100644
index 0000000..0dc4a59
--- /dev/null
+++ b/.idea/qgis-milstd2525-plugin.iml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..325c94a
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/milstd2525/milstd2525symbology.py b/milstd2525/milstd2525symbology.py
index 7d0b91d..8361068 100644
--- a/milstd2525/milstd2525symbology.py
+++ b/milstd2525/milstd2525symbology.py
@@ -48,7 +48,24 @@ def symbolForCode(code, size):
for i in range(symbol.symbolLayerCount()):
symbol.takeSymbolLayer(0)
- echelonCode = code[3] + code[8:10]
+ # Decode the sidc number to find the symbol
+ # Referenced https://explorer.milsymb.net/#/explore/ for the decoding
+ version = code[:2]
+ standard_identity = code[2:4]
+ symbol_set = code[4:6]
+ status = code[6]
+ hqtffd = code[7]
+ amplifier_descriptor = code[8:10]
+ entity = code[10:12]
+ entity_type = code[12:14]
+ entity_subtype = code[14:16]
+ sector_one_modifier = code[16:18]
+ sector_two_modifier = code[18:20]
+
+ # From Symbol Set, identify which Folder our image is in.
+ image_dir = getDirectoryFromSymbolSet(symbol_set)
+
+ echelonCode = '1' + amplifier_descriptor
echelonLayer = getSymbolLayer('Echelon', echelonCode, size)
if echelonLayer is not None:
symbol.insertSymbolLayer(0, echelonLayer)
@@ -76,23 +93,37 @@ def symbolForCode(code, size):
# log.debug('oca: %s %s' % (ocaCode, str(ocaLayer is not None)))
mainCode = code[4:6] + code[10:16]
- mainLayer = getSymbolLayer('Appendices', mainCode, size)
+ mainLayer = getSymbolLayer(image_dir, mainCode, size)
if mainLayer is not None:
symbol.insertSymbolLayer(0, mainLayer)
+ else:
+ mainCode = code[4:6] + code[10:16] + '_' + code[4]
+ mainLayer = getSymbolLayer(image_dir, mainCode, size)
+ if mainLayer is not None:
+ symbol.insertSymbolLayer(0, mainLayer)
# log.debug('main: %s %s' % (mainCode, str(mainLayer is not None)))
modifier1Code = code[4:6] + code[16:18] + '1'
- modifier1Layer = getSymbolLayer('Appendices', modifier1Code, size)
+ modifier1Layer = getSymbolLayer(image_dir + '/mod1', modifier1Code, size)
if modifier1Layer is not None:
symbol.insertSymbolLayer(0, modifier1Layer)
modifier2Code = code[4:6] + code[18:20] + '2'
- modifier2Layer = getSymbolLayer('Appendices', modifier2Code, size)
+ modifier2Layer = getSymbolLayer(image_dir + '/mod2', modifier2Code, size)
if modifier2Layer is not None:
symbol.insertSymbolLayer(0, modifier2Layer)
- frameCode = '%s_%s_%s' % (code[2], code[3:6], code[0])
- frameLayer = getSymbolLayer('Frames', frameCode, size)
+ if int(status) > 1:
+ frameCode = '%s_%s_%s' % (code[2], code[3:6], '0')
+ else:
+ frameCode = '%s_%s_%s' % (code[2], code[3:6], status)
+ if int(code[2] == 1):
+ frameLayer = getSymbolLayer('Frames/Exercise', frameCode, size)
+ elif int(code[2] == 2):
+ frameLayer = getSymbolLayer('Frames/Sim', frameCode, size)
+ else:
+ frameLayer = getSymbolLayer('Frames', frameCode, size)
+
if frameLayer is not None:
symbol.insertSymbolLayer(0, frameLayer)
# log.debug('frame: %s %s' % (frameCode, str(frameLayer is not None)))
@@ -105,6 +136,35 @@ def symbolForCode(code, size):
return symbol
+# noinspection PyPep8Naming
+def getDirectoryFromSymbolSet(symbol_set):
+ image_path = 'Appendices'
+ if symbol_set in ['01', '02']:
+ return image_path + '/Air'
+ if symbol_set in ['05', '06']:
+ return image_path + '/Space'
+ if symbol_set in ['10', '11', '15', '20']:
+ return image_path + '/Land'
+ if symbol_set in ['25']:
+ return image_path + '/ControlMeasures'
+ if symbol_set in ['30']:
+ return image_path + '/SeaSurface'
+ if symbol_set in ['35', '36']:
+ return image_path + '/SeaSubsurface'
+ if symbol_set in ['40']:
+ return image_path + '/Activities'
+ if symbol_set in ['45']:
+ return image_path + '/METOC/Atmospheric'
+ if symbol_set in ['46']:
+ return image_path + '/METOC/Oceanographic'
+ if symbol_set in ['50', '51', '52', '53', '54']:
+ return image_path + '/SigInt'
+ if symbol_set in ['60']:
+ return image_path + '/Cyberspace'
+
+ return image_path
+
+
# noinspection PyPep8Naming
def getSymbolLayer(folder, svg, size):
svg = svg + '.svg'
@@ -116,6 +176,7 @@ def getSymbolLayer(folder, svg, size):
filepath = os.path.join(base, matching[0])
break
if filepath is not None:
+ print('filepath: ' + filepath)
symbolLayer = QgsSvgMarkerSymbolLayer(filepath)
symbolLayer.setSizeUnit(3)
symbolLayer.setSize(size)
diff --git a/milstd2525/sidcdialog.py b/milstd2525/sidcdialog.py
index 116bb9b..582e760 100644
--- a/milstd2525/sidcdialog.py
+++ b/milstd2525/sidcdialog.py
@@ -25,142 +25,176 @@
__revision__ = '$Format:%H$'
-import os
-
-from qgis.PyQt import uic
from qgis.PyQt.QtGui import QPixmap
+from qgis.PyQt.QtWidgets import QDialog
from milstd2525.milstd2525symbology import symbolForCode
-
-WIDGET, BASE = uic.loadUiType(
- os.path.join(os.path.dirname(__file__), 'ui', 'sidcdialogbase.ui'))
+# WIDGET, BASE = uic.loadUiType(
+# os.path.join(os.path.dirname(__file__), 'ui', 'sidcdialogbase.ui'))
+from milstd2525.ui.sidcdialogbase import Ui_SidcDialog
+import milstd2525.symbolsets as symbol
+from collections import OrderedDict
# noinspection PyPep8Naming
-class SIDCDialog(BASE, WIDGET):
+# class SIDCDialog(BASE, WIDGET):
+class SIDCDialog(QDialog, Ui_SidcDialog):
- standardId1 = {
- "Reality": "0",
- "Exercise": "1",
- "Simulation": "2"
+ context = {
+ "0 Reality": "0",
+ "1 Exercise": "1",
+ "2 Simulation": "2"
}
- standardId2 = {
- "Pending": "0",
- "Unknown": "1",
- "Assumed Friend": "2",
- "Friend": "3",
- "Neutral": "4",
- "Suspect/Joker": "5",
- "Hostile/Faker": "6"
+ standardId = {
+ "0 Pending": "0",
+ "1 Unknown": "1",
+ "2 Assumed Friend": "2",
+ "3 Friend": "3",
+ "4 Neutral": "4",
+ "5 Suspect/Joker": "5",
+ "6 Hostile/Faker": "6"
}
symbolSet = {
- "Unspecified": "00",
- "Air": "01",
- "Air Missile": "02",
- "Space": "05",
- "Space Missile": "06",
- "Land Unit": "10",
- "Land Civilian Unit/Organization": "11",
- "Land Equipment": "15",
- "Land Installation": "20",
- "Sea Surface": "30",
- "Sea Subsurface": "35",
- "Mine Warfare": "36",
- "Activities": "40",
- "Oceanographic": "46",
- "Signals Intelligence - Space": "50",
- "Signals Intelligence - Air": "51",
- "Signals Intelligence - Land": "52",
- "Signals Intelligence - Surface": "53",
- "Signals Intelligence - Subsurface": "54",
- "Cyberspace": "60"
+ "00 Unspecified": "00",
+ "01 Air": "01",
+ "02 Air Missile": "02",
+ "05 Space": "05",
+ "06 Space Missile": "06",
+ "10 Land Unit": "10",
+ "11 Land Civilian Unit/Organization": "11",
+ "15 Land Equipment": "15",
+ "20 Land Installation": "20",
+ "30 Sea Surface": "30",
+ "35 Sea Subsurface": "35",
+ "36 Mine Warfare": "36",
+ "40 Activities": "40",
+ "45 Atmospheric": "45",
+ "46 Oceanographic": "46",
+ "50 Signals Intelligence - Space": "50",
+ "51 Signals Intelligence - Air": "51",
+ "52 Signals Intelligence - Land": "52",
+ "53 Signals Intelligence - Surface": "53",
+ "54 Signals Intelligence - Subsurface": "54",
+ "60 Cyberspace": "60"
}
status = {
- "Present": "0",
- "Planned/Anticipated/Suspect": "1",
- "Present/Fully capable": "2",
- "Present/Damaged": "3",
- "Present/Destroyed": "4",
- "Present/Full to capacity": "5"
+ "0 Present": "0",
+ "1 Planned/Anticipated/Suspect": "1",
+ "2 Present/Fully capable": "2",
+ "3 Present/Damaged": "3",
+ "4 Present/Destroyed": "4",
+ "5 Present/Full to capacity": "5"
}
hq = {
- "Unspecified": "0",
- "Feint/Dummy": "1",
- "Headquarters": "2",
- "Feint/Dummy Headquarters": "3",
- "Task Force": "4",
- "Feint/Dummy Task Force": "5",
- "Task Force Headquarters": "6",
- "Feint/Dummy Task Force Headquarters": "7"
+ "0 Unspecified": "0",
+ "1 Feint/Dummy": "1",
+ "2 Headquarters": "2",
+ "3 Feint/Dummy Headquarters": "3",
+ "4 Task Force": "4",
+ "5 Feint/Dummy Task Force": "5",
+ "6 Task Force Headquarters": "6",
+ "7 Feint/Dummy Task Force Headquarters": "7"
+ }
+
+ amplifier = {
+ "0 Not Applicable": "0",
+ "1 Echelon at brigade and below": "1",
+ "2 Echelon at division and above": "2",
+ "3 Equipment mobility on land": "3",
+ "4 Equipment mobility on snow": "4",
+ "5 Equipment mobility on water": "5",
+ "6 Naval towed array": "6"
+
}
- echelon = {
- "Unspecified": "00",
- "Team/Crew": "11",
- "Squad": "12",
- "Section": "13",
- "Platoon/detachment": "14",
- "Company/battery/troop": "15",
- "Battalion/squadron": "16",
- "Regiment/group": "17",
- "Brigade": "18",
- "Division": "21",
- "Corps/MEF": "22",
- "Army": "23",
- "Army Group/front": "24",
- "Region/Theater": "25",
- "Command": "26",
- "Wheeled limited cross country": "31",
- "Wheeled cross country": "32",
- "Tracked": "33",
- "Wheeled and tracked combination": "34",
- "Towed": "35",
- "Rail": "36",
- "Pack animals": "37",
- "Over snow (prime mover)": "41",
- "Sled": "42",
- "Barge": "51",
- "Amphibious": "52",
- "Short towed array": "61",
- "Long towed Array": "62"
+ descriptor = {
+ "0 Not Applicable": "0",
+ '1 Echelon at brigade and below': {
+ "1 Team/Crew": "1",
+ "2 Squad": "2",
+ "3 Section": "3",
+ "4 Platoon/detachment": "4",
+ "5 Company/battery/troop": "5",
+ "6 Battalion/squadron": "6",
+ "7 Regiment/group": "7",
+ "8 Brigade": "8",
+ },
+ '2 Echelon at division and above': {
+ "1 Division": "1",
+ "2 Corps/MEF": "2",
+ "3 Army": "3",
+ "4 Army Group/front": "4",
+ "5 Region/Theater": "5",
+ "6 Command": "6",
+ },
+ '3 Equipment mobility on land': {
+ "1 Wheeled limited cross country": "1",
+ "2 Wheeled cross country": "2",
+ "3 Tracked": "3",
+ "4 Wheeled and tracked combination": "4",
+ "5 Towed": "5",
+ "6 Rail": "6",
+ "7 Pack animals": "7",
+ },
+ '4 Equipment mobility on snow': {
+ "1 Over snow (prime mover)": "1",
+ "2 Sled": "2",
+ },
+ '5 Equipment mobility on water': {
+ "1 Barge": "1",
+ "2 Amphibious": "2",
+ },
+ '6 Naval towed array': {
+ "1 Short towed array": "1",
+ "2 Long towed Array": "2"
+ }
}
- entitySubtypes = {
- "Unspecified": "00",
- "HEADQUARTERS ELEMENT": "95",
- "DIVISION AND BELOW SUPPORT": "96",
- "CORPS SUPPORT": "97",
- "THEATER/ECHELONS ABOVE CORPS SUPPORT": "98"
+ descriptor0 = {
+ "0 Not Applicable": "0"
}
+ symbol_set = None
+
def __init__(self, code=""):
super(SIDCDialog, self).__init__()
self.setupUi(self)
- self.icons = {}
- self.m1 = {}
- self.m2 = {}
+ self.comboContext.addItems(self.context.keys())
+ self.comboStandardId.addItems(self.standardId.keys())
+ self.comboSymbolSet.addItems(self.symbolSet.keys())
+ self.comboStatus.addItems(self.status.keys())
+ self.comboHQ.addItems(self.hq.keys())
+ self.comboAmplifier.addItems(self.amplifier.keys())
+ self.comboDescriptor.addItems(self.descriptor0.keys())
+ self.comboEntity.addItems(symbol.SymbolSet().entity.keys())
+ self.comboEntityType.addItems(symbol.SymbolSet().entityType.keys())
+ self.comboEntitySubtype.addItems(symbol.SymbolSet().entitySubType.keys())
+ self.comboModifier1.addItems(symbol.SymbolSet().m1.keys())
+ self.comboModifier2.addItems(symbol.SymbolSet().m2.keys())
- self.comboStatus.addItems(sorted(self.status.keys()))
- self.comboStandardId1.addItems(sorted(self.standardId1.keys()))
- self.comboStandardId2.addItems(sorted(self.standardId2.keys()))
- self.comboSubtypes.addItems(sorted(self.entitySubtypes.keys()))
- self.comboEchelon.addItems(sorted(self.echelon.keys()))
- self.comboHQ.addItems(sorted(self.hq.keys()))
+ self.comboSymbolSet.currentIndexChanged.connect(self.symbolSetChanged)
+ self.comboAmplifier.currentIndexChanged.connect(self.amplifierChanged)
+ self.comboEntity.currentIndexChanged.connect(self.entityChanged)
+ self.comboEntityType.currentIndexChanged.connect(self.entityTypeChanged)
self.comboStatus.currentIndexChanged.connect(
self.computeCodeFromCombos)
- self.comboStandardId1.currentIndexChanged.connect(
+ self.comboContext.currentIndexChanged.connect(
+ self.computeCodeFromCombos)
+ self.comboStandardId.currentIndexChanged.connect(
+ self.computeCodeFromCombos)
+ self.comboSymbolSet.currentIndexChanged.connect(
self.computeCodeFromCombos)
- self.comboStandardId2.currentIndexChanged.connect(
+ self.comboEntity.currentIndexChanged.connect(
self.computeCodeFromCombos)
- self.comboSubtypes.currentIndexChanged.connect(
+ self.comboEntityType.currentIndexChanged.connect(
self.computeCodeFromCombos)
- self.comboEchelon.currentIndexChanged.connect(
+ self.comboEntitySubtype.currentIndexChanged.connect(
self.computeCodeFromCombos)
self.comboHQ.currentIndexChanged.connect(
self.computeCodeFromCombos)
@@ -168,12 +202,12 @@ def __init__(self, code=""):
self.computeCodeFromCombos)
self.comboModifier2.currentIndexChanged.connect(
self.computeCodeFromCombos)
- self.comboIcon.currentIndexChanged.connect(
+ self.comboAmplifier.currentIndexChanged.connect(
self.computeCodeFromCombos)
-
- self.comboSymbolSet.addItems(sorted(self.symbolSet.keys()))
- self.comboSymbolSet.currentIndexChanged.connect(self.symbolSetChanged)
- self.symbolSetChanged()
+ self.comboDescriptor.currentIndexChanged.connect(
+ self.computeCodeFromCombos)
+ # self.symbolSetChanged()
+ # self.amplifierChanged()
if code:
# noinspection PyBroadException
@@ -193,1706 +227,246 @@ def _setComboItem(self, combo, options, value):
combo.setCurrentIndex(idx)
def setValue(self, code):
- stdid1 = code[2]
- stdid2 = code[3]
+ context = code[2]
+ stdid = code[3]
symbolSet = code[4:6]
status = code[6]
hq = code[7]
- echelon = code[8:10]
- icon = code[10:16]
+ amplifier = code[8]
+ descriptor = code[9]
+ # icon = code[10:16]
+ entity = code[10:12]
+ entity_type = code[12:14]
+ entity_subtype = code[14:16]
m1 = code[16:18]
m2 = code[18:20]
- self._setComboItem(self.comboStandardId1, self.standardId1, stdid1)
- self._setComboItem(self.comboStandardId2, self.standardId2, stdid2)
+ self._setComboItem(self.comboContext, self.context, context)
+ self._setComboItem(self.comboStandardId, self.standardId, stdid)
self._setComboItem(self.comboSymbolSet, self.symbolSet, symbolSet)
self._setComboItem(self.comboStatus, self.status, status)
self._setComboItem(self.comboHQ, self.hq, hq)
- self._setComboItem(self.comboEchelon, self.echelon, echelon)
- self._setComboItem(self.comboIcon, self.icons, icon)
+ self._setComboItem(self.comboAmplifier, self.amplifier, amplifier)
+ self._setComboItem(self.comboDescriptor, self.descriptor, descriptor)
+ # self._setComboItem(self.comboDescriptor, self.icons, icon)
+ self._setComboItem(self.comboEntity, self.symbol_set.entity, entity)
+ self._setComboItem(self.comboEntityType, self.symbol_set.entityType, entity_type)
+ self._setComboItem(self.comboEntitySubtype, self.symbol_set.entitySubType, entity_subtype)
self._setComboItem(self.comboModifier1, self.m1, m1)
self._setComboItem(self.comboModifier2, self.m2, m2)
def computeCodeFromCombos(self):
symbolSet = self.symbolSet[self.comboSymbolSet.currentText()]
- icon = self.icons[self.comboIcon.currentText()]
- sidc = ("10" + self.standardId1[self.comboStandardId1.currentText()] +
- self.standardId2[self.comboStandardId2.currentText()] +
- symbolSet +
- self.status[self.comboStatus.currentText()] +
- self.hq[self.comboHQ.currentText()] +
- self.echelon[self.comboEchelon.currentText()] +
- icon +
- self.m1[self.comboModifier1.currentText()] +
- self.m2[self.comboModifier2.currentText()])
- if symbolSet == "10" and icon[4:6] == "00":
+ # descriptor = self.descriptor[self.comboAmplifier.currentText()]
+ ver = "10"
+ cont = self.context[self.comboContext.currentText()]
+ sid = self.standardId[self.comboStandardId.currentText()]
+ ss = symbolSet
+ stat = self.status[self.comboStatus.currentText()]
+ h = self.hq[self.comboHQ.currentText()]
+ amp = self.amplifier[self.comboAmplifier.currentText()]
+ desc = self.getDesc()
+ try:
+ ent = self.symbol_set.entity[self.comboEntity.currentText()]
+ except AttributeError:
+ ent = '00'
+ entType = self.getEntityType()
+ entSubType = self.getEntitySubType()
+ try:
+ m_1 = self.symbol_set.m1[self.comboModifier1.currentText()]
+ except AttributeError:
+ m_1 = '00'
+ try:
+ m_2 = self.symbol_set.m2[self.comboModifier2.currentText()]
+ except AttributeError:
+ m_2 = '00'
+
+ sidc = (ver + cont + sid + ss + stat + h + amp + desc + ent + entType + entSubType + m_1 + m_2)
+
+ # sidc = ("10" + self.context[self.comboContext.currentText()] +
+ # self.standardId[self.comboStandardId.currentText()] +
+ # symbolSet +
+ # self.status[self.comboStatus.currentText()] +
+ # self.hq[self.comboHQ.currentText()] +
+ # self.amplifier[self.comboAmplifier.currentText()] +
+ # desc +
+ # self.m1[self.comboModifier1.currentText()] +
+ # self.m2[self.comboModifier2.currentText()])
+
+ ampDesc = amp + desc
+
+ if symbolSet == "10" and ampDesc == "00":
sidc = sidc[:14] + \
- self.entitySubtypes[self.comboSubtypes.currentText()] + \
+ self.getSubType() + \
sidc[16:20]
self.txtCode.setText(sidc)
self.renderSymbol()
+ def getSubType(self):
+ try:
+ self.symbol_set.entitysubtypes(self.comboEntityType.currentText())
+ return self.symbol_set.entitySubType[self.comboEntitySubtype.currentText()]
+ except KeyError:
+ return '00'
+
+ def getEntityType(self):
+ if '00' in self.comboEntity.currentText():
+ return '00'
+ else:
+ try:
+ return self.symbol_set.entitytypes(self.comboEntity.currentText())[self.comboEntityType.currentText()]
+ except KeyError:
+ return '00'
+ except TypeError:
+ return '00'
+ # return self.symbol_set.entitytypes(self.comboEntity.currentText())
+
+ def getEntitySubType(self):
+ if '00' in self.comboEntityType.currentText():
+ return '00'
+ else:
+ try:
+ return self.symbol_set.entitysubtypes(self.comboEntityType.currentText())[self.comboEntitySubtype.currentText()]
+ except KeyError:
+ return '00'
+ except TypeError:
+ return '00'
+ # return self.symbol_set.entitysubtypes(self.comboEntityType.currentText())
+
+ def getDesc(self):
+ amp = self.comboAmplifier.currentText()
+ descriptor = self.comboDescriptor.currentText()
+
+ if '0' in amp and '0' in descriptor:
+ return '0'
+ else:
+ return self.descriptor[self.comboAmplifier.currentText()][self.comboDescriptor.currentText()]
+
+ def amplifierChanged(self):
+ self.comboDescriptor.blockSignals(True)
+ try:
+ descriptorDict = self.descriptor[self.comboAmplifier.currentText()]
+ self.comboDescriptor.clear()
+ self.comboDescriptor.addItems(descriptorDict.keys())
+ except KeyError as e:
+ self.comboDescriptor.clear()
+ self.comboDescriptor.blockSignals(False)
+
+ def entityChanged(self):
+ self.comboEntityType.blockSignals(True)
+ entityTypeDict = self.symbol_set.entitytypes(self.comboEntity.currentText())
+ if isinstance(entityTypeDict, dict):
+ self.symbol_set.entityType.update(entityTypeDict)
+ self.comboEntityType.clear()
+ self.comboEntityType.addItems(entityTypeDict.keys())
+ self.comboEntityType.blockSignals(False)
+
+ def entityTypeChanged(self):
+ self.comboEntitySubtype.blockSignals(True)
+ entitySubTypeDict = self.symbol_set.entitysubtypes(self.comboEntityType.currentText())
+ if isinstance(entitySubTypeDict, dict):
+ self.symbol_set.entitySubType.update(entitySubTypeDict)
+ self.comboEntitySubtype.clear()
+ self.comboEntitySubtype.addItems(entitySubTypeDict.keys())
+ self.comboEntitySubtype.blockSignals(False)
+
def symbolSetChanged(self):
- symbolSet = self.symbolSet[self.comboSymbolSet.currentText()]
+ self.comboSymbolSet.blockSignals(True)
+ selected_symbol_set = self.symbolSet[self.comboSymbolSet.currentText()]
# Air
- if symbolSet == "01":
- self.icons = {
- 'Military': '110000',
- 'Military.Fixed Wing': '110100',
- 'Military.Fixed Wing.Medical Evacuation (MEDEVAC)': '110101',
- 'Military.Fixed Wing.Attack/Strike': '110102',
- 'Military.Fixed Wing.Bomber': '110103',
- 'Military.Fixed Wing.Fighter': '110104',
- 'Military.Fixed Wing.Fighter/Bomber': '110105',
- 'Military.Fixed Wing.{reserved for future use}': '110106',
- 'Military.Fixed Wing.Cargo': '110107',
- 'Military.Fixed Wing.Electronic Combat (EC)/Jammer': '110108',
- 'Military.Fixed Wing.Tanker': '110109',
- 'Military.Fixed Wing.Patrol': '110110',
- 'Military.Fixed Wing.Reconnaissance': '110111',
- 'Military.Fixed Wing.Trainer': '110112',
- 'Military.Fixed Wing.Utility': '110113',
- 'Military.Fixed Wing.Vertical or Short Take-off and Landing (VSTOL)': '110114',
- 'Military.Fixed Wing.Airborne Command Post (ACP)': '110115',
- 'Military.Fixed Wing.Airborne Early Warning (AEW)': '110116',
- 'Military.Fixed Wing.Antisurface Warfare': '110117',
- 'Military.Fixed Wing.Antisubmarine Warfare': '110118',
- 'Military.Fixed Wing.Communications': '110119',
- 'Military.Fixed Wing.Combat Search and Rescue (CSAR)': '110120',
- 'Military.Fixed Wing.Electronic Support (ES)': '110121',
- 'Military.Fixed Wing.Government': '110122',
- 'Military.Fixed Wing.Mine Countermeasures (MCM)': '110123',
- 'Military.Fixed Wing.Personnel Recovery': '110124',
- 'Military.Fixed Wing.Search and Rescue': '110125',
- 'Military.Fixed Wing.Special Operations Forces': '110126',
- 'Military.Fixed Wing.Ultra Light': '110127',
- 'Military.Fixed Wing.Photographic Reconnaissance': '110128',
- 'Military.Fixed Wing.Very Important Person (VIP)': '110129',
- 'Military.Fixed Wing.Suppression of Enemy Air Defense': '110130',
- 'Military.Fixed Wing.Passenger': '110131',
- 'Military.Fixed Wing.Escort': '110132',
- 'Military.Fixed Wing.Electronic Attack (EA)': '110133',
- 'Military.Rotary Wing': '110200',
- 'Military.Unmanned Aircraft (UA) / Unmanned Aerial Vehicle (UAV) / Unmanned Aircraft System (UAS) / Remotely Piloted Vehicle (RPV)': '110300',
- 'Military.Vertical-Takeoff UAV (VT-UAV)': '110400',
- 'Military.Lighter Than Air': '110500',
- 'Military.Airship': '110600',
- 'Military.Tethered Lighter than Air': '110700',
- 'Civilian': '120000',
- 'Civilian.Fixed Wing': '120100',
- 'Civilian.Rotary Wing': '120200',
- 'Civilian.Unmanned Aircraft (UA) / Unmanned Aerial Vehicle (UAV) / Unmanned Aircraft System (UAS) / Remotely Piloted Vehicle (RPV)': '120300',
- 'Civilian.Lighter Than Air': '120400',
- 'Civilian.Airship': '120500',
- 'Civilian.Tethered Lighter than Air': '120600',
- 'Weapon': '130000',
- 'Weapon.Bomb': '130100',
- 'Weapon.Decoy': '130200',
- 'Manual Track': '140000'
- }
- self.m1 = {
- 'Not Applicable': '00',
- 'Attack/Strike': '01',
- 'Bomber': '02',
- 'Cargo': '03',
- 'Fighter': '04',
- 'Interceptor': '05',
- 'Tanker': '06',
- 'Utility': '07',
- 'Vertical or Short Take-off and Landing (VSTOL)/ Vertical Take-off and Landing (VTOL)': '08',
- 'Passenger': '09',
- 'Ultra Light': '10',
- 'Airborne Command Post (ACP)': '11',
- 'Airborne Early Warning (AEW)': '12',
- 'Government': '13',
- 'Medical Evacuation (MEDEVAC)': '14',
- 'Escort': '15',
- 'Electronic Combat (EC)/Jammer': '16',
- 'Patrol': '17',
- 'Reconnaissance': '18',
- 'Trainer': '19',
- 'Photographic (Reconnaissance)': '20',
- 'Personnel Recovery ': '21',
- 'Antisubmarine Warfare': '22',
- 'Communications': '23',
- 'Electronic Support (ES)': '24',
- 'Mine Countermeasures (MCM)': '25',
- 'Search and Rescue': '26',
- 'Special Operations Forces': '27',
- 'Surface Warfare': '28',
- 'Very Important Person (VIP) Transport': '29',
- 'Combat Search and Rescue (CSAR)': '30',
- 'Suppression of Enemy Air Defenses': '31',
- 'Antisurface Warfare': '32',
- 'Fighter/Bomber': '33',
- 'Intensive Care': '34',
- 'Electronic Attack (EA)': '35',
- 'Multimission': '36',
- 'Hijacking': '37',
- 'ASW Helo- LAMPS': '38',
- 'ASW Helo - SH-60R': '39'
- }
- self.m2 = {
- 'Not Applicable': '00',
- 'Heavy': '01',
- 'Medium': '02',
- 'Light': '03',
- 'Boom-Only': '04',
- 'Drogue-Only': '05',
- 'Boom and Drogue': '06',
- 'Close Range': '07',
- 'Short Range': '08',
- 'Medium Range': '09',
- 'Long Range': '10',
- 'Downlinked': '11'
- }
+ if selected_symbol_set == "01":
+ self.symbol_set = symbol.Air()
# Air Missile
- if symbolSet == "02":
- self.icons = {'Missile': '110000'}
- self.m1 = {
- 'Unspecified': '00',
- 'Air': '01',
- 'Surface': '02',
- 'Subsurface': '03',
- 'Space': '04',
- 'Anti-Ballistic': '05',
- 'Ballistic': '06',
- 'Cruise': '07',
- 'Interceptor': '08'
- }
- self.m2 = {
- 'Unspecified': '00',
- 'Air': '01',
- 'Surface': '02',
- 'Subsurface': '03',
- 'Space': '04',
- 'Launched': '05',
- 'Missile': '06',
- 'Patriot': '07',
- 'Standard Missile-2 (SM-2)': '08',
- 'Standard Missile-6 (SM-6)': '09',
- 'Evolved Sea Sparrow Missile (ESSM)': '10',
- 'Rolling Airframe Missile (RAM)': '11',
- 'Short Range': '12',
- 'Medium Range': '13',
- 'Intermediate Range': '14',
- 'Long Range': '15',
- 'Intercontinental': '16'
- }
+ if selected_symbol_set == "02":
+ self.symbol_set = symbol.AirMissle()
# Space
- if symbolSet == "05":
- self.icons = {
- 'Military': '110000',
- 'Military.Space Vehicle': '110100',
- 'Military.Re-Entry Vehicle': '110200',
- 'Military.Planet Lander': '110300',
- 'Military.Orbiter Shuttle': '110400',
- 'Military.Capsule': '110500',
- 'Military.Satellite, General': '110600',
- 'Military.Satellite': '110700',
- 'Military.Antisatellite Weapon': '110800',
- 'Military.Astronomical Satellite': '110900',
- 'Military.Biosatellite': '111000',
- 'Military.Communications Satellite': '111100',
- 'Military.Earth Observation Satellite': '111200',
- 'Military.Miniaturized Satellite': '111300',
- 'Military.Navigational Satellite': '111400',
- 'Military.Reconnaissance Satellite': '111500',
- 'Military.Space Station': '111600',
- 'Military.Tethered Satellite': '111700',
- 'Military.Weather Satellite': '111800',
- 'Military.Space Launched Vehicle (SLV)': '111900',
- 'Civilian': '120000',
- 'Civilian.Orbiter Shuttle': '120100',
- 'Civilian.Capsule': '120200',
- 'Civilian.Satellite': '120300',
- 'Civilian.Astronomical Satellite': '120400',
- 'Civilian.Biosatellite': '120500',
- 'Civilian.Communications Satellite': '120600',
- 'Civilian.Earth Observation Satellite': '120700',
- 'Civilian.Miniaturized Satellite': '120800',
- 'Civilian.Navigational Satellite': '120900',
- 'Civilian.Space Station': '121000',
- 'Civilian.Tethered Satellite': '121100',
- 'Civilian.Weather Satellite': '121200',
- 'Manual Track': '130000'
- }
- self.m1 = {
- 'Unspecified': '00',
- 'Low Earth Orbit (LEO)': '01',
- 'Medium Earth Orbit (MEO)': '02',
- 'High Earth Orbit (HEO)': '03',
- 'Geosynchronous Orbit (GSO)': '04',
- 'Geostationary Orbit (GO)': '05',
- 'Molniya Orbit (MO)': '06'
- }
- self.m2 = {
- 'Unspecified': '00',
- 'Optical': '01',
- 'Infrared': '02',
- 'Radar': '03',
- 'Signals Intelligence (SIGINT)': '04'
- }
+ if selected_symbol_set == "05":
+ self.symbol_set = symbol.Space()
# Space Missile
- if symbolSet == "06":
- self.icons = {'Missile': '110000'}
- self.m1 = {
- 'Unspecified': '00',
- 'Ballistic': '01',
- 'Space': '02',
- 'Interceptor': '03',
- 'Reserved for Future Use': '04-98'
- }
- self.m2 = {
- 'Unspecified': '00',
- 'Short Range': '01',
- 'Medium Range': '02',
- 'Intermediate Range': '03',
- 'Long Range': '04',
- 'Intercontinental ': '05',
- 'Arrow': '06',
- 'Ground-Based Interceptor (GBI)': '07',
- 'Patriot': '08',
- 'Standard Missile Terminal Phase (SM-T)': '09',
- 'Standard Missile - 3 (SM-3)': '10',
- 'Terminal High Altitude Area Defense (THAAD)': '11',
- 'Space': '12'
- }
+ if selected_symbol_set == "06":
+ self.symbol_set = symbol.SpaceMissle()
# Land Unit
- if symbolSet == "10":
- self.icons = {
- 'Command and Control': '110000',
- 'Command and Control.Broadcast Transmitter Antennae': '110100',
- 'Command and Control.Civil Affairs ': '110200',
- 'Command and Control.Civil-Military Cooperation ': '110300',
- 'Command and Control.Information Operations': '110400',
- 'Command and Control.Liaison': '110500',
- 'Command and Control.Military Information Support Operations (MISO)': '110600',
- 'Command and Control.Military Information Support Operations (MISO).Broadcast Transmitter Antennae': '110601',
- 'Command and Control.Radio': '110700',
- 'Command and Control.Radio Relay': '110800',
- 'Command and Control.Radio Teletype Center': '110900',
- 'Command and Control.Signal': '111000',
- 'Command and Control.Signal.Radio': '111001',
- 'Command and Control.Signal.Radio Relay': '111002',
- 'Command and Control.Signal.Teletype': '111003',
- 'Command and Control.Signal.Tactical Satellite ': '111004',
- 'Command and Control.Signal.Video Imagery (Combat Camera)': '111005',
- 'Command and Control.Signal.Headquarters Element': '111095',
- 'Command and Control.Signal.Corps Support ': '111097',
- 'Command and Control.Signal.Theatre/Echelons Above Corps Support': '111098',
- 'Command and Control.Tactical Satellite': '111100',
- 'Command and Control.Video Imagery (Combat Camera)': '111200',
- 'Movement and Maneuver': '120000',
- 'Movement and Maneuver.Air Assault with Organic Lift': '120100',
- 'Movement and Maneuver.Air Traffic Services/Airfield Operations': '120200',
- 'Movement and Maneuver.Amphibious': '120300',
- 'Movement and Maneuver.Antitank/Antiarmor': '120400',
- 'Movement and Maneuver.Antitank/Antiarmor.Armored': '120401',
- 'Movement and Maneuver.Antitank/Antiarmor.Motorized': '120402',
- 'Movement and Maneuver.Armor/Armored/Mechanized/Self-Propelled/ Tracked': '120500',
- 'Movement and Maneuver.Armor/Armored/Mechanized/Self-Propelled/ Tracked.Reconnaissance/Cavalry/Scout': '120501',
- 'Movement and Maneuver.Armor/Armored/Mechanized/Self-Propelled/ Tracked.Amphibious': '120502',
- 'Movement and Maneuver.Armor/Armored/Mechanized/Self-Propelled/ Tracked.Headquarters Element': '120595',
- 'Movement and Maneuver.Army Aviation/Aviation Rotary Wing': '120600',
- 'Movement and Maneuver.Army Aviation/Aviation Rotary Wing.Reconnaissance': '120601',
- 'Movement and Maneuver.Army Aviation/Aviation Rotary Wing.Headquarters Element': '120695',
- 'Movement and Maneuver.Army Aviation/Aviation Rotary Wing.Corps Support': '120697',
- 'Movement and Maneuver.Army Aviation/Aviation Rotary Wing.Theatre/Echelons Above Corps Support': '120698',
- 'Movement and Maneuver.Aviation Composite': '120700',
- 'Movement and Maneuver.Aviation Composite.Headquarters Element': '120795',
- 'Movement and Maneuver.Aviation Fixed Wing': '120800',
- 'Movement and Maneuver.Aviation Fixed Wing.Reconnaissance': '120801',
- 'Movement and Maneuver.Aviation Fixed Wing.Headquarters Element': '120895',
- 'Movement and Maneuver.Combat': '120900',
- 'Movement and Maneuver.Combined Arms': '121000',
- 'Movement and Maneuver.Combined Arms.Headquarters Element': '121095',
- 'Movement and Maneuver.Infantry': '121100',
- 'Movement and Maneuver.Infantry.Amphibious': '121101',
- 'Movement and Maneuver.Infantry.Armored/Mechanized/Tracked': '121102',
- 'Movement and Maneuver.Infantry.Main Gun System ': '121103',
- 'Movement and Maneuver.Infantry.Motorized ': '121104',
- 'Movement and Maneuver.Infantry.Infantry Fighting Vehicle': '121105',
- 'Movement and Maneuver.Infantry.Headquarters Element ': '121195',
- 'Movement and Maneuver.Observer': '121200',
- 'Movement and Maneuver.Reconnaissance/Cavalry/Scout': '121300',
- 'Movement and Maneuver.Reconnaissance/Cavalry/Scout.Reconnaissance and Surveillance': '121301',
- 'Movement and Maneuver.Reconnaissance/Cavalry/Scout.Marine': '121302',
- 'Movement and Maneuver.Reconnaissance/Cavalry/Scout.Motorized': '121303',
- 'Movement and Maneuver.Reconnaissance/Cavalry/Scout.Headquarters Element': '121395',
- 'Movement and Maneuver.Sea Air Land (SEAL)': '121400',
- 'Movement and Maneuver.Sniper': '121500',
- 'Movement and Maneuver.Surveillance': '121600',
- 'Movement and Maneuver.Special Forces': '121700',
- 'Movement and Maneuver.Special Forces.Headquarters Element': '121795',
- 'Movement and Maneuver.Special Operations Forces (SOF)': '121800',
- 'Movement and Maneuver.Special Operations Forces (SOF).Fixed Wing MISO': '121801',
- 'Movement and Maneuver.Special Operations Forces (SOF).Ground': '121802',
- 'Movement and Maneuver.Special Operations Forces (SOF).Special Boat': '121803',
- 'Movement and Maneuver.Special Operations Forces (SOF).Special SSNR': '121804',
- 'Movement and Maneuver.Special Operations Forces (SOF).Underwater Demolition Team': '121805',
- 'Movement and Maneuver.Unmanned Aerial Systems': '121900',
- 'Fires': '130000',
- 'Fires.Air Defense': '130100',
- 'Fires.Air Defense.Main Gun System': '130101',
- 'Fires.Air Defense.Missile': '130102',
- 'Fires.Air Defense.Headquarters Element': '130195',
- 'Fires.Air/Land Naval Gunfire Liaison': '130200',
- 'Fires.Field Artillery': '130300',
- 'Fires.Field Artillery.Self-propelled': '130301',
- 'Fires.Field Artillery.Target Acquition': '130302',
- 'Fires.Field Artillery.Headquarters Element': '130395',
- 'Fires.Field Artillery Observer': '130400',
- 'Fires.Joint Fire Support': '130500',
- 'Fires.Meteorological': '130600',
- 'Fires.Missile': '130700',
- 'Fires.Mortar': '130800',
- 'Fires.Mortar.Armored/Mechanized/Tracked': '130801',
- 'Fires.Mortar.Self-Propelled Wheeled': '130802',
- 'Fires.Mortar.Towed': '130803',
- 'Fires.Survey': '130900',
- 'Protection': '140000',
- 'Protection.Chemical Biological Radiological Nuclear Defense': '140100',
- 'Protection.Chemical Biological Radiological Nuclear Defense.Mechanized': '140101',
- 'Protection.Chemical Biological Radiological Nuclear Defense.Motorized': '140102',
- 'Protection.Chemical Biological Radiological Nuclear Defense.Reconnaissance': '140103',
- 'Protection.Chemical Biological Radiological Nuclear Defense.Reconnaissance Armored': '140104',
- 'Protection.Chemical Biological Radiological Nuclear Defense.Reconnaissance Equiped': '140105',
- 'Protection.Chemical Biological Radiological Nuclear Defense.Headquarters Element': '140195',
- 'Protection.Combat Support (Maneuver Enhancement)': '140200',
- 'Protection.Combat Support (Maneuver Enhancement).Headquarters Element': '140295',
- 'Protection.Criminal Investigation Division': '140300',
- 'Protection.Diving': '140400',
- 'Protection.Dog': '140500',
- 'Protection.Drilling': '140600',
- 'Protection.Engineer': '140700',
- 'Protection.Engineer.Mechanized': '140701',
- 'Protection.Engineer.Motorized': '140702',
- 'Protection.Engineer.Reconnaissance': '140703',
- 'Protection.Engineer.Headquarters Element': '140795',
- 'Protection.Explosive Ordnance Disposal (EOD)': '140800',
- 'Protection.Field Camp Construction': '140900',
- 'Protection.Fire Fighting/Fire Protection': '141000',
- 'Protection.Geospatial Support/Geospatial Information Support': '141100',
- 'Protection.Military Police': '141200',
- 'Protection.Military Police.Headquarters Element': '141295',
- 'Protection.Mine': '141300',
- 'Protection.Mine Clearing': '141400',
- 'Protection.Mine Launching': '141500',
- 'Protection.Mine Laying': '141600',
- 'Protection.Security': '141700',
- 'Protection.Security.Mechanized': '141701',
- 'Protection.Security.Motorized': '141702',
- 'Protection.Search and Rescue': '141800',
- 'Protection.Security Police (Air)': '141900',
- 'Protection.Shore Patrol': '142000',
- 'Protection.Topographic': '142100',
- 'Intelligence': '150000',
- 'Intelligence.Analysis': '150100',
- 'Intelligence.Counterintelligence': '150200',
- 'Intelligence.Direction Finding': '150300',
- 'Intelligence.Electronic Ranging': '150400',
- 'Intelligence.Electronic Warfare': '150500',
- 'Intelligence.Electronic Warfare.Analysis': '150501',
- 'Intelligence.Electronic Warfare.Direction Finding': '150502',
- 'Intelligence.Electronic Warfare.Intercept': '150503',
- 'Intelligence.Electronic Warfare.Jamming': '150504',
- 'Intelligence.Electronic Warfare.Search': '150505',
- 'Intelligence.Intercept (Search and Recording)': '150600',
- 'Intelligence.Interrogation': '150700',
- 'Intelligence.Jamming': '150800',
- 'Intelligence.Joint Intelligence Center': '150900',
- 'Intelligence.Military Intelligence': '151000',
- 'Intelligence.Military Intelligence.Headquarters Element': '151095',
- 'Intelligence.Search': '151100',
- 'Intelligence.Sensor': '151200',
- 'Sustainment': '160000',
- 'Sustainment.Headquarters Element ': '160095',
- 'Sustainment.Corps Support ': '160097',
- 'Sustainment.Theatre/Echelons Above Corps Support': '160098',
- 'Sustainment.Administrative': '160100',
- 'Sustainment.Administrative.Corps Support': '160197',
- 'Sustainment.Administrative.Theatre/Echelons Above Corps Support': '160198',
- 'Sustainment.All Classes of Supply': '160200',
- 'Sustainment.Airport of Debarkation/Airport of Embarkation ': '160300',
- 'Sustainment.Ammunition': '160400',
- 'Sustainment.Band': '160500',
- 'Sustainment.Combat Service Support': '160600',
- 'Sustainment.Finance': '160700',
- 'Sustainment.Finance.Corps Support': '160797',
- 'Sustainment.Finance.Theatre/Echelons Above Corps Support': '160798',
- 'Sustainment.Judge Advocate General': '160800',
- 'Sustainment.Labor': '160900',
- 'Sustainment.Laundry/Bath': '161000',
- 'Sustainment.Maintenance': '161100',
- 'Sustainment.Maintenance.Headquarters Element ': '161195',
- 'Sustainment.Maintenance.Corps Support ': '161197',
- 'Sustainment.Maintenance.Theatre/Echelons Above Corps Support': '161198',
- 'Sustainment.Material': '161200',
- 'Sustainment.Medical': '161300',
- 'Sustainment.Medical.Headquarters Element ': '161395',
- 'Sustainment.Medical.Corps Support ': '161397',
- 'Sustainment.Medical.Theatre/Echelons Above Corps Support': '161398',
- 'Sustainment.Medical Treatment Facility': '161400',
- 'Sustainment.Morale, Welfare and Recreation': '161500',
- 'Sustainment.Mortuary Affairs/Graves Registration': '161600',
- 'Sustainment.Multiple Classes of Supply': '161700',
- 'Sustainment.NATO Supply Class I': '161800',
- 'Sustainment.NATO Supply Class II': '161900',
- 'Sustainment.NATO Supply Class III': '162000',
- 'Sustainment.NATO Supply Class IV': '162100',
- 'Sustainment.NATO Supply Class V': '162200',
- 'Sustainment.Ordnance': '162300',
- 'Sustainment.Ordnance.Headquarters Element ': '162395',
- 'Sustainment.Ordnance.Corps Support ': '162397',
- 'Sustainment.Ordnance.Theatre/Echelons Above Corps Support': '162398',
- 'Sustainment.Personnel Services': '162400',
- 'Sustainment.Personnel Services.Headquarters Element': '162495',
- 'Sustainment.Petroleum, Oil and Lubricants': '162500',
- 'Sustainment.Pipeline': '162600',
- 'Sustainment.Postal': '162700',
- 'Sustainment.Public Affairs/Public Information': '162800',
- 'Sustainment.Quartermaster': '162900',
- 'Sustainment.Quartermaster.Headquarters Element ': '162995',
- 'Sustainment.Quartermaster.Corps Support ': '162997',
- 'Sustainment.Quartermaster.Theatre/Echelons Above Corps Support': '162998',
- 'Sustainment.Railhead': '163000',
- 'Sustainment.Religious Support': '163100',
- 'Sustainment.Replacement Holding Unit': '163200',
- 'Sustainment.Sea Port of Debarkation/Sea Port of Embarkation ': '163300',
- 'Sustainment.Supply': '163400',
- 'Sustainment.Joint Information Bureau': '163500',
- 'Sustainment.Joint Information Bureau.Corps Support ': '163597',
- 'Sustainment.Joint Information Bureau.Theatre/Echelons Above Corps Support': '163598',
- 'Sustainment.Transportation': '163600',
- 'Sustainment.Transportation.Headquarters Element ': '163695',
- 'Sustainment.Transportation.Corps Support ': '163697',
- 'Sustainment.Transportation.Theatre/Echelons Above Corps Support': '163698',
- 'Sustainment.US Supply Class I': '163700',
- 'Sustainment.US Supply Class II': '163800',
- 'Sustainment.US Supply Class III': '163900',
- 'Sustainment.US Supply Class IV': '164000',
- 'Sustainment.US Supply Class V': '164100',
- 'Sustainment.US Supply Class VI': '164200',
- 'Sustainment.US Supply Class VII': '164300',
- 'Sustainment.US Supply Class VIII': '164400',
- 'Sustainment.US Supply Class IX': '164500',
- 'Sustainment.US Supply Class X': '164600',
- 'Sustainment.Water': '164700',
- 'Sustainment.Water Purification': '164800',
- 'Sustainment.Broadcast': '164900',
- 'Naval ': '170000',
- 'Naval .Naval': '170100',
- 'Named Headquarters': '180000',
- 'Named Headquarters.Allied Command Europe Rapid Reaction Corps (ARRC)': '180100',
- 'Named Headquarters.Allied Command Operations': '180200',
- 'Named Headquarters.International Security Assistance Force (ISAF)': '180300',
- 'Named Headquarters.Multinational (MN)': '180400',
- 'Emergency Operation': '190000',
- 'Law Enforcement': '200000',
- 'Law Enforcement.Bureau of Alcohol, Tobacco, Firearms and Explosives (ATF) (Department of Justice)': '200100',
- 'Law Enforcement.Border Patrol': '200200',
- 'Law Enforcement.Customs Service': '200300',
- 'Law Enforcement.Drug Enforcement Administration (DEA)': '200400',
- 'Law Enforcement.Department of Justice (DOJ)': '200500',
- 'Law Enforcement.Federal Bureau of Investigation (FBI)': '200600',
- 'Law Enforcement.Police': '200700',
- 'Law Enforcement.Prison': '200800',
- 'Law Enforcement.United States Secret Service (USSS)': '200900',
- 'Law Enforcement.Transportation Security Administration (TSA)': '201000',
- 'Law Enforcement.Coast Guard': '201100',
- 'Law Enforcement.US Marshals Service': '201200',
- 'Law Enforcement.Internal Security Force': '201300'
- }
- self.m1 = {
- 'Unspecified': '00',
- 'Air Mobile/Air Assault (US only)': '01',
- 'Area': '02',
- 'Attack': '03',
- 'Biological': '04',
- 'Border': '05',
- 'Bridging': '06',
- 'Chemical': '07',
- 'Close Protection': '08',
- 'Combat': '09',
- 'Command and Control': '10',
- 'Communications Contingency Package': '11',
- 'Construction': '12',
- 'Cross Cultural Communication': '13',
- 'Crowd and Riot Control': '14',
- 'Decontamination': '15',
- 'Detention': '16',
- 'Direct Communications': '17',
- 'Diving': '18',
- 'Division': '19',
- 'Dog': '20',
- 'Drilling': '21',
- 'Electro-Optical': '22',
- 'Enhanced': '23',
- 'Explosive Ordnance Disposal (EOD)': '24',
- 'Fire Direction Center': '25',
- 'Force': '26',
- 'Forward': '27',
- 'Ground Station Module': '28',
- 'Landing Support': '29',
- 'Large Extension Node': '30',
- 'Maintenance': '31',
- 'Meteorological': '32',
- 'Mine Countermeasure': '33',
- 'Missile': '34',
- 'Mobile Advisor and Support': '35',
- 'Mobile Subscriber Equipment': '36',
- 'Mobility Support': '37',
- 'Movement Control Center': '38',
- 'Multinational': '39',
- 'Multinational Specialized Unit': '40',
- 'Multiple Rocket Launcher': '41',
- 'NATO Medical Role 1 ': '42',
- 'NATO Medical Role 2': '43',
- 'NATO Medical Role 3': '44',
- 'NATO Medical Role 4': '45',
- 'Naval': '46',
- 'Node Center': '47',
- 'Nuclear': '48',
- 'Operations': '49',
- 'Radar': '50',
- 'Radio Frequency Identification (RFID) Interrogator / Sensor': '51',
- 'Radiological': '52',
- 'Search and Rescue': '53',
- 'Security': '54',
- 'Sensor': '55',
- 'Sensor Control Module (SCM)': '56',
- 'Signals Intelligence': '57',
- 'Single Shelter Switch': '58',
- 'Single Rocket Launcher': '59',
- 'Smoke': '60',
- 'Sniper': '61',
- 'Sound Ranging': '62',
- 'Special Operations Forces (SOF)': '63',
- 'Special Weapons and Tactics': '64',
- 'Survey': '65',
- 'Tactical Exploitation': '66',
- 'Target Acquisition': '67',
- 'Topographic': '68',
- 'Utility': '69',
- 'Video Imagery (Combat Camera)': '70',
- 'Accident': '71',
- 'Other': '72',
- 'Civilian': '73',
- 'Antisubmarine Warfare': '74',
- 'Medevac': '75',
- 'Ranger': '76',
- 'Support': '77',
- 'Aviation': '78'
- }
- self.m2 = {
- 'Unspecified': '00',
- 'Airborne': '01',
- 'Arctic': '02',
- 'Battle Damage Repair': '03',
- 'Bicycle Equipped': '04',
- 'Casualty Staging': '05',
- 'Clearing': '06',
- 'Close Range': '07',
- 'Control': '08',
- 'Decontamination': '09',
- 'Demolition': '10',
- 'Dental': '11',
- 'Digital': '12',
- 'Enhanced Position Location Reporting System (EPLRS)': '13',
- 'Equipment': '14',
- 'Heavy': '15',
- 'High Altitude': '16',
- 'Intermodal': '17',
- 'Intensive Care': '18',
- 'Light': '19',
- 'Laboratory': '20',
- 'Launcher': '21',
- 'Long Range': '22',
- 'Low Altitude': '23',
- 'Medium': '24',
- 'Medium Altitude': '25',
- 'Medium Range': '26',
- 'Mountain': '27',
- 'High to Medium Altitude': '28',
- 'Multi�Channel': '29',
- 'Optical (Flash)': '30',
- 'Pack Animal': '31',
- 'Patient Evacuation Coordination': '32',
- 'Preventive Maintenance': '33',
- 'Psychological': '34',
- 'Radio Relay Line of Sight': '35',
- 'Railroad': '36',
- 'Recovery (Unmanned Systems)': '37',
- 'Recovery (Maintenance)': '38',
- 'Rescue Coordination Center': '39',
- 'Riverine': '40',
- 'Single Channel': '41',
- 'Ski': '42',
- 'Short Range': '43',
- 'Strategic': '44',
- 'Support': '45',
- 'Tactical': '46',
- 'Towed': '47',
- 'Troop': '48',
- 'Vertical or Short Take�Off and Landing (VTOL/VSTOL)': '49',
- 'Veterinary': '50',
- 'Wheeled': '51',
- 'High to Low Altitude': '52',
- 'Medium to Low Altitude': '53',
- 'Attack': '54',
- 'Refuel': '55',
- 'Utility': '56',
- 'Combat Search and Rescue': '57'
- }
+ if selected_symbol_set == "10":
+ self.symbol_set = symbol.LandUnit()
# Land civilian unit
- if symbolSet == "11":
- self.icons = {
- 'Civilian': '110000',
- 'Civilian.Environmental Protection': '110100',
- 'Civilian.Governmental Organization': '110200',
- 'Civilian.Individual': '110300',
- 'Civilian.Organization or Group': '110400',
- 'Civilian.Killing Victim': '110500',
- 'Civilian.Killing Victims': '110600',
- 'Civilian.Victim of an Attempted Crime': '110700',
- 'Civilian.Spy': '110800',
- 'Civilian.Composite Loss': '110900',
- 'Civilian.Emergency Medical Operation': '111000'
- }
- self.m1 = {
- 'Unspecified': '00',
- 'Assassination': '01',
- 'Execution (Wrongful Killing)': '02',
- 'Murder Victims': '03',
- 'Hijacking': '04',
- 'Kidnapping': '05',
- 'Piracy': '06',
- 'Rape': '07',
- 'Civilian': '08',
- 'Displaced Person(s), Refugee(s) and Evacuee(s)': '09',
- 'Foreign Fighter(s)': '10',
- 'Gang Member or Gang': '11',
- 'Government Organization': '12',
- 'Leader or Leadership': '13',
- 'Nongovernmental Organization Member or Nongovernmental Organization': '14',
- 'Coerced/Impressed Recruit': '15',
- 'Willing Recruit': '16',
- 'Religious or Religious Organization': '17',
- 'Targeted Individual or Organization': '18',
- 'Terrorist or Terrorist Organization': '19',
- 'Speaker': '20',
- 'Accident': '21',
- 'Combat': '22',
- 'Other': '23',
- 'Loot': '24'
- }
- self.m2 = {'Unspecified': '00', 'Leader or Leadership': '01'}
+ if selected_symbol_set == "11":
+ self.symbol_set = symbol.LandCivilianUnit()
# Land Equipment
- if symbolSet == "15":
- self.icons = {
- 'Weapons/Weapons System': '110000',
- 'Weapons/Weapons System.Rifle': '110100',
- 'Weapons/Weapons System.Rifle.Single Shot Rifle': '110101',
- 'Weapons/Weapons System.Rifle.Semiautomatic Rifle': '110102',
- 'Weapons/Weapons System.Rifle.Automatic Rifle': '110103',
- 'Weapons/Weapons System.Machine Gun': '110200',
- 'Weapons/Weapons System.Machine Gun.Light ': '110201',
- 'Weapons/Weapons System.Machine Gun.Medium ': '110202',
- 'Weapons/Weapons System.Machine Gun.Heavy': '110203',
- 'Weapons/Weapons System.Grenade Launcher': '110300',
- 'Weapons/Weapons System.Grenade Launcher.Light': '110301',
- 'Weapons/Weapons System.Grenade Launcher.Medium': '110302',
- 'Weapons/Weapons System.Grenade Launcher.Heavy': '110303',
- 'Weapons/Weapons System.Flame Thrower': '110400',
- 'Weapons/Weapons System.Air Defense Gun': '110500',
- 'Weapons/Weapons System.Air Defense Gun.Light': '110501',
- 'Weapons/Weapons System.Air Defense Gun.Medium': '110502',
- 'Weapons/Weapons System.Air Defense Gun.Heavy': '110503',
- 'Weapons/Weapons System.Antitank Gun': '110600',
- 'Weapons/Weapons System.Antitank Gun.Light': '110601',
- 'Weapons/Weapons System.Antitank Gun.Medium': '110602',
- 'Weapons/Weapons System.Antitank Gun.Heavy': '110603',
- 'Weapons/Weapons System.Direct Fire Gun': '110700',
- 'Weapons/Weapons System.Direct Fire Gun.Light': '110701',
- 'Weapons/Weapons System.Direct Fire Gun.Medium': '110702',
- 'Weapons/Weapons System.Direct Fire Gun.Heavy': '110703',
- 'Weapons/Weapons System.Recoilless Gun': '110800',
- 'Weapons/Weapons System.Recoilless Gun.Light': '110801',
- 'Weapons/Weapons System.Recoilless Gun.Medium': '110802',
- 'Weapons/Weapons System.Recoilless Gun.Heavy': '110803',
- 'Weapons/Weapons System.Howitzer': '110900',
- 'Weapons/Weapons System.Howitzer.Light': '110901',
- 'Weapons/Weapons System.Howitzer.Medium': '110902',
- 'Weapons/Weapons System.Howitzer.Heavy': '110903',
- 'Weapons/Weapons System.Missile Launcher': '111000',
- 'Weapons/Weapons System.Missile Launcher.Light': '111001',
- 'Weapons/Weapons System.Missile Launcher.Medium': '111002',
- 'Weapons/Weapons System.Missile Launcher.Heavy': '111003',
- 'Weapons/Weapons System.Air Defense Missile Launcher': '111100',
- 'Weapons/Weapons System.Air Defense Missile Launcher.Light': '111101',
- 'Weapons/Weapons System.Air Defense Missile Launcher.Light, Light Transporter-Launcher and Radar (TLAR)': '111102',
- 'Weapons/Weapons System.Air Defense Missile Launcher.Light, Light Tactical Landing Approach Radar (TELAR)': '111103',
- 'Weapons/Weapons System.Air Defense Missile Launcher.Medium': '111104',
- 'Weapons/Weapons System.Air Defense Missile Launcher.Medium, TLAR': '111105',
- 'Weapons/Weapons System.Air Defense Missile Launcher.Medium, TELAR': '111106',
- 'Weapons/Weapons System.Air Defense Missile Launcher.Heavy': '111107',
- 'Weapons/Weapons System.Air Defense Missile Launcher.Heavy, TLAR': '111108',
- 'Weapons/Weapons System.Air Defense Missile Launcher.Heavy, TELAR': '111109',
- 'Weapons/Weapons System.Antitank Missile Launcher': '111200',
- 'Weapons/Weapons System.Antitank Missile Launcher.Light': '111201',
- 'Weapons/Weapons System.Antitank Missile Launcher.Medium': '111202',
- 'Weapons/Weapons System.Antitank Missile Launcher.Heavy': '111203',
- 'Weapons/Weapons System.Surface-to-Surface Missile Launcher': '111300',
- 'Weapons/Weapons System.Surface-to-Surface Missile Launcher.Light': '111301',
- 'Weapons/Weapons System.Surface-to-Surface Missile Launcher.Medium': '111302',
- 'Weapons/Weapons System.Surface-to-Surface Missile Launcher.Heavy': '111303',
- 'Weapons/Weapons System.Mortar': '111400',
- 'Weapons/Weapons System.Mortar.Light': '111401',
- 'Weapons/Weapons System.Mortar.Medium': '111402',
- 'Weapons/Weapons System.Mortar.Heavy': '111403',
- 'Weapons/Weapons System.Single Rocket Launcher': '111500',
- 'Weapons/Weapons System.Single Rocket Launcher.Light': '111501',
- 'Weapons/Weapons System.Single Rocket Launcher.Medium': '111502',
- 'Weapons/Weapons System.Single Rocket Launcher.Heavy': '111503',
- 'Weapons/Weapons System.Multiple Rocket Launcher': '111600',
- 'Weapons/Weapons System.Multiple Rocket Launcher.Light': '111601',
- 'Weapons/Weapons System.Multiple Rocket Launcher.Medium': '111602',
- 'Weapons/Weapons System.Multiple Rocket Launcher.Heavy': '111603',
- 'Weapons/Weapons System.Antitank Rocket Launcher': '111701',
- 'Weapons/Weapons System.Antitank Rocket Launcher.Light': '111701',
- 'Weapons/Weapons System.Antitank Rocket Launcher.Medium': '111702',
- 'Weapons/Weapons System.Antitank Rocket Launcher.Heavy': '111703',
- 'Weapons/Weapons System.Nonlethal Weapon': '111800',
- 'Weapons/Weapons System.Taser': '111900',
- 'Weapons/Weapons System.Water Cannon': '112000',
- 'Vehicle': '120000',
- 'Vehicle.Armored': '120100',
- 'Vehicle.Armored.Armored Fighting Vehicle': '120101',
- 'Vehicle.Armored.Armored Fighting Vehicle Command and Control': '120102',
- 'Vehicle.Armored.Armored Personnel Carrier': '120103',
- 'Vehicle.Armored.Armored Personnel Carrier Ambulance': '120104',
- 'Vehicle.Armored.Armored Protected Vehicle': '120105',
- 'Vehicle.Armored.Armored Protected Vehicle Recovery': '120106',
- 'Vehicle.Armored.Armored Protected Vehicle Medical Evacuation': '120107',
- 'Vehicle.Armored.Armored Personnel Carrier, Recovery': '120108',
- 'Vehicle.Armored.Combat Service Support Vehicle': '120109',
- 'Vehicle.Armored.Light Wheeled Armored Vehicle': '120110',
- 'Vehicle.Tank': '120200',
- 'Vehicle.Tank.Light': '120201',
- 'Vehicle.Tank.Medium': '120202',
- 'Vehicle.Tank.Heavy': '120203',
- 'Vehicle.Tank Recovery Vehicle': '120300',
- 'Vehicle.Tank Recovery Vehicle.Light': '120301',
- 'Vehicle.Tank Recovery Vehicle.Medium': '120302',
- 'Vehicle.Tank Recovery Vehicle.Heavy': '120303',
- 'Engineer Vehicles and Equipment': '130000',
- 'Engineer Vehicles and Equipment.Bridge': '130100',
- 'Engineer Vehicles and Equipment.Bridge Mounted on Utility Vehicle': '130200',
- 'Engineer Vehicles and Equipment.Fixed Bridge': '130300',
- 'Engineer Vehicles and Equipment.Floating Bridge': '130400',
- 'Engineer Vehicles and Equipment.Folding Girder Bridge': '130500',
- 'Engineer Vehicles and Equipment.Hollow Deck Bridge': '130600',
- 'Engineer Vehicles and Equipment.Drill': '130700',
- 'Engineer Vehicles and Equipment.Drill.Drill Mounted on Utility Vehicle': '130701',
- 'Engineer Vehicles and Equipment.Earthmover': '130800',
- 'Engineer Vehicles and Equipment.Earthmover.Multifunctional Earthmover/Digger': '130801',
- 'Engineer Vehicles and Equipment.Mine Clearing Equipment': '130900',
- 'Engineer Vehicles and Equipment.Mine Clearing Equipment.Trailer Mounted': '130901',
- 'Engineer Vehicles and Equipment.Mine Clearing Equipment.Mine Clearing Equipment on Tank Chassis': '130902',
- 'Engineer Vehicles and Equipment.Mine Laying Equipment': '131000',
- 'Engineer Vehicles and Equipment.Mine Laying Equipment.Mine Laying Equipment on Utility Vehicle': '131001',
- 'Engineer Vehicles and Equipment.Mine Laying Equipment.Armored Carrier with Volcano': '131002',
- 'Engineer Vehicles and Equipment.Mine Laying Equipment.Truck Mounted with Volcano': '131003',
- 'Engineer Vehicles and Equipment.Dozer': '131100',
- 'Engineer Vehicles and Equipment.Dozer.Dozer , Armored': '131101',
- 'Engineer Vehicles and Equipment.Armored Assault': '131200',
- 'Engineer Vehicles and Equipment.Armored Engineer Recon Vehicle (AERV)': '131300',
- 'Engineer Vehicles and Equipment.Backhoe': '131400',
- 'Engineer Vehicles and Equipment.Construction Vehicle': '131500',
- 'Engineer Vehicles and Equipment.Ferry Transporter': '131600',
- 'Utility Vehicles': '140000',
- 'Utility Vehicles.Utility Vehicle': '140100',
- 'Utility Vehicles.Medical': '140200',
- 'Utility Vehicles.Medical Evacuation': '140300',
- 'Utility Vehicles.Mobile Emergency Physician': '140400',
- 'Utility Vehicles.Bus': '140500',
- 'Utility Vehicles.Semi-Trailer and Truck': '140600',
- 'Utility Vehicles.Semi-Trailer and Truck.Light': '140601',
- 'Utility Vehicles.Semi-Trailer and Truck.Medium': '140602',
- 'Utility Vehicles.Semi-Trailer and Truck.Heavy': '140603',
- 'Utility Vehicles.Limited Cross Country Truck': '140700',
- 'Utility Vehicles.Cross Country Truck': '140800',
- 'Utility Vehicles.Petroleum, Oil and Lubricant': '140900',
- 'Utility Vehicles.Water': '141000',
- 'Utility Vehicles.Amphibious Utility Wheeled Vehicle': '141100',
- 'Utility Vehicles.Tow Truck': '141200',
- 'Utility Vehicles.Tow Truck.Light': '141201',
- 'Utility Vehicles.Tow Truck.Heavy': '141202',
- 'Train': '150000',
- 'Train.Locomotive': '150100',
- 'Train.Railcar': '150200',
- 'Civilian Vehicle': '160000',
- 'Civilian Vehicle.Automobile': '160100',
- 'Civilian Vehicle.Automobile.Compact': '160101',
- 'Civilian Vehicle.Automobile.Midsize': '160102',
- 'Civilian Vehicle.Automobile.Sedan': '160103',
- 'Civilian Vehicle.Open-Bed Truck': '160200',
- 'Civilian Vehicle.Open-Bed Truck.Pickup': '160201',
- 'Civilian Vehicle.Open-Bed Truck.Small': '160202',
- 'Civilian Vehicle.Open-Bed Truck.Large': '160203',
- 'Civilian Vehicle.Multiple Passenger Vehicle': '160300',
- 'Civilian Vehicle.Multiple Passenger Vehicle.Van': '160301',
- 'Civilian Vehicle.Multiple Passenger Vehicle.Small Bus': '160302',
- 'Civilian Vehicle.Multiple Passenger Vehicle.Large Bus': '160303',
- 'Civilian Vehicle.Utility Vehicle': '160400',
- 'Civilian Vehicle.Utility Vehicle.Sport Utility Vehicle (SUV)': '160401',
- 'Civilian Vehicle.Utility Vehicle.Small Box Truck': '160402',
- 'Civilian Vehicle.Utility Vehicle.Large Box Truck': '160403',
- 'Civilian Vehicle.Jeep Type Vehicle': '160500',
- 'Civilian Vehicle.Jeep Type Vehicle.Small/Light': '160501',
- 'Civilian Vehicle.Jeep Type Vehicle.Medium': '160502',
- 'Civilian Vehicle.Jeep Type Vehicle.Large/Heavy': '160503',
- 'Civilian Vehicle.Tractor Trailer Truck with Box': '160600',
- 'Civilian Vehicle.Tractor Trailer Truck with Box.Small/Light': '160601',
- 'Civilian Vehicle.Tractor Trailer Truck with Box.Medium': '160602',
- 'Civilian Vehicle.Tractor Trailer Truck with Box.Large/Heavy': '160603',
- 'Civilian Vehicle.Tractor Trailer Truck with Flatbed Trailer': '160700',
- 'Civilian Vehicle.Tractor Trailer Truck with Flatbed Trailer.Small/Light': '160701',
- 'Civilian Vehicle.Tractor Trailer Truck with Flatbed Trailer.Medium': '160702',
- 'Civilian Vehicle.Tractor Trailer Truck with Flatbed Trailer.Large/Heavy': '160703',
- 'Civilian Vehicle.Known Insurgent Vehicle': '160800',
- 'Civilian Vehicle.Drug Vehicle': '160900',
- 'Law Enforcement': '170000',
- 'Law Enforcement.Bureau of Alcohol, Tobacco, Firearms and Explosives (ATF) (Department of Justice)': '170100',
- 'Law Enforcement.Border Patrol': '170200',
- 'Law Enforcement.Customs Service': '170300',
- 'Law Enforcement.Drug Enforcement Administration (DEA)': '170400',
- 'Law Enforcement.Department of Justice (DOJ)': '170500',
- 'Law Enforcement.Federal Bureau of Investigation (FBI)': '170600',
- 'Law Enforcement.Police': '170700',
- 'Law Enforcement.United States Secret Service (USSS)': '170800',
- 'Law Enforcement.Transportation Security Administration (TSA)': '170900',
- 'Law Enforcement.Coast Guard': '171000',
- 'Law Enforcement.US Marshals Service': '171100',
- 'Pack Animals': '180000',
- 'Missile Support': '190000',
- 'Missile Support.Transloader': '190100',
- 'Missile Support.Transporter': '190200',
- 'Missile Support.Crane/Loading Device': '190300',
- 'Missile Support.Propellant Transporter': '190400',
- 'Missile Support.Warhead Transporter': '190500',
- 'Other Equipment': '200000',
- 'Other Equipment.Antennae': '200100',
- 'Other Equipment.Bomb': '200200',
- 'Other Equipment.Booby Trap': '200300',
- 'Other Equipment.CBRN Equipment': '200400',
- 'Other Equipment.Computer System': '200500',
- 'Other Equipment.Command Launch Equipment (CLE)': '200600',
- 'Other Equipment.Generator Set': '200700',
- 'Other Equipment.Ground-based Midcourse Defense (GMD) Fire Control (GFC) Center': '200800',
- 'Other Equipment.In-Flight Interceptor Communications System (IFICS) Data Terminal (IDT)': '200900',
- 'Other Equipment.Laser': '201000',
- 'Other Equipment.Military Information Support Operations (MISO)': '201100',
- 'Other Equipment.Sustainment Shipments': '201200',
- 'Other Equipment.Tent': '201300',
- 'Other Equipment.Unit Deployment Shipments': '201400',
- 'Other Equipment.Emergency Medical Operation': '201500',
- 'Other Equipment.Emergency Medical Operation.Medical Evacuation Helicopter': '201501',
- 'Land Mines': '210000',
- 'Land Mines.Land Mine': '210100',
- 'Land Mines.Antipersonnel Land mine (APL)': '210200',
- 'Land Mines.Antitank Mine': '210300',
- 'Land Mines.Improvised Explosives Device (IED)': '210400',
- 'Land Mines.Less than lethal': '210500',
- 'Sensors': '220000',
- 'Sensors.Sensor': '220100',
- 'Sensors.Sensor Emplaced': '220200',
- 'Sensors.Radar': '220300',
- 'Emergency Operation': '230000',
- 'Emergency Operation.Ambulance': '230100',
- 'Emergency Operation.Fire Fighting/Fire Protection': '230200',
- 'Manual Track': '240000'
- }
- self.m1 = {
- 'Unspecified': '00',
- 'Biological': '01',
- 'Chemical': '02',
- 'Early Warning Radar': '03',
- 'Intrusion': '04',
- 'Nuclear': '05',
- 'Radiological': '06',
- 'Upgraded Early Warning Radar': '07',
- 'Hijacking': '08',
- 'Civilian': '09'
- }
- self.m2 = {'': '00'}
+ if selected_symbol_set == "15":
+ self.symbol_set = symbol.LandEquipment()
# Land Installation
- if symbolSet == "20":
- self.icons = {
- 'Military/Civilian': '110000',
- 'Military/Civilian.Aircraft Production/Assembly': '110100',
- 'Military/Civilian.Ammunition and Explosives/Assembly': '110200',
- 'Military/Civilian.Ammunition Cache': '110300',
- 'Military/Civilian.Armament Production': '110400',
- 'Military/Civilian.Black List Location': '110500',
- 'Military/Civilian.Chemical, Biological, Radiological and Nuclear (CBRN)': '110600',
- 'Military/Civilian.Engineering Equipment Production': '110700',
- 'Military/Civilian.Engineering Equipment Production.Bridge': '110701',
- 'Military/Civilian.Equipment Manufacture': '110800',
- 'Military/Civilian.Government Leadership': '110900',
- 'Military/Civilian.Gray List Location': '111000',
- 'Military/Civilian.Mass Grave Site': '111100',
- 'Military/Civilian.Materiel': '111200',
- 'Military/Civilian.Mine': '111300',
- 'Military/Civilian.Missile and Space System Production': '111400',
- 'Military/Civilian.Nuclear (Non CBRN Defense)': '111500',
- 'Military/Civilian.Printed Media': '111600',
- 'Military/Civilian.Safe House': '111700',
- 'Military/Civilian.White List Location': '111800',
- 'Military/Civilian.Tented Camp': '111900',
- 'Military/Civilian.Tented Camp.Displaced Persons/ Refugee/Evacuees Camp': '111901',
- 'Military/Civilian.Tented Camp.Training Camp': '111902',
- 'Military/Civilian.Warehouse/Storage Facility': '112000',
- 'Military/Civilian.Law Enforcement': '112100',
- 'Military/Civilian.Law Enforcement.Bureau of Alcohol, Tobacco, Firearms and Explosives (ATF) (Department of Justice)': '112101',
- 'Military/Civilian.Law Enforcement.Border Patrol': '112102',
- 'Military/Civilian.Law Enforcement.Customs Service': '112103',
- 'Military/Civilian.Law Enforcement.Drug Enforcement Administration (DEA)': '112104',
- 'Military/Civilian.Law Enforcement.Department of Justice (DOJ)': '112105',
- 'Military/Civilian.Law Enforcement.Federal Bureau of Investigation (FBI)': '112106',
- 'Military/Civilian.Law Enforcement.Police': '112107',
- 'Military/Civilian.Law Enforcement.Prison': '112108',
- 'Military/Civilian.Law Enforcement.United States Secret Service (USSS)': '112109',
- 'Military/Civilian.Law Enforcement.Transportation Security Administration (TSA)': '112110',
- 'Military/Civilian.Law Enforcement.Coast Guard': '112111',
- 'Military/Civilian.Law Enforcement.US Marshals Service': '112112',
- 'Military/Civilian.Emergency Operation': '112200',
- 'Military/Civilian.Emergency Operation.Fire Station': '112201',
- 'Military/Civilian.Emergency Operation.Emergency Medical Operation': '112202',
- 'Infrastructure': '120000',
- 'Infrastructure.Agriculture and Food Infrastructure': '120100',
- 'Infrastructure.Agriculture and Food Infrastructure.Agriculture Laboratory': '120101',
- 'Infrastructure.Agriculture and Food Infrastructure.Animal Feedlot': '120102',
- 'Infrastructure.Agriculture and Food Infrastructure.Commercial Food Distribution Center': '120103',
- 'Infrastructure.Agriculture and Food Infrastructure.Farm/Ranch': '120104',
- 'Infrastructure.Agriculture and Food Infrastructure.Food Distribution': '120105',
- 'Infrastructure.Agriculture and Food Infrastructure.Food Production Center': '120106',
- 'Infrastructure.Agriculture and Food Infrastructure.Food Retail': '120107',
- 'Infrastructure.Agriculture and Food Infrastructure.Grain Storage': '120108',
- 'Infrastructure.Banking Finance and Insurance Infrastructure': '120200',
- 'Infrastructure.Banking Finance and Insurance Infrastructure.ATM': '120201',
- 'Infrastructure.Banking Finance and Insurance Infrastructure.Bank': '120202',
- 'Infrastructure.Banking Finance and Insurance Infrastructure.Bullion Storage': '120203',
- 'Infrastructure.Banking Finance and Insurance Infrastructure.Economic Infrastructure Asset': '120204',
- 'Infrastructure.Banking Finance and Insurance Infrastructure.Federal Reserve Bank': '120205',
- 'Infrastructure.Banking Finance and Insurance Infrastructure.Financial Exchange': '120206',
- 'Infrastructure.Banking Finance and Insurance Infrastructure.Financial Services, Other': '120207',
- 'Infrastructure.Commercial Infrastructure': '120300',
- 'Infrastructure.Commercial Infrastructure.Chemical Plant': '120301',
- 'Infrastructure.Commercial Infrastructure.Firearms Manufacturer': '120302',
- 'Infrastructure.Commercial Infrastructure.Firearms Retailer': '120303',
- 'Infrastructure.Commercial Infrastructure.Hazardous Material Production': '120304',
- 'Infrastructure.Commercial Infrastructure.Hazardous Material Storage': '120305',
- 'Infrastructure.Commercial Infrastructure.Industrial Site': '120306',
- 'Infrastructure.Commercial Infrastructure.Landfill': '120307',
- 'Infrastructure.Commercial Infrastructure.Pharmaceutical Manufacturer': '120308',
- 'Infrastructure.Commercial Infrastructure.Contaminated Hazardous Waste Site': '120309',
- 'Infrastructure.Commercial Infrastructure.Toxic Release Inventory': '120310',
- 'Infrastructure.Educational Facilities Infrastructure': '120400',
- 'Infrastructure.Educational Facilities Infrastructure.College/University': '120401',
- 'Infrastructure.Educational Facilities Infrastructure.School': '120402',
- 'Infrastructure.Energy Facility Infrastructure': '120500',
- 'Infrastructure.Energy Facility Infrastructure.Electric Power': '120501',
- 'Infrastructure.Energy Facility Infrastructure.Generation Station': '120502',
- 'Infrastructure.Energy Facility Infrastructure.Natural Gas Facility': '120503',
- 'Infrastructure.Energy Facility Infrastructure.Petroleum Facility': '120504',
- 'Infrastructure.Energy Facility Infrastructure.Petroleum/Gas/Oil': '120505',
- 'Infrastructure.Energy Facility Infrastructure.Propane Facility': '120506',
- 'Infrastructure.Government Site Infrastructure': '120600',
- 'Infrastructure.Medical Infrastructure': '120700',
- 'Infrastructure.Medical Infrastructure.Medical': '120701',
- 'Infrastructure.Medical Infrastructure.Medical Treatment Facility (Hospital)': '120702',
- 'Infrastructure.Military Infrastructure': '120800',
- 'Infrastructure.Military Infrastructure.Military Armory': '120801',
- 'Infrastructure.Military Infrastructure.Military Base': '120802',
- 'Infrastructure.Postal Services Infrastructure': '120900',
- 'Infrastructure.Postal Services Infrastructure.Postal Distribution Center': '120901',
- 'Infrastructure.Postal Services Infrastructure.Post Office': '120902',
- 'Infrastructure.Public Venues Infrastructure': '121000',
- 'Infrastructure.Public Venues Infrastructure.Enclosed Facility': '121001',
- 'Infrastructure.Public Venues Infrastructure.Open Facility': '121002',
- 'Infrastructure.Public Venues Infrastructure.Recreational Area': '121003',
- 'Infrastructure.Public Venues Infrastructure.Religious Institution': '121004',
- 'Infrastructure.Special Needs Infrastructure': '121100',
- 'Infrastructure.Special Needs Infrastructure.Adult Day Care': '121101',
- 'Infrastructure.Special Needs Infrastructure.Child Day Care': '121102',
- 'Infrastructure.Special Needs Infrastructure.Elder Care': '121103',
- 'Infrastructure.Telecommunications Infrastructure': '121200',
- 'Infrastructure.Telecommunications Infrastructure.Broadcast Transmitter Antennae': '121201',
- 'Infrastructure.Telecommunications Infrastructure.Telecommunications': '121202',
- 'Infrastructure.Telecommunications Infrastructure.Telecommunications Tower': '121203',
- 'Infrastructure.Transportation Infrastructure': '121300',
- 'Infrastructure.Transportation Infrastructure.Airport/Air Base': '121301',
- 'Infrastructure.Transportation Infrastructure.Air Traffic Control Facility': '121302',
- 'Infrastructure.Transportation Infrastructure.Bus Station': '121303',
- 'Infrastructure.Transportation Infrastructure.Ferry Terminal': '121304',
- 'Infrastructure.Transportation Infrastructure.Helicopter Landing Site': '121305',
- 'Infrastructure.Transportation Infrastructure.Maintenance Facility': '121306',
- 'Infrastructure.Transportation Infrastructure.Railhead/Railroad Station': '121307',
- 'Infrastructure.Transportation Infrastructure.Rest Stop': '121308',
- 'Infrastructure.Transportation Infrastructure.Sea Port/Naval Base': '121309',
- 'Infrastructure.Transportation Infrastructure.Ship Yard': '121310',
- 'Infrastructure.Transportation Infrastructure.Toll Facility': '121311',
- 'Infrastructure.Transportation Infrastructure.Traffic Inspection Facility': '121312',
- 'Infrastructure.Transportation Infrastructure.Tunnel': '121313',
- 'Infrastructure.Water Supply Infrastructure': '121400',
- 'Infrastructure.Water Supply Infrastructure.Control Valve': '121401',
- 'Infrastructure.Water Supply Infrastructure.Dam': '121402',
- 'Infrastructure.Water Supply Infrastructure.Discharge Outfall': '121403',
- 'Infrastructure.Water Supply Infrastructure.Ground Water Well': '121404',
- 'Infrastructure.Water Supply Infrastructure.Pumping Station': '121405',
- 'Infrastructure.Water Supply Infrastructure.Reservoir': '121406',
- 'Infrastructure.Water Supply Infrastructure.Storage Tower': '121407',
- 'Infrastructure.Water Supply Infrastructure.Surface Water Intake': '121408',
- 'Infrastructure.Water Supply Infrastructure.Wastewater Treatment Facility': '121409',
- 'Infrastructure.Water Supply Infrastructure.Water': '121410',
- 'Infrastructure.Water Supply Infrastructure.Water Treatment': '121411'
- }
- self.m1 = {
- 'Unspecified': '00',
- 'Biological': '01',
- 'Chemical ': '02',
- 'Nuclear': '03',
- 'Radiological': '04',
- 'Decontamination': '05',
- 'Coal': '06',
- 'Geothermal': '07',
- 'Hydroelectric': '08',
- 'Natural Gas': '09',
- 'Petroleum': '10',
- 'Civilian ': '11',
- 'Civilian Telephone': '12',
- 'Civilian Television': '13'
- }
- self.m2 = {
- 'Unspecified': '00',
- 'Biological': '01',
- 'Chemical ': '02',
- 'Nuclear': '03',
- 'Radiological': '04',
- 'Atomic Energy Reactor': '05',
- 'Nuclear Material Production': '06',
- 'Nuclear Material Storage': '07',
- 'Weapons Grade': '08'
- }
+ if selected_symbol_set == "20":
+ self.symbol_set = symbol.LandInstallation()
# Surface
- if symbolSet == "30":
- self.icons = {
- 'Military': '110000',
- 'Military Combatant': '120000',
- 'Military Combatant.Carrier': '120100',
- 'Military Combatant.Surface Combatant, Line': '120200',
- 'Military Combatant.Surface Combatant, Line.Battleship': '120201',
- 'Military Combatant.Surface Combatant, Line.Cruiser': '120202',
- 'Military Combatant.Surface Combatant, Line.Destroyer': '120203',
- 'Military Combatant.Surface Combatant, Line.Frigate': '120204',
- 'Military Combatant.Surface Combatant, Line.Corvette': '120205',
- 'Military Combatant.Surface Combatant, Line.Littoral Combatant Ship': '120206',
- 'Military Combatant.Amphibious Warfare Ship': '120300',
- 'Military Combatant.Amphibious Warfare Ship.Amphibious Command Ship': '120301',
- 'Military Combatant.Amphibious Warfare Ship.Amphibious Assault, Non-specified': '120302',
- 'Military Combatant.Amphibious Warfare Ship.Amphibious Assault Ship, General': '120303',
- 'Military Combatant.Amphibious Warfare Ship.Amphibious Assault Ship, Multipurpose': '120304',
- 'Military Combatant.Amphibious Warfare Ship.Amphibious Assault Ship, Helicopter': '120305',
- 'Military Combatant.Amphibious Warfare Ship.Amphibious Transport Dock': '120306',
- 'Military Combatant.Amphibious Warfare Ship.Landing Ship': '120307',
- 'Military Combatant.Amphibious Warfare Ship.Landing Craft': '120308',
- 'Military Combatant.Mine Warfare Ship': '120400',
- 'Military Combatant.Mine Warfare Ship.Mine Layer': '120401',
- 'Military Combatant.Mine Warfare Ship.Mine Sweeper': '120402',
- 'Military Combatant.Mine Warfare Ship.Mine Sweeper, Drone': '120403',
- 'Military Combatant.Mine Warfare Ship.Mine Hunter': '120404',
- 'Military Combatant.Mine Warfare Ship.Mine Countermeasures': '120405',
- 'Military Combatant.Mine Warfare Ship.Mine Countermeasures, Support Ship': '120406',
- 'Military Combatant.Patrol Boat': '120500',
- 'Military Combatant.Patrol Boat.Patrol Craft, Submarine Chaser/Escort, General': '120501',
- 'Military Combatant.Patrol Boat.Patrol Ship, General': '120502',
- 'Military Combatant.Decoy': '120600',
- 'Military Combatant.Unmanned Surface Water Vehicle (USV)': '120700',
- 'Military Combatant.Speedboat': '120800',
- 'Military Combatant.Speedboat.Rigid-Hull Inflatable Boat (RHIB)': '120801',
- 'Military Combatant.Jet Ski': '120900',
- 'Military Combatant.Navy Task Organization': '121000',
- 'Military Combatant.Navy Task Organization.Navy Task Element': '121001',
- 'Military Combatant.Navy Task Organization.Navy Task Force': '121002',
- 'Military Combatant.Navy Task Organization.Navy Task Group': '121003',
- 'Military Combatant.Navy Task Organization.Navy Task Unit': '121004',
- 'Military Combatant.Navy Task Organization.Convoy': '121005',
- 'Military Combatant.Sea-Based X-Band Radar': '121100',
- 'Military Non Combatant': '130000',
- 'Military Non Combatant.Auxiliary Ship': '130100',
- 'Military Non Combatant.Auxiliary Ship.Ammunition Ship': '130101',
- 'Military Non Combatant.Auxiliary Ship.Naval Stores Ship': '130102',
- 'Military Non Combatant.Auxiliary Ship.Auxiliary Flag Ship': '130103',
- 'Military Non Combatant.Auxiliary Ship.Intelligence Collector': '130104',
- 'Military Non Combatant.Auxiliary Ship.Oceanographic Research Ship': '130105',
- 'Military Non Combatant.Auxiliary Ship.Survey Ship': '130106',
- 'Military Non Combatant.Auxiliary Ship.Hospital Ship': '130107',
- 'Military Non Combatant.Auxiliary Ship.Naval Cargo Ship': '130108',
- 'Military Non Combatant.Auxiliary Ship.Combat Support Ship, Fast': '130109',
- 'Military Non Combatant.Auxiliary Ship.Oiler, Replenishment': '130110',
- 'Military Non Combatant.Auxiliary Ship.Repair Ship': '130111',
- 'Military Non Combatant.Auxiliary Ship.Submarine Tender': '130112',
- 'Military Non Combatant.Auxiliary Ship.Tug, Ocean Going': '130113',
- 'Military Non Combatant.Service Craft/Yard': '130200',
- 'Military Non Combatant.Service Craft/Yard.Barge, not Self-Propelled': '130201',
- 'Military Non Combatant.Service Craft/Yard.Barge, Self-Propelled': '130202',
- 'Military Non Combatant.Service Craft/Yard.Tug, Harbor': '130203',
- 'Military Non Combatant.Service Craft/Yard.Launch': '130204',
- 'Civilian': '140000',
- 'Civilian.Merchant Ship': '140100',
- 'Civilian.Merchant Ship.Cargo, General': '140101',
- 'Civilian.Merchant Ship.Container Ship': '140102',
- 'Civilian.Merchant Ship.Dredge': '140103',
- 'Civilian.Merchant Ship.Roll On/Roll Off': '140104',
- 'Civilian.Merchant Ship.Ferry': '140105',
- 'Civilian.Merchant Ship.Heavy Lift': '140106',
- 'Civilian.Merchant Ship.Hovercraft': '140107',
- 'Civilian.Merchant Ship.Lash Carrier (with Barges)': '140108',
- 'Civilian.Merchant Ship.Oiler/Tanker': '140109',
- 'Civilian.Merchant Ship.Passenger': '140110',
- 'Civilian.Merchant Ship.Tug, Ocean Going': '140111',
- 'Civilian.Merchant Ship.Tow': '140112',
- 'Civilian.Merchant Ship.Transport Ship, Hazardous Material': '140113',
- 'Civilian.Merchant Ship.Junk/Dhwo': '140114',
- 'Civilian.Merchant Ship.Barge, not Self-Propelled': '140115',
- 'Civilian.Merchant Ship.Hospital Ship': '140116',
- 'Civilian.Fishing Vessel': '140200',
- 'Civilian.Fishing Vessel.Drifter': '140201',
- 'Civilian.Fishing Vessel.Trawler': '140202',
- 'Civilian.Fishing Vessel.Dredger': '140203',
- 'Civilian.Law Enforcement Vessel': '140300',
- 'Civilian.Leisure Craft, Sailing': '140400',
- 'Civilian.Leisure Craft, Motorized': '140500',
- 'Civilian.Leisure Craft, Motorized.Rigid-Hull Inflatable Boat (RHIB)': '140501',
- 'Civilian.Leisure Craft, Motorized.Speedboat': '140502',
- 'Civilian.Jet Ski': '140600',
- 'Civilian.Unmanned Surface Water Vehicle (USV)': '140700',
- 'Own Ship': '150000',
- 'Fused Track': '160000',
- 'Manual Track': '170000'
- }
- self.m1 = {
- 'Unspecified': '00',
- 'Own Ship': '01',
- 'Antiair Warfare': '02',
- 'Antisubmarine Warfare': '03',
- 'Escort': '04',
- 'Electronic Warfare': '05',
- 'Intelligence, Surveillance, Reconnaissance': '06',
- 'Mine Countermeasures': '07',
- 'Missile Defense': '08',
- 'Medical': '09',
- 'Mine Warfare': '10',
- 'Remote Multi-Mission Vehicle (USV-only)': '11',
- 'Special Operations Forces (SOF)': '12',
- 'Surface Warfare': '13',
- 'Ballistic Missile ': '14',
- 'Guided Missile ': '15',
- 'Other Guided Missile ': '16',
- 'Torpedo': '17',
- 'Drone-Equipped': '18',
- 'Helicopter-Equipped/VSTOL': '19',
- 'Ballistic Missile Defense, Shooter ': '20',
- 'Ballistic Missile Defense, Long-Range Surveillance and Track (LRS&T)': '21',
- 'Sea-Base X-Band': '22',
- 'Hijacking': '23'
- }
- self.m2 = {
- 'Unspecified': '00',
- 'Nuclear Powered': '01',
- 'Heavy': '02',
- 'Light': '03',
- 'Medium': '04',
- 'Dock': '05',
- 'Logistics': '06',
- 'Tank': '07',
- 'Vehicle': '08',
- 'Fast': '09',
- 'Air-Cushioned (US)': '10',
- 'Air-Cushioned (NATO)': '11',
- 'Hydrofoil': '12',
- 'Autonomous Control': '13',
- 'Remotely Piloted': '14',
- 'Expendable': '15'
- }
+ if selected_symbol_set == "30":
+ self.symbol_set = symbol.Surface()
# Sub
- if symbolSet == "35":
- self.icons = {
- 'Military': '110000',
- 'Military.Submarine': '110100',
- 'Military.Submarine.Submarine, Surfaced': '110101',
- 'Military.Submarine.Submarine, Snorkeling': '110102',
- 'Military.Submarine.Submarine, Bottomed': '110103',
- 'Military.Other Submersible': '110200',
- 'Military.Nonsubmarine': '110300',
- 'Military.Autonomous Underwater Vehicle (AUV)/Unmanned Underwater Vehicle (UUV)': '110400',
- 'Military.Diver': '110500',
- 'Civilian': '120000',
- 'Civilian.Submersible': '120100',
- 'Civilian.Autonomous Underwater Vehicle (AUV)/ Unmanned Underwater Vehicle (UUV)': '120200',
- 'Civilian.Diver': '120300',
- 'Weapon': '130000',
- 'Weapon.Torpedo': '130100',
- 'Weapon.Improvised Explosive Device (IED)': '130200',
- 'Weapon.Decoy': '130300',
- 'Echo Tracker Classifier (ETC) / Possible Contact (POSCON)': '140000',
- 'Fused Track': '150000',
- 'Manual Track': '160000'
- }
- self.m1 = {
- 'Unspecified': '00',
- 'Antisubmarine Warfare': '01',
- 'Auxiliary': '02',
- 'Command and Control': '03',
- 'Intelligence, Surveillance, Reconnaissance': '04',
- 'Mine Countermeasures': '05',
- 'Mine Warfare': '06',
- 'Surface Warfare': '07',
- 'Attack': '08',
- 'Ballistic Missile ': '09',
- 'Guided Missile ': '10',
- 'Other Guided Missile': '11',
- 'Special Operations Forces (SOF)': '12',
- 'Possible Submarine Low 1 ': '13',
- 'Possible Submarine Low 2': '14',
- 'Possible Submarine High 3': '15',
- 'Possible Submarine High 4': '16',
- 'Probable Submarine': '17',
- 'Certain Submarine': '18',
- 'Anti-torpedo Torpedo': '19',
- 'Hijacking/Highjacked': '20'
- }
- self.m2 = {
- 'Unspecified': '00',
- 'Air Independent Propulsion': '01',
- 'Diesel Electric, General': '02',
- 'Diesel - Type 1': '03',
- 'Diesel - Type 2': '04',
- 'Diesel - Type 3': '05',
- 'Nuclear Powered, General': '06',
- 'Nuclear - Type 1': '07',
- 'Nuclear - Type 2': '08',
- 'Nuclear - Type 3': '09',
- 'Nuclear - Type 4': '10',
- 'Nuclear - Type 5': '11',
- 'Nuclear - Type 6': '12',
- 'Nuclear - Type 7': '13',
- 'Autonomous Control': '14',
- 'Remotely Piloted': '15',
- 'Expendable': '16'
- }
+ if selected_symbol_set == "35":
+ self.symbol_set = symbol.Sub()
# Mine Warfare
- if symbolSet == "36":
- self.icons = {
- 'Sea Mine, General': '110000',
- 'Sea Mine, General.Sea Mine, Bottom': '110100',
- 'Sea Mine, General.Sea Mine, Moored': '110200',
- 'Sea Mine, General.Sea Mine, Floating': '110300',
- 'Sea Mine, General.Sea Mine, Rising': '110400',
- 'Sea Mine, General.Sea Mine, Other Position': '110500',
- 'Sea Mine, General.Kingfisher': '110600',
- 'Sea Mine, General.Small Object, Mine-Like': '110700',
- 'Sea Mine, General.Exercise Mine, General': '110800',
- 'Sea Mine, General.Exercise Mine, General.Exercise Mine, Bottom': '110801',
- 'Sea Mine, General.Exercise Mine, General.Exercise Mine, Moored': '110802',
- 'Sea Mine, General.Exercise Mine, General.Exercise Mine, Floating': '110803',
- 'Sea Mine, General.Exercise Mine, General.Exercise Mine, Rising': '110804',
- 'Sea Mine, General.Neutralized Mine, General': '110900',
- 'Sea Mine, General.Neutralized Mine, General.Neutralized Mine, Bottom': '110901',
- 'Sea Mine, General.Neutralized Mine, General.Neutralized Mine, Moored': '110902',
- 'Sea Mine, General.Neutralized Mine, General.Neutralized Mine, Floating': '110903',
- 'Sea Mine, General.Neutralized Mine, General.Neutralized Mine, Rising': '110904',
- 'Sea Mine, General.Neutralized Mine, General.Neutralized Mine, Other Position': '110905',
- 'Unexploded Ordnance': '120000',
- 'Sea Mine Decoy': '130000',
- 'Sea Mine Decoy.Sea Mine Decoy, Bottom': '130100',
- 'Sea Mine Decoy.Sea Mine Decoy, Moored': '130200',
- 'Mine-Like Contact (MILCO)': '140000',
- 'Mine-Like Contact (MILCO).MILCO - General': '140100',
- 'Mine-Like Contact (MILCO).MILCO - General.MILCO - General, Confidence.Level 1': '140101',
- 'Mine-Like Contact (MILCO).MILCO - General.MILCO - General, Confidence.Level 2': '140102',
- 'Mine-Like Contact (MILCO).MILCO - General.MILCO - General, Confidence.Level 3': '140103',
- 'Mine-Like Contact (MILCO).MILCO - General.MILCO - General, Confidence.Level 4': '140104',
- 'Mine-Like Contact (MILCO).MILCO - General.MILCO - General, Confidence.Level 5': '140105',
- 'Mine-Like Contact (MILCO).MILCO - Bottom': '140200',
- 'Mine-Like Contact (MILCO).MILCO - Bottom.MILCO - Bottom, ConfidenceLevel 1': '140201',
- 'Mine-Like Contact (MILCO).MILCO - Bottom.MILCO - Bottom, Confidence.Level 2': '140202',
- 'Mine-Like Contact (MILCO).MILCO - Bottom.MILCO - Bottom, Confidence.Level 3': '140203',
- 'Mine-Like Contact (MILCO).MILCO - Bottom.MILCO - Bottom, Confidence.Level 4': '140204',
- 'Mine-Like Contact (MILCO).MILCO - Bottom.MILCO - Bottom, ConfidenceLevel 5': '140205',
- 'Mine-Like Contact (MILCO).MILCO - Moored': '140300',
- 'Mine-Like Contact (MILCO).MILCO - Moored.MILCO - Moored, Confidence.Level 1': '140301',
- 'Mine-Like Contact (MILCO).MILCO - Moored.MILCO - Moored, Confidence.Level 2': '140302',
- 'Mine-Like Contact (MILCO).MILCO - Moored.MILCO - Moored, Confidence.Level 3': '140303',
- 'Mine-Like Contact (MILCO).MILCO - Moored.MILCO - Moored, Confidence.Level 4': '140304',
- 'Mine-Like Contact (MILCO).MILCO - Moored.MILCO - Moored, Confidence.Level 5': '140305',
- 'Mine-Like Contact (MILCO).MILCO - Floating': '140400',
- 'Mine-Like Contact (MILCO).MILCO - Floating.MILCO - Floating, Confidence.Level 1': '140401',
- 'Mine-Like Contact (MILCO).MILCO - Floating.MILCO - Floating, Confidence.Level 2': '140402',
- 'Mine-Like Contact (MILCO).MILCO - Floating.MILCO - Floating, Confidence.Level 3': '140403',
- 'Mine-Like Contact (MILCO).MILCO - Floating.MILCO - Floating, Confidence.Level 4': '140404',
- 'Mine-Like Contact (MILCO).MILCO - Floating.MILCO - Floating, Confidence.Level 5': '140405',
- 'Mine-Like Echo (MILEC), General': '150000',
- 'Mine-Like Echo (MILEC), General.Mine-Like Echo, Bottom': '150100',
- 'Mine-Like Echo (MILEC), General.Mine-Like Echo, Moored': '150200',
- 'Mine-Like Echo (MILEC), General.Mine-Like Echo, Floating': '150300',
- 'Negative Reacquisition, General': '160000',
- 'Negative Reacquisition, General.Negative Reacquisition, Bottom': '160100',
- 'Negative Reacquisition, General.Negative Reacquisition, Moored': '160200',
- 'Negative Reacquisition, General.Negative Reacquisition, Floating': '160300',
- 'Obstructor': '170000',
- 'Obstructor.Neutralized Obstructor': '170100',
- 'General Mine Anchor': '180000',
- 'Non-Mine Mine-Like Object (NMLO), General': '190000',
- 'Non-Mine Mine-Like Object (NMLO), General.Non-Mine Mine-Like Object, Bottom': '190100',
- 'Non-Mine Mine-Like Object (NMLO), General.Non-Mine Mine-Like Object, Moored': '190200',
- 'Non-Mine Mine-Like Object (NMLO), General.Non-Mine Mine-Like Object, Floating': '190300',
- 'Environmental Report Location': '200000',
- 'Dive Report Location': '210000'
- }
- self.m1 = {'': '00'}
- self.m2 = {'': '00'}
+ if selected_symbol_set == "36":
+ self.symbol_set = symbol.MineWarfare()
# Activities
- if symbolSet == "40":
- self.icons = {
- 'Incident': '110000',
- 'Incident.Criminal Activity Incident': '110100',
- 'Incident.Criminal Activity Incident.Arrest': '110101',
- 'Incident.Criminal Activity Incident.Arson': '110102',
- 'Incident.Criminal Activity Incident.Attempted Criminal Activity': '110103',
- 'Incident.Criminal Activity Incident.Drive-by Shooting': '110104',
- 'Incident.Criminal Activity Incident.Drug Related': '110105',
- 'Incident.Criminal Activity Incident.Extortion': '110106',
- 'Incident.Criminal Activity Incident.Graffiti': '110107',
- 'Incident.Criminal Activity Incident.Killing': '110108',
- 'Incident.Criminal Activity Incident.Poisoning': '110109',
- 'Incident.Criminal Activity Incident.Civil Rioting': '110110',
- 'Incident.Criminal Activity Incident.Booby Trap': '110111',
- 'Incident.Criminal Activity Incident.Home Eviction': '110112',
- 'Incident.Criminal Activity Incident.Black Marketing': '110113',
- 'Incident.Criminal Activity Incident.Vandalism/Loot/Ransack/Plunder': '110114',
- 'Incident.Criminal Activity Incident.Jail Break': '110115',
- 'Incident.Criminal Activity Incident.Robbery': '110116',
- 'Incident.Criminal Activity Incident.Theft': '110117',
- 'Incident.Criminal Activity Incident.Burglary': '110118',
- 'Incident.Criminal Activity Incident.Smuggling': '110119',
- 'Incident.Criminal Activity Incident.Rock Throwing': '110120',
- 'Incident.Criminal Activity Incident.Dead Body': '110121',
- 'Incident.Criminal Activity Incident.Sabotage': '110122',
- 'Incident.Criminal Activity Incident.Suspicious Activity': '110123',
- 'Incident.Bomb/Bombing': '110200',
- 'Incident.Bomb/Bombing.Bomb Threat': '110201',
- 'Incident.IED Event': '110300',
- 'Incident.IED Event.IED Explosion': '110301',
- 'Incident.IED Event.Premature IED Explosion': '110302',
- 'Incident.IED Event.IED Cache': '110303',
- 'Incident.IED Event.IED Suicide Bomber': '110304',
- 'Incident.Shooting': '110400',
- 'Incident.Shooting.Sniping': '110401',
- 'Incident.Illegal Drug Operation': '110500',
- 'Incident.Illegal Drug Operation.Trafficking': '110501',
- 'Incident.Illegal Drug Operation.Illegal Drug Lab': '110502',
- 'Incident.Explosion': '110600',
- 'Incident.Explosion.Grenade Explosion': '110601',
- 'Incident.Explosion.Incendiary Explosion': '110602',
- 'Incident.Explosion.Mine Explosion': '110603',
- 'Incident.Explosion.Mortar Fire Explosion': '110604',
- 'Incident.Explosion.Rocket Explosion': '110605',
- 'Incident.Explosion.Bomb Explosion': '110606',
- 'Civil Disturbance': '120000',
- 'Civil Disturbance.Demonstration': '120100',
- 'Operation': '130000',
- 'Operation.Patrolling': '130100',
- 'Operation.Military Information Support Operation (MISO)': '130200',
- 'Operation.Military Information Support Operation (MISO).TV and Radio Propaganda': '130201',
- 'Operation.Foraging/Searching': '130300',
- 'Operation.Recruitment': '130400',
- 'Operation.Recruitment.Willing': '130401',
- 'Operation.Recruitment.Coerced/Impressed': '130402',
- 'Operation.Mine Laying': '130500',
- 'Operation.Spy': '130600',
- 'Operation.Warrant Served': '130700',
- 'Operation.Exfiltration': '130800',
- 'Operation.Infiltration': '130900',
- 'Operation.Meeting': '131000',
- 'Operation.Meeting.Polling Place/Election': '131001',
- 'Operation.Raid on House': '131100',
- 'Operation.Emergency Operation': '131200',
- 'Operation.Emergency Operation.Emergency Collection Evacuation Point': '131201',
- 'Operation.Emergency Operation.Emergency Food Distribution': '131202',
- 'Operation.Emergency Operation.Emergency Incident Command Center': '131203',
- 'Operation.Emergency Operation.Emergency Operations Center': '131204',
- 'Operation.Emergency Operation.Emergency Public Information Center': '131205',
- 'Operation.Emergency Operation.Emergency Shelter': '131206',
- 'Operation.Emergency Operation.Emergency Staging Area': '131207',
- 'Operation.Emergency Operation.Emergency Water Distribution Center': '131208',
- 'Operation.Emergency Medical Operation': '131300',
- 'Operation.Emergency Medical Operation.EMT Station Location': '131301',
- 'Operation.Emergency Medical Operation.Health Department Facility': '131302',
- 'Operation.Emergency Medical Operation.Medical Facilities Outpatient': '131303',
- 'Operation.Emergency Medical Operation.Morgue': '131304',
- 'Operation.Emergency Medical Operation.Pharmacy': '131305',
- 'Operation.Emergency Medical Operation.Triage': '131306',
- 'Operation.Fire Fighting Operation': '131400',
- 'Operation.Fire Fighting Operation.Fire Hydrant': '131401',
- 'Operation.Fire Fighting Operation.Fire Station': '131402',
- 'Operation.Fire Fighting Operation.Other Water Supply Location': '131403',
- 'Operation.Law Enforcement Operation': '131500',
- 'Operation.Law Enforcement Operation.Bureau of Alcohol, Tobacco, Firearms and Explosives (ATF) (Department of Justice)': '131501',
- 'Operation.Law Enforcement Operation.Border Patrol': '131502',
- 'Operation.Law Enforcement Operation.Customs Service': '131503',
- 'Operation.Law Enforcement Operation.Drug Enforcement Administration (DEA)': '131504',
- 'Operation.Law Enforcement Operation.Department of Justice (DOJ)': '131505',
- 'Operation.Law Enforcement Operation.Federal Bureau of Investigation (FBI)': '131506',
- 'Operation.Law Enforcement Operation.Police': '131507',
- 'Operation.Law Enforcement Operation.Prison': '131508',
- 'Operation.Law Enforcement Operation.United States Secret Service(Treas) (USSS)': '131509',
- 'Operation.Law Enforcement Operation.Transportation Security Administration (TSA)': '131510',
- 'Operation.Law Enforcement Operation.Coast Guard': '131511',
- 'Operation.Law Enforcement Operation.US Marshals Service': '131512',
- 'Operation.Law Enforcement Operation.Internal Security Force': '131513',
- 'Fire Event': '140000',
- 'Fire Event.Fire Origin': '140100',
- 'Fire Event.Smoke': '140200',
- 'Fire Event.Hot Spot': '140300',
- 'Fire Event.Non-Residential Fire': '140400',
- 'Fire Event.Residential Fire': '140500',
- 'Fire Event.School Fire': '140600',
- 'Fire Event.Special Needs Fire': '140700',
- 'Fire Event.Wild Fire': '140800',
- 'Hazardous Materials': '150000',
- 'Hazardous Materials.Hazardous Materials Incident': '150100',
- 'Hazardous Materials.Hazardous Materials Incident.Chemical Agent': '150101',
- 'Hazardous Materials.Hazardous Materials Incident.Corrosive Material': '150102',
- 'Hazardous Materials.Hazardous Materials Incident.Hazardous when Wet': '150103',
- 'Hazardous Materials.Hazardous Materials Incident.Explosive Material': '150104',
- 'Hazardous Materials.Hazardous Materials Incident.Flammable Gas': '150105',
- 'Hazardous Materials.Hazardous Materials Incident.Flammable Liquid': '150106',
- 'Hazardous Materials.Hazardous Materials Incident.Flammable Solid': '150107',
- 'Hazardous Materials.Hazardous Materials Incident.Non-Flammable Gas': '150108',
- 'Hazardous Materials.Hazardous Materials Incident.Organic Peroxide': '150109',
- 'Hazardous Materials.Hazardous Materials Incident.Oxidizer': '150110',
- 'Hazardous Materials.Hazardous Materials Incident.Radioactive Material': '150111',
- 'Hazardous Materials.Hazardous Materials Incident.Spontaneously Combustible Material': '150112',
- 'Hazardous Materials.Hazardous Materials Incident.Toxic Gas': '150113',
- 'Hazardous Materials.Hazardous Materials Incident.Toxic Infectious Material': '150114',
- 'Hazardous Materials.Hazardous Materials Incident.Unexploded Ordnance': '150115',
- 'Transportation Incident': '160000',
- 'Transportation Incident.Air-': '160100',
- 'Transportation Incident.Marine-': '160200',
- 'Transportation Incident.Rail-': '160300',
- 'Transportation Incident.Vehicle-': '160400',
- 'Transportation Incident.Wheeled Vehicle Explosion': '160500',
- 'Natural Event': '170000',
- 'Natural Event.Geologic': '170100',
- 'Natural Event.Geologic.Aftershock': '170101',
- 'Natural Event.Geologic.Avalanche': '170102',
- 'Natural Event.Geologic.Earthquake Epicenter': '170103',
- 'Natural Event.Geologic.Landslide': '170104',
- 'Natural Event.Geologic.Subsidence': '170105',
- 'Natural Event.Geologic.Volcanic Eruption': '170106',
- 'Natural Event.Geologic.Volcanic Threat': '170107',
- 'Natural Event.Geologic.Cave Entrance': '170108',
- 'Natural Event.Hydro-Meteorological': '170200',
- 'Natural Event.Hydro-Meteorological.Drought': '170201',
- 'Natural Event.Hydro-Meteorological.Flood': '170202',
- 'Natural Event.Hydro-Meteorological.Tsunami': '170203',
- 'Natural Event.Infestation': '170300',
- 'Natural Event.Infestation.Bird': '170301',
- 'Natural Event.Infestation.Insect': '170302',
- 'Natural Event.Infestation.Microbial': '170303',
- 'Natural Event.Infestation.Reptile': '170304',
- 'Natural Event.Infestation.Rodent': '170305',
- 'Individual': '180000',
- 'Individual.Religious Leader': '180100',
- 'Individual.Speaker': '180200'
- }
- self.m1 = {
- 'Unspecified': '00',
- 'Assassination': '01',
- 'Execution (Wrongful Killing)': '02',
- 'Hijacking/Hijacked': '03',
- 'House-to-House': '04',
- 'Kidnapping': '05',
- 'Murder': '06',
- 'Piracy': '07',
- 'Rape': '08',
- 'Written Military Information Support Operations': '09',
- 'Pirate': '10',
- 'False': '11',
- 'Find': '12',
- 'Found and Cleared': '13',
- 'Hoax (Decoy)': '14',
- 'Attempted': '15',
- 'Accident': '16',
- 'Incident': '17',
- 'Theft': '18'
- }
- self.m2 = {'': '00'}
- # Signals Intelligence
- if symbolSet in ["50", "51", "52", "53", "54"]:
- self.icons = {
- 'Signal Intercept': '110000',
- 'Signal Intercept.Communications': '110100',
- 'Signal Intercept.Jammer': '110200',
- 'Signal Intercept.Radar': '110300'
- }
- self.m1 = {
- 'Unspecified': '00',
- 'Anti-Aircraft Fire Control': '01',
- 'Airborne Search and Bombing': '02',
- 'Airborne Intercept': '03',
- 'Altimeter': '04',
- 'Airborne Reconnaissance and Mapping': '05',
- 'Air Traffic Control': '06',
- 'Beacon Transponder (not IFF)': '07',
- 'Battlefield Surveillance': '08',
- 'Controlled Approach': '09',
- 'Controlled Intercept': '10',
- 'Cellular/Mobile': '11',
- 'Coastal Surveillance': '12',
- 'Decoy/Mimic': '13',
- 'Data Transmission': '14',
- 'Earth Surveillance': '15',
- 'Early Warning': '16',
- 'Fire Control': '17',
- 'Ground Mapping': '18',
- 'Height Finding': '19',
- 'Harbor Surveillance': '20',
- 'Identification, Friend or Foe (Interrogator)': '21',
- 'Instrument Landing System': '22',
- 'Ionospheric Sounding': '23',
- 'Identification, Friend or Foe (Transponder)': '24',
- 'Barrage Jammer': '25',
- 'Click Jammer': '26',
- 'Deceptive Jammer': '27',
- 'Frequency Swept Jammer': '28',
- 'Jammer (general)': '29',
- 'Noise Jammer': '30',
- 'Pulsed Jammer': '31',
- 'Repeater Jammer': '32',
- 'Spot Noise Jammer': '33',
- 'Transponder Jammer': '34',
- 'Missile Acquisition': '35',
- 'Missile Control': '36',
- 'Missile Downlink': '37',
- 'Meteorological': '38',
- 'Multi-Function': '39',
- 'Missile Guidance': '40',
- 'Missile Homing': '41',
- 'Missile Tracking': '42',
- 'Navigational/General': '43',
- 'Navigational/Distance Measuring Equipment': '44',
- 'Navigation/Terrain Following': '45',
- 'Navigational/Weather Avoidance': '46',
- 'Omni-Line of Sight (LOS)': '47',
- 'Proximity Use': '48',
- 'Point-to-Point Line of Sight (LOS)': '49',
- 'Instrumentation': '50',
- 'Range Only': '51',
- 'Sonobuoy': '52',
- 'Satellite Downlink': '53',
- 'Space': '54',
- 'Surface Search': '55',
- 'Shell Tracking': '56',
- 'Satellite Uplink': '57',
- 'Target Acquisition': '58',
- 'Target Illumination': '59',
- 'Tropospheric Scatter': '60',
- 'Target Tracking': '61',
- 'Unknown': '62',
- 'Video Remoting': '63',
- 'Experimental': '64'
- }
- self.m2 = {'': '00'}
+ if selected_symbol_set == "40":
+ self.symbol_set = symbol.Activities()
+ # Meteorological-Atmospheric
+ if selected_symbol_set == "45":
+ self.symbol_set = symbol.MeteorologicalAtmospheric()
+ # Meteorological-Oceanographic
+ if selected_symbol_set == "46":
+ self.symbol_set = symbol.MeteorologicalOceanographic()
+ # Meteorological-Space
+ if selected_symbol_set == "47":
+ self.symbol_set = symbol.MeteorologicalSpace()
+ # Signals Intelligence - Space
+ if selected_symbol_set == "50":
+ self.symbol_set = symbol.SignalsIntelligenceSpace()
+ # Signals Intelligence - Air
+ if selected_symbol_set == "51":
+ self.symbol_set = symbol.SignalsIntelligenceAir()
+ # Signals Intelligence - Land
+ if selected_symbol_set == "52":
+ self.symbol_set = symbol.SignalsIntelligenceLand()
+ # Signals Intelligence - Surface
+ if selected_symbol_set == "53":
+ self.symbol_set = symbol.SignalsIntelligenceSurface()
+ # Signals Intelligence - SubSurface
+ if selected_symbol_set == "54":
+ self.symbol_set = symbol.SignalsIntelligenceSubsurface()
# Cyberspace
- if symbolSet == "60":
- self.icons = {
- 'Botnet': '110000',
- 'Botnet.Command and Control (C2)': '110100',
- 'Botnet.Herder': '110200',
- 'Botnet.Callback Domain': '110300',
- 'Botnet.Zombie': '110400',
- 'Infection': '120000',
- 'Infection.Advanced Persistent Threat (APT)': '120100',
- 'Infection.Advanced Persistent Threat (APT).APT with C2': '120101',
- 'Infection.Advanced Persistent Threat (APT).APT with Self Propagation': '120102',
- 'Infection.Advanced Persistent Threat (APT).APT with C2 and Self Propagation': '120103',
- 'Infection.Advanced Persistent Threat (APT).APT Other': '120104',
- 'Infection.Non-Advanced Persistent Threat (NAPT)': '120200',
- 'Infection.Non-Advanced Persistent Threat (NAPT).NAPT with C2': '120201',
- 'Infection.Non-Advanced Persistent Threat (NAPT).NAPT with Self Propagation': '120202',
- 'Infection.Non-Advanced Persistent Threat (NAPT).NAPT with C2 and Self Propagation': '120203',
- 'Infection.Non-Advanced Persistent Threat (NAPT).NAPT Other': '120204',
- 'Health and Status': '130000',
- 'Health and Status.Normal': '130100',
- 'Health and Status.Network Outage': '130200',
- 'Health and Status.Unknown': '130300',
- 'Health and Status.Impaired': '130400',
- 'Device Type': '140000',
- 'Device Type.Core Router': '140100',
- 'Device Type.Router': '140200',
- 'Device Type.Cross Domain Solution': '140300',
- 'Device Type.Mail Server': '140400',
- 'Device Type.Web Server': '140500',
- 'Device Type.Domain Server': '140600',
- 'Device Type.File Server': '140700',
- 'Device Type.Peer-to-Peer Node': '140800',
- 'Device Type.Firewall': '140900',
- 'Device Type.Switch': '141000',
- 'Device Type.Host': '141100',
- 'Device Type.Virtual Private Network (VPN)': '141200',
- 'Device Domain': '150000',
- 'Device Domain.Department of Defense (DoD)': '150100',
- 'Device Domain.Government': '150200',
- 'Device Domain.Contractor': '150300',
- 'Device Domain.Supervisory Control and Data Acquisition (SCADA)': '150400',
- 'Device Domain.Non-Government': '150500',
- 'Effect': '160000',
- 'Effect.Infection': '160100',
- 'Effect.Degradation': '160200',
- 'Effect.Data Spoofing': '160300',
- 'Effect.Data Manipulation': '160400',
- 'Effect.Exfiltration': '160500',
- 'Effect.Power Outage': '160600',
- 'Effect.Network Outage': '160700',
- 'Effect.Service Outage': '160800',
- 'Effect.Device Outage': '160900'
- }
- self.m1 = {'': '00'}
- self.m2 = {'': '00'}
+ if selected_symbol_set == "60":
+ self.symbol_set = symbol.CyberSpace()
- self.comboIcon.blockSignals(True)
+ self.comboDescriptor.blockSignals(True)
+ self.comboEntity.blockSignals(True)
+ self.comboEntityType.blockSignals(True)
+ self.comboEntitySubtype.blockSignals(True)
self.comboModifier1.blockSignals(True)
self.comboModifier2.blockSignals(True)
- self.comboIcon.clear()
+ self.comboEntity.clear()
+ self.comboEntityType.clear()
+ self.comboEntitySubtype.clear()
self.comboModifier1.clear()
self.comboModifier2.clear()
- self.comboIcon.addItems(sorted(self.icons.keys()))
- self.comboModifier1.addItems(sorted(self.m1.keys()))
- self.comboModifier2.addItems(sorted(self.m2.keys()))
- self.computeCodeFromCombos()
- self.comboIcon.blockSignals(False)
+ self.comboEntity.addItems(self.symbol_set.entity.keys())
+ self.comboEntityType.addItems(self.symbol_set.entityType.keys())
+ self.comboEntitySubtype.addItems(self.symbol_set.entitySubType.keys())
+ self.comboModifier1.addItems(self.symbol_set.m1.keys())
+ self.comboModifier2.addItems(self.symbol_set.m2.keys())
+ self.comboDescriptor.blockSignals(False)
+ self.comboEntity.blockSignals(False)
+ self.comboEntityType.blockSignals(False)
+ self.comboEntitySubtype.blockSignals(False)
self.comboModifier1.blockSignals(False)
self.comboModifier2.blockSignals(False)
+ self.comboSymbolSet.blockSignals(False)
self.computeCodeFromCombos()
- self.comboSubtypes.setEnabled(self.symbolSet[self.comboSymbolSet.currentText()] == "10")
+ # self.comboEntitySubtype.setEnabled(self.symbolSet[self.comboSymbolSet.currentText()] == "10")
def renderSymbol(self):
text = self.txtCode.text()
+
symbol = symbolForCode(text, 100)
if symbol:
image = symbol.bigSymbolPreviewImage()
@@ -1903,3 +477,12 @@ def renderSymbol(self):
def accept(self):
self.newCode = self.txtCode.text()
self.close()
+
+
+if __name__ == "__main__":
+ import sys
+ from qgis.PyQt.QtWidgets import QApplication
+ app = QApplication(sys.argv)
+ dlg = SIDCDialog()
+ dlg.show()
+ sys.exit(app.exec_())
diff --git a/milstd2525/svg/Frames/0_036_0.svg b/milstd2525/svg/Frames/0_036_0.svg
new file mode 100644
index 0000000..086b675
--- /dev/null
+++ b/milstd2525/svg/Frames/0_036_0.svg
@@ -0,0 +1,10 @@
+
+
+
+
diff --git a/milstd2525/svg/Frames/0_036_0c.svg b/milstd2525/svg/Frames/0_036_0c.svg
new file mode 100644
index 0000000..302c6ee
--- /dev/null
+++ b/milstd2525/svg/Frames/0_036_0c.svg
@@ -0,0 +1,10 @@
+
+
+
+
diff --git a/milstd2525/svg/Frames/0_302_0.svg b/milstd2525/svg/Frames/0_302_0.svg
new file mode 100644
index 0000000..fe9c8ea
--- /dev/null
+++ b/milstd2525/svg/Frames/0_302_0.svg
@@ -0,0 +1,10 @@
+
+
+
+
diff --git a/milstd2525/svg/Frames/0_302_0c.svg b/milstd2525/svg/Frames/0_302_0c.svg
new file mode 100644
index 0000000..9e4609c
--- /dev/null
+++ b/milstd2525/svg/Frames/0_302_0c.svg
@@ -0,0 +1,10 @@
+
+
+
+
diff --git a/milstd2525/svg/Frames/0_302_1.svg b/milstd2525/svg/Frames/0_302_1.svg
new file mode 100644
index 0000000..72a4efa
--- /dev/null
+++ b/milstd2525/svg/Frames/0_302_1.svg
@@ -0,0 +1,19 @@
+
+
+
+
diff --git a/milstd2525/svg/Frames/0_302_1c.svg b/milstd2525/svg/Frames/0_302_1c.svg
new file mode 100644
index 0000000..0cb20c4
--- /dev/null
+++ b/milstd2525/svg/Frames/0_302_1c.svg
@@ -0,0 +1,19 @@
+
+
+
+
diff --git a/milstd2525/svg/Frames/0_336_0.svg b/milstd2525/svg/Frames/0_336_0.svg
new file mode 100644
index 0000000..ad329ad
--- /dev/null
+++ b/milstd2525/svg/Frames/0_336_0.svg
@@ -0,0 +1,10 @@
+
+
+
+
diff --git a/milstd2525/svg/Frames/0_336_0c.svg b/milstd2525/svg/Frames/0_336_0c.svg
new file mode 100644
index 0000000..b5894c9
--- /dev/null
+++ b/milstd2525/svg/Frames/0_336_0c.svg
@@ -0,0 +1,10 @@
+
+
+
+
diff --git a/milstd2525/svg/Frames/0_336_1.svg b/milstd2525/svg/Frames/0_336_1.svg
new file mode 100644
index 0000000..fb7c3c7
--- /dev/null
+++ b/milstd2525/svg/Frames/0_336_1.svg
@@ -0,0 +1,19 @@
+
+
+
+
diff --git a/milstd2525/svg/Frames/0_336_1c.svg b/milstd2525/svg/Frames/0_336_1c.svg
new file mode 100644
index 0000000..3b23f6c
--- /dev/null
+++ b/milstd2525/svg/Frames/0_336_1c.svg
@@ -0,0 +1,19 @@
+
+
+
+
diff --git a/milstd2525/svg/Frames/0_402_0.svg b/milstd2525/svg/Frames/0_402_0.svg
new file mode 100644
index 0000000..d83a874
--- /dev/null
+++ b/milstd2525/svg/Frames/0_402_0.svg
@@ -0,0 +1,9 @@
+
+
+
+
diff --git a/milstd2525/svg/Frames/0_402_0c.svg b/milstd2525/svg/Frames/0_402_0c.svg
new file mode 100644
index 0000000..e7ae9df
--- /dev/null
+++ b/milstd2525/svg/Frames/0_402_0c.svg
@@ -0,0 +1,9 @@
+
+
+
+
diff --git a/milstd2525/svg/Frames/0_402_1.svg b/milstd2525/svg/Frames/0_402_1.svg
new file mode 100644
index 0000000..1874dfe
--- /dev/null
+++ b/milstd2525/svg/Frames/0_402_1.svg
@@ -0,0 +1,23 @@
+
+
+
+
diff --git a/milstd2525/svg/Frames/0_402_1c.svg b/milstd2525/svg/Frames/0_402_1c.svg
new file mode 100644
index 0000000..96fcfdc
--- /dev/null
+++ b/milstd2525/svg/Frames/0_402_1c.svg
@@ -0,0 +1,23 @@
+
+
+
+
diff --git a/milstd2525/symbolsets.py b/milstd2525/symbolsets.py
new file mode 100644
index 0000000..1612ca0
--- /dev/null
+++ b/milstd2525/symbolsets.py
@@ -0,0 +1,3565 @@
+"""
+***************************************************************************
+ __init__.py
+ ---------------------
+ Date : December 2015
+ Copyright : (C) 2015-2016 Boundless, http://boundlessgeo.com
+***************************************************************************
+* *
+* This program is free software; you can redistribute it and/or modify *
+* it under the terms of the GNU General Public License as published by *
+* the Free Software Foundation; either version 2 of the License, or *
+* (at your option) any later version. *
+* *
+***************************************************************************
+"""
+
+__author__ = 'David Vick'
+__date__ = 'March 2020'
+__copyright__ = '(C) 2020 Planet, http://planet.com'
+
+# This will get replaced with a git SHA1 when you do a git archive
+
+__revision__ = '$Format:%H$'
+
+from collections import OrderedDict
+
+
+class SymbolSet:
+
+ def entitytypes(self, entity):
+ return self.entityType
+
+ def entitysubtypes(self, entity_type):
+ return self.entitySubType
+
+ def __init__(self):
+ self.entity = OrderedDict([('00 Not Applicable', '00')])
+ self.entityType = OrderedDict([('00 Not Applicable', '00')])
+ self.entitySubType = OrderedDict([('00 Not Applicable', '00')])
+ self.m1 = OrderedDict([('00 Not Applicable', '00')])
+ self.m2 = OrderedDict([('00 Not Applicable', '00')])
+
+
+class Air(SymbolSet):
+
+ entity_types = {
+ '11 Military': {
+ '01 Fixed-Wing': '01',
+ '02 Rotary-Wing': '02',
+ '03 Unmanned Aircraft (UA) / Unmanned Aerial Vehicle (UAV) / Unmanned Aircraft System (UAS) / Remotely Piloted Vehicle (RPV)': '03',
+ '04 Vertical-Takeoff UAC (VT-UAV)': '04',
+ '05 Lighter Than Air': '05',
+ '06 Airship': '06',
+ '07 Tethered Lighter Than Air': '07'
+ }
+ }
+
+ entity_subtypes = {
+ '01 Fixed-Wing': {
+ '01 Medical Evacuation (MEDEVAC)': '01',
+ '02 Attack/Strike': '02',
+ '03 Bomber': '03',
+ '04 Fighter': '04',
+ '05 Fighter/Bomber': '05',
+ '07 Cargo': '07',
+ '08 Electronic Combat (EC)/Jammer': '08',
+ '09 Tanker': '09',
+ '10 Patrol': '10',
+ '11 Reconnaissance': '11',
+ '12 Trainer': '12',
+ '13 Utility': '13',
+ '14 VSTOL': '14',
+ '15 Airborne Command Post (ACP)': '15',
+ '16 Airborne Early Warning (AEW)': '16',
+ '17 Antisurface Warfare': '17',
+ '18 Antisubmarine Warfare': '18',
+ '19 Communications': '19',
+ '20 Combat Search and Rescue (CSAR)': '20',
+ '21 Electronic Support (ES)': '21',
+ '22 Government': '22',
+ '23 Mine Countermeasures (MCM)': '23',
+ '24 Personnel Recovery': '24',
+ '25 Search and Rescue': '25',
+ '26 Special Operations Forces': '26',
+ '27 Ultra Light': '27',
+ '28 Photographic Reconnaissance': '28',
+ '29 Very Important Person (VIP)': '29',
+ '30 Suppression of Enemy Air Defense': '30',
+ '31 Passenger': '31',
+ '32 Escort': '32',
+ '33 Electronic Attack': '33'
+ }
+ }
+
+ def entitytypes(self, entity):
+ if entity in self.entity_types:
+ return self.entity_types[entity]
+ else:
+ return self.entityType
+
+ def entitysubtypes(self, entity_type):
+ if entity_type in self.entity_subtypes:
+ return self.entity_subtypes[entity_type]
+ else:
+ return self.entitySubType
+
+ def __init__(self):
+ super().__init__()
+
+ self.entity.update({
+ '11 Military': '11',
+ '12 Civilian': '12',
+ '13 Weapon': '13',
+ '14 Manual Track': '14'
+ })
+
+ self.m1.update({
+ '01 Attack/Strike': '01',
+ '02 Bomber': '02',
+ '03 Cargo': '03',
+ '04 Fighter': '04',
+ '05 Interceptor': '05',
+ '06 Tanker': '06',
+ '07 Utility': '07',
+ '08 Vertical or Short Take-off and Landing (VSTOL)/ Vertical Take-off and Landing (VTOL)': '08',
+ '09 Passenger': '09',
+ '10 Ultra Light': '10',
+ '11 Airborne Command Post (ACP)': '11',
+ '12 Airborne Early Warning (AEW)': '12',
+ '13 Government': '13',
+ '14 Medical Evacuation (MEDEVAC)': '14',
+ '15 Escort': '15',
+ '16 Electronic Combat (EC)/Jammer': '16',
+ '17 Patrol': '17',
+ '18 Reconnaissance': '18',
+ '19 Trainer': '19',
+ '20 Photographic (Reconnaissance)': '20',
+ '21 Personnel Recovery ': '21',
+ '22 Antisubmarine Warfare': '22',
+ '23 Communications': '23',
+ '24 Electronic Support (ES)': '24',
+ '25 Mine Countermeasures (MCM)': '25',
+ '26 Search and Rescue': '26',
+ '27 Special Operations Forces': '27',
+ '28 Surface Warfare': '28',
+ '29 Very Important Person (VIP) Transport': '29',
+ '30 Combat Search and Rescue (CSAR)': '30',
+ '31 Suppression of Enemy Air Defenses': '31',
+ '32 Antisurface Warfare': '32',
+ '33 Fighter/Bomber': '33',
+ '34 Intensive Care': '34',
+ '35 Electronic Attack (EA)': '35',
+ '36 Multimission': '36',
+ '37 Hijacking': '37',
+ '38 ASW Helo- LAMPS': '38',
+ '39 ASW Helo - SH-60R': '39'
+ })
+
+ self.m2.update({
+ '01 Heavy': '01',
+ '02 Medium': '02',
+ '03 Light': '03',
+ '04 Boom-Only': '04',
+ '05 Drogue-Only': '05',
+ '06 Boom and Drogue': '06',
+ '07 Close Range': '07',
+ '08 Short Range': '08',
+ '09 Medium Range': '09',
+ '10 Long Range': '10',
+ '11 Downlinked': '11'
+ })
+
+
+class AirMissle(SymbolSet):
+ entity_types = {
+ '11 Missile': '11'
+ }
+
+ entity_subtypes = {}
+
+ def entitytypes(self, entity):
+ if entity in self.entity_types:
+ return self.entity_types[entity]
+ else:
+ return self.entityType
+
+ def entitysubtypes(self, entity_type):
+ if entity_type in self.entity_subtypes:
+ return self.entity_subtypes[entity_type]
+ else:
+ return self.entitySubType
+
+ def __init__(self):
+ super().__init__()
+
+ self.entity.update({
+ '11 Missile': '11'
+ })
+
+ self.m1.update({
+ '01 Air': '01',
+ '02 Surface': '02',
+ '03 Subsurface': '03',
+ '04 Space': '04',
+ '05 Anti-Ballistic': '05',
+ '06 Ballistic': '06',
+ '07 Cruise': '07',
+ '08 Interceptor': '08'
+ })
+
+ self.m2.update({
+ '01 Air': '01',
+ '02 Surface': '02',
+ '03 Subsurface': '03',
+ '04 Space': '04',
+ '05 Launched': '05',
+ '06 Missile': '06',
+ '07 Patriot': '07',
+ '08 Standard Missile-2 (SM-2)': '08',
+ '09 Standard Missile-6 (SM-6)': '09',
+ '10 Evolved Sea Sparrow Missile (ESSM)': '10',
+ '11 Rolling Airframe Missile (RAM)': '11',
+ '12 Short Range': '12',
+ '13 Medium Range': '13',
+ '14 Intermediate Range': '14',
+ '15 Long Range': '15',
+ '16 Intercontinental': '16'
+ })
+
+
+class Space(SymbolSet):
+ entity_types = {
+ '11 Military': {
+ '00': '00',
+ '01 Space Vehicle': '01',
+ '02 Re-Entry Vehicle': '02',
+ '03 Planet Lander': '03',
+ '04 Orbiter Shuttle': '04',
+ '05 Capsule': '05',
+ '06 Satellite, General': '06',
+ '07 Satellite': '07',
+ '08 Antisatellite Weapon': '08',
+ '09 Astronomical Satellite': '09',
+ '10 Biosatellite': '10',
+ '11 Communications Satellite': '11',
+ '12 Earth Observation Satellite': '12',
+ '13 Miniaturized Satellite': '13',
+ '14 Navigational Satellite': '14',
+ '15 Reconnaissance Satellite': '15',
+ '16 Space Station': '16',
+ '17 Tethered Satellite': '17',
+ '18 Weather Satellite': '18',
+ '19 Space Launched Vehicle (SLV)': '19',
+ },
+ '12 Civilian': {
+ '00': '00',
+ '01 Orbiter Shuttle': '01',
+ '02 Capsule': '02',
+ '03 Satellite': '03',
+ '04 Astronomical Satellite': '04',
+ '05 Biosatellite': '05',
+ '06 Communications Satellite': '06',
+ '07 Earth Observation Satellite': '07',
+ '08 Miniaturized Satellite': '08',
+ '09 Navigational Satellite': '09',
+ '10 Space Station': '10',
+ '11 Tethered Satellite': '11',
+ '12 Weather Satellite': '12',
+ }
+ }
+
+ entity_subtypes = {}
+
+ def entitytypes(self, entity):
+ if entity in self.entity_types:
+ return self.entity_types[entity]
+ else:
+ return self.entityType
+
+ def entitysubtypes(self, entity_type):
+ if entity_type in self.entity_subtypes:
+ return self.entity_subtypes[entity_type]
+ else:
+ return self.entitySubType
+
+ def __init__(self):
+ super().__init__()
+
+ self.entity.update({
+ '11 Military': '11',
+ '12 Civilian': '12',
+ '13 Manual Track': '13'
+ })
+
+ self.m1.update({
+ '01 Low Earth Orbit (LEO)': '01',
+ '02 Medium Earth Orbit (MEO)': '02',
+ '03 High Earth Orbit (HEO)': '03',
+ '04 Geosynchronous Orbit (GSO)': '04',
+ '05 Geostationary Orbit (GO)': '05',
+ '06 Molniya Orbit (MO)': '06'
+ })
+
+ self.m2.update({
+ '00 Unspecified': '00',
+ '01 Optical': '01',
+ '02 Infrared': '02',
+ '03 Radar': '03',
+ '04 Signals Intelligence (SIGINT)': '04'
+ })
+
+
+class SpaceMissle(SymbolSet):
+ entity_types = {}
+
+ entity_subtypes = {}
+
+ def entitytypes(self, entity):
+ if entity in self.entity_types:
+ return self.entity_types[entity]
+ else:
+ return self.entityType
+
+ def entitysubtypes(self, entity_type):
+ if entity_type in self.entity_subtypes:
+ return self.entity_subtypes[entity_type]
+ else:
+ return self.entitySubType
+
+ def __init__(self):
+ super().__init__()
+
+ self.entity.update({
+ '11 Military': '11'
+ })
+
+ self.m1.update({
+ '01 Ballistic': '01',
+ '02 Space': '02',
+ '03 Interceptor': '03',
+ '04 Reserved for Future Use': '04-98'
+ })
+
+ self.m2.update({
+ '01 Short Range': '01',
+ '02 Medium Range': '02',
+ '03 Intermediate Range': '03',
+ '04 Long Range': '04',
+ '05 Intercontinental ': '05',
+ '06 Arrow': '06',
+ '07 Ground-Based Interceptor (GBI)': '07',
+ '08 Patriot': '08',
+ '09 Standard Missile Terminal Phase (SM-T)': '09',
+ '10 Standard Missile - 3 (SM-3)': '10',
+ '11 Terminal High Altitude Area Defense (THAAD)': '11',
+ '12 Space': '12'
+ })
+
+
+class LandUnit(SymbolSet):
+ entity_types = {
+ '11 Command and Control': {
+ '00': '00',
+ '01 Broadcast Transmitter Antennae': '01',
+ '02 Civil Affairs ': '02',
+ '03 Civil-Military Cooperation ': '03',
+ '04 Information Operations': '04',
+ '05 Liaison': '05',
+ '06 Military Information Support Operations (MISO)': '06',
+ '07 Radio': '07',
+ '08 Radio Relay': '08',
+ '09 Radio Teletype Center': '09',
+ '10 Signal': '10',
+ '11 Tactical Satellite': '11',
+ '12 Video Imagery (Combat Camera)': '12'
+ },
+ '12 Movement and Maneuver': {
+ '00': '00',
+ '01 Air Assault with Organic Lift': '01',
+ '02 Air Traffic Services/Airfield Operations': '02',
+ '03 Amphibious': '03',
+ '04 Antitank/Antiarmor': '04',
+ '05 Armor/Armored/Mechanized/Self-Propelled/Tracked': '05',
+ '06 Army Aviation/Aviation Rotary Wing': '06',
+ '07 Aviation Composite': '07',
+ '08 Aviation Fixed Wing': '08',
+ '09 Combat': '09',
+ '10 Combined Arms': '10',
+ '11 Infantry': '11',
+ '12 Observer': '12',
+ '13 Reconnaissance/Cavalry/Scout': '13',
+ '14 Sea Air Land (SEAL)': '14',
+ '15 Sniper': '15',
+ '16 Surveillance': '16',
+ '17 Special Forces': '17',
+ '18 Special Operations Forces (SOF)': '18',
+ '19 Unmanned Aerial Systems': '19'
+ },
+ "13 Fires": {
+ '00': '00',
+ '01 Air Defense': '01',
+ '02 Air/Land Naval Gunfire Liaison': '02',
+ '03 Field Artillery': '03',
+ '04 Field Artillery Observer': '04',
+ '05 Joint Fire Support': '05',
+ '06 Meteorological': '06',
+ '07 Missile': '07',
+ '08 Mortar': '08',
+ '09 Survey': '09'
+ },
+ "14 Protection": {
+ '00': '00',
+ '01 Chemical Biological Radiological Nuclear Defense': '01',
+ '02 Combat Support (Maneuver Enhancement)': '02',
+ '03 Criminal Investigation Division': '03',
+ '04 Diving': '04',
+ '05 Dog': '05',
+ '06 Drilling': '06',
+ '07 Engineer': '07',
+ '08 Explosive Ordnance Disposal (EOD)': '08',
+ '09 Field Camp Construction': '09',
+ '10 Fire Fighting/Fire Protection': '10',
+ '11 Geospatial Support/Geospatial Information Support': '11',
+ '12 Military Police': '12',
+ '13 Mine': '13',
+ '14 Mine Clearing': '14',
+ '15 Mine Launching': '15',
+ '16 Mine Laying': '16',
+ '17 Security': '17',
+ '18 Search and Rescue': '18',
+ '19 Security Police (Air)': '19',
+ '20 Shore Patrol': '20',
+ '21 Topographic': '21'
+ },
+ "15 Intelligence": {
+ '00': '00',
+ '01 Analysis': '01',
+ '02 Counterintelligence': '02',
+ '03 Direction Finding': '03',
+ '04 Electronic Ranging': '04',
+ '05 Electronic Warfare': '05',
+ '06 Intercept (Search and Recording)': '06',
+ '07 Interrogation': '07',
+ '08 Jamming': '08',
+ '09 Joint Intelligence Center': '09',
+ '10 Military Intelligence': '10',
+ '11 Search': '11',
+ '12 Sensor': '12'
+ },
+ "16 Sustainment": {
+ '00': '00',
+ '01 Administrative': '01',
+ '02 All Classes of Supply': '02',
+ '03 Airport of Debarkation/Airport of Embarkation ': '03',
+ '04 Ammunition': '04',
+ '05 Band': '05',
+ '06 Combat Service Support': '06',
+ '07 Finance': '07',
+ '08 Judge Advocate General': '08',
+ '09 Labor': '09',
+ '10 Laundry/Bath': '10',
+ '11 Maintenance': '11',
+ '12 Material': '12',
+ '13 Medical': '13',
+ '14 Medical Treatment Facility': '14',
+ '15 Morale, Welfare and Recreation': '15',
+ '16 Mortuary Affairs/Graves Registration': '16',
+ '17 Multiple Classes of Supply': '17',
+ '18 NATO Supply Class I': '18',
+ '19 NATO Supply Class II': '19',
+ '20 NATO Supply Class III': '20',
+ '21 NATO Supply Class IV': '21',
+ '22 NATO Supply Class V': '22',
+ '23 Ordnance': '23',
+ '24 Personnel Services': '24',
+ '25 Petroleum, Oil and Lubricants': '25',
+ '26 Pipeline': '26',
+ '27 Postal': '27',
+ '28 Public Affairs/Public Information': '28',
+ '29 Quartermaster': '29',
+ '30 Railhead': '30',
+ '31 Religious Support': '31',
+ '32 Replacement Holding Unit': '32',
+ '33 Sea Port of Debarkation/Sea Port of Embarkation ': '33',
+ '34 Supply': '34',
+ '35 Joint Information Bureau': '35',
+ '36 Transportation': '36',
+ '37 US Supply Class I': '37',
+ '38 US Supply Class II': '38',
+ '39 US Supply Class III': '39',
+ '40 US Supply Class IV': '40',
+ '41 US Supply Class V': '41',
+ '42 US Supply Class VI': '42',
+ '43 US Supply Class VII': '43',
+ '44 US Supply Class VIII': '44',
+ '45 US Supply Class IX': '45',
+ '46 US Supply Class X': '46',
+ '47 Water': '47',
+ '48 Water Purification': '48',
+ '49 Broadcast': '49'
+ },
+ "17 Naval": {
+ '00': '00',
+ '01 Naval': '01'
+ },
+ "18 Named Headquarters": {
+ '00': '00',
+ '01 Allied Command Europe Rapid Reaction Corps (ARRC)': '01',
+ '02 Allied Command Operations': '02',
+ '03 International Security Assistance Force (ISAF)': '03',
+ '04 Multinational (MN)': '04'
+ },
+ "20 Law Enforcement": {
+ '00': '00',
+ '01 Bureau of Alcohol, Tobacco, Firearms and Explosives (ATF) (Department of Justice)': '01',
+ '02 Border Patrol': '02',
+ '03 Customs Service': '03',
+ '04 Drug Enforcement Administration (DEA)': '04',
+ '05 Department of Justice (DOJ)': '05',
+ '06 Federal Bureau of Investigation (FBI)': '06',
+ '07 Police': '07',
+ '08 Prison': '08',
+ '09 United States Secret Service (USSS)': '09',
+ '10 Transportation Security Administration (TSA)': '10',
+ '11 Coast Guard': '11',
+ '12 US Marshals Service': '12',
+ '13 Internal Security Force': '13'
+ }
+ }
+
+ entity_subtypes = {
+ '06 Military Information Support Operations (MISO)': {
+ '00': '00',
+ '01 Broadcast Transmitter Antennae': '01'
+ },
+ '10 Signal': {
+ '00': '00',
+ '01 Radio': '01',
+ '02 Radio Relay': '02',
+ '03 Teletype': '03',
+ '04 Tactical Satellite ': '04',
+ '05 Video Imagery (Combat Camera)': '05',
+ '95 Headquarters Element': '95',
+ '96 Division and Below Support': '96',
+ '97 Corps Support': '97',
+ '98 Theater/Echelon Above Corps Support': '98'
+ },
+ '04 Antitank/Antiarmor': {
+ '00': '00',
+ '01 Armored': '01',
+ '02 Motorized': '02'
+ },
+ '05 Armor/Armored/Mechanized/Self-Propelled/Tracked': {
+ '00': '00',
+ '01 Reconnaissance/Cavalry/Scout': '01',
+ '02 Amphibious': '02',
+ '95 Headquarters Element': '95',
+ '96 Division and Below Support': '96',
+ '97 Corps Support': '97',
+ '98 Theater/Echelon Above Corps Support': '98'
+ },
+ '06 Army Aviation/Aviation Rotary Wing': {
+ '00': '00',
+ '01 Reconnaissance': '01',
+ '95 Headquarters Element': '95',
+ '96 Division and Below Support': '96',
+ '97 Corps Support': '97',
+ '98 Theater/Echelon Above Corps Support': '98'
+ },
+ '07 Aviation Composite': {
+ '00': '00',
+ '95 Headquarters Element': '95',
+ '96 Division and Below Support': '96',
+ '97 Corps Support': '97',
+ '98 Theater/Echelon Above Corps Support': '98'
+ },
+ '08 Aviation Fixed Wing': {
+ '00': '00',
+ '01 Reconnaissance': '01',
+ '95 Headquarters Element': '95',
+ '96 Division and Below Support': '96',
+ '97 Corps Support': '97',
+ '98 Theater/Echelon Above Corps Support': '98'
+ },
+ '09 Combat': {
+ '00': '00',
+ '95 Headquarters Element': '95',
+ '96 Division and Below Support': '96',
+ '97 Corps Support': '97',
+ '98 Theater/Echelon Above Corps Support': '98'
+ },
+ '10 Combined Arms': {
+ '00': '00',
+ '95 Headquarters Element': '95',
+ '96 Division and Below Support': '96',
+ '97 Corps Support': '97',
+ '98 Theater/Echelon Above Corps Support': '98'
+ },
+ '11 Infantry': {
+ '00': '00',
+ '01 Amphibious': '01',
+ '02 Armored/Mechanized/Tracked': '02',
+ '03 Main Gun System ': '03',
+ '04 Motorized ': '04',
+ '05 Infantry Fighting Vehicle': '05',
+ '95 Headquarters Element ': '95',
+ '96 Division and Below Support': '96',
+ '97 Corps Support': '97',
+ '98 Theater/Echelon Above Corps Support': '98'
+ },
+ '12 Observer': {
+ '00': '00',
+ '95 Headquarters Element': '95',
+ '96 Division and Below Support': '96',
+ '97 Corps Support': '97',
+ '98 Theater/Echelon Above Corps Support': '98'
+ },
+ '13 Reconnaissance/Cavalry/Scout': {
+ '00': '00',
+ '01 Reconnaissance and Surveillance': '01',
+ '02 Marine': '02',
+ '03 Motorized': '03',
+ '95 Headquarters Element': '95',
+ '96 Division and Below Support': '96',
+ '97 Corps Support': '97',
+ '98 Theater/Echelon Above Corps Support': '98'
+ },
+ '14 Sea Air Land (SEAL)': {
+ '00': '00',
+ '95 Headquarters Element': '95',
+ '96 Division and Below Support': '96',
+ '97 Corps Support': '97',
+ '98 Theater/Echelon Above Corps Support': '98'
+ },
+ '15 Sniper': {
+ '00': '00',
+ '95 Headquarters Element': '95',
+ '96 Division and Below Support': '96',
+ '97 Corps Support': '97',
+ '98 Theater/Echelon Above Corps Support': '98'
+ },
+ '16 Surveillance': {
+ '00': '00',
+ '95 Headquarters Element': '95',
+ '96 Division and Below Support': '96',
+ '97 Corps Support': '97',
+ '98 Theater/Echelon Above Corps Support': '98'
+ },
+ '17 Special Forces': {
+ '00': '00',
+ '95 Headquarters Element': '95',
+ '96 Division and Below Support': '96',
+ '97 Corps Support': '97',
+ '98 Theater/Echelon Above Corps Support': '98'
+ },
+ '18 Special Operations Forces (SOF)': {
+ '00': '00',
+ '01 Fixed Wing MISO': '01',
+ '02 Ground': '02',
+ '03 Special Boat': '03',
+ '04 Special SSNR': '04',
+ '05 Underwater Demolition Team': '05',
+ '95 Headquarters Element': '95',
+ '96 Division and Below Support': '96',
+ '97 Corps Support': '97',
+ '98 Theater/Echelon Above Corps Support': '98'
+ },
+ '19 Unmanned Aerial Systems': {
+ '00': '00',
+ '95 Headquarters Element': '95',
+ '96 Division and Below Support': '96',
+ '97 Corps Support': '97',
+ '98 Theater/Echelon Above Corps Support': '98'
+ },
+ '01 Air Defense': {
+ '00': '00',
+ '01 Main Gun System': '01',
+ '02 Missile': '02',
+ '95 Headquarters Element': '95',
+ '96 Division and Below Support': '96',
+ '97 Corps Support': '97',
+ '98 Theater/Echelon Above Corps Support': '98'
+ },
+ '02 Air/Land Naval Gunfire Liaison': {
+ '00': '00',
+ '95 Headquarters Element': '95',
+ '96 Division and Below Support': '96',
+ '97 Corps Support': '97',
+ '98 Theater/Echelon Above Corps Support': '98'
+ },
+ '03 Field Artillery': {
+ '00': '00',
+ '01 Self-propelled': '01',
+ '02 Target Acquisition': '02',
+ '95 Headquarters Element': '95',
+ '96 Division and Below Support': '96',
+ '97 Corps Support': '97',
+ '98 Theater/Echelon Above Corps Support': '98'
+ },
+ '04 Field Artillery Observer': {
+ '00': '00',
+ '95 Headquarters Element': '95',
+ '96 Division and Below Support': '96',
+ '97 Corps Support': '97',
+ '98 Theater/Echelon Above Corps Support': '98'
+ },
+ '05 Joint Fire Support': {
+ '00': '00',
+ '95 Headquarters Element': '95',
+ '96 Division and Below Support': '96',
+ '97 Corps Support': '97',
+ '98 Theater/Echelon Above Corps Support': '98'
+ },
+ '06 Meteorological': {
+ '00': '00',
+ '95 Headquarters Element': '95',
+ '96 Division and Below Support': '96',
+ '97 Corps Support': '97',
+ '98 Theater/Echelon Above Corps Support': '98'
+ },
+ '07 Missile': {
+ '00': '00',
+ '95 Headquarters Element': '95',
+ '96 Division and Below Support': '96',
+ '97 Corps Support': '97',
+ '98 Theater/Echelon Above Corps Support': '98'
+ },
+ '08 Mortar': {
+ '00': '00',
+ '01 Armored/Mechanized/Tracked': '01',
+ '02 Self-Propelled Wheeled': '02',
+ '03 Towed': '03',
+ '95 Headquarters Element': '95',
+ '96 Division and Below Support': '96',
+ '97 Corps Support': '97',
+ '98 Theater/Echelon Above Corps Support': '98'
+ },
+ '09 Survey': {
+ '00': '00',
+ '95 Headquarters Element': '95',
+ '96 Division and Below Support': '96',
+ '97 Corps Support': '97',
+ '98 Theater/Echelon Above Corps Support': '98'
+ },
+ 'Chemical Biological Radiological Nuclear Defense': {
+ '00': '00',
+ '01 Mechanized': '01',
+ '02 Motorized': '02',
+ '03 Reconnaissance': '03',
+ '04 Reconnaissance Armored': '04',
+ '05 Reconnaissance Equipped': '05',
+ '95 Headquarters Element': '95',
+ '96 Division and Below Support': '96',
+ '97 Corps Support': '97',
+ '98 Theater/Echelon Above Corps Support': '98'
+ },
+ 'Combat Support (Maneuver Enhancement)': {
+ '00': '00',
+ '95 Headquarters Element': '95',
+ '96 Division and Below Support': '96',
+ '97 Corps Support': '97',
+ '98 Theater/Echelon Above Corps Support': '98'
+ },
+ 'Engineer': {
+ '00': '00',
+ '01 Mechanized': '01',
+ '02 Motorized': '02',
+ '03 Reconnaissance': '03',
+ '95 Headquarters Element': '95',
+ '96 Division and Below Support': '96',
+ '97 Corps Support': '97',
+ '98 Theater/Echelon Above Corps Support': '98'
+ },
+ 'Military Police': {
+ '00': '00',
+ '95 Headquarters Element': '95',
+ '96 Division and Below Support': '96',
+ '97 Corps Support': '97',
+ '98 Theater/Echelon Above Corps Support': '98'
+ },
+ 'Security': {
+ '00': '00',
+ '01 Mechanized': '01',
+ '02 Motorized': '02',
+ '95 Headquarters Element': '95',
+ '96 Division and Below Support': '96',
+ '97 Corps Support': '97',
+ '98 Theater/Echelon Above Corps Support': '98'
+ },
+ 'Electronic Warfare': {
+ '00': '00',
+ '01 Analysis': '01',
+ '02 Direction Finding': '02',
+ '03 Intercept': '03',
+ '04 Jamming': '04',
+ '05 Search': '05',
+ '95 Headquarters Element': '95',
+ '96 Division and Below Support': '96',
+ '97 Corps Support': '97',
+ '98 Theater/Echelon Above Corps Support': '98'
+ },
+ 'Military Intelligence': {
+ '00': '00',
+ '95 Headquarters Element': '95',
+ '96 Division and Below Support': '96',
+ '97 Corps Support': '97',
+ '98 Theater/Echelon Above Corps Support': '98'
+ },
+ 'Administrative': {
+ '00': '00',
+ '95 Headquarters Element ': '95',
+ '96 Division and Below Support': '96',
+ '97 Corps Support': '97',
+ '98 Theatre/Echelons Above Corps Support': '98'
+ }
+ }
+
+ def entitytypes(self, entity):
+ if entity in self.entity_types:
+ return self.entity_types[entity]
+ else:
+ return self.entityType
+
+ def entitysubtypes(self, entity_type):
+ if entity_type in self.entity_subtypes:
+ return self.entity_subtypes[entity_type]
+ else:
+ return self.entitySubType.update({
+ '95 HEADQUARTERS ELEMENT': '95',
+ '96 DIVISION AND BELOW SUPPORT': '96',
+ '97 CORPS SUPPORT': '97',
+ '98 THEATER/ECHELONS ABOVE CORPS SUPPORT': '98'
+ })
+
+ def __init__(self):
+ super().__init__()
+
+ self.entity.update({
+ '11 Command and Control': '11',
+ '12 Movement and Maneuver': '12',
+ '13 Fires': '13',
+ '14 Protection': '14',
+ '15 Intelligence': '15',
+ '16 Sustainment': '16',
+ '17 Naval': '17',
+ '18 Named Headquarters': '18',
+ '19 Emergency Operation': '19',
+ '20 Law Enforcement': '20'
+ })
+
+ self.m1.update({
+ '00 Unspecified': '00',
+ '01 Air Mobile/Air Assault (US only)': '01',
+ '02 Area': '02',
+ '03 Attack': '03',
+ '04 Biological': '04',
+ '05 Border': '05',
+ '06 Bridging': '06',
+ '07 Chemical': '07',
+ '08 Close Protection': '08',
+ '09 Combat': '09',
+ '10 Command and Control': '10',
+ '11 Communications Contingency Package': '11',
+ '12 Construction': '12',
+ '13 Cross Cultural Communication': '13',
+ '14 Crowd and Riot Control': '14',
+ '15 Decontamination': '15',
+ '16 Detention': '16',
+ '17 Direct Communications': '17',
+ '18 Diving': '18',
+ '19 Division': '19',
+ '20 Dog': '20',
+ '21 Drilling': '21',
+ '22 Electro-Optical': '22',
+ '23 Enhanced': '23',
+ '24 Explosive Ordnance Disposal (EOD)': '24',
+ '25 Fire Direction Center': '25',
+ '26 Force': '26',
+ '27 Forward': '27',
+ '28 Ground Station Module': '28',
+ '29 Landing Support': '29',
+ '30 Large Extension Node': '30',
+ '31 Maintenance': '31',
+ '32 Meteorological': '32',
+ '33 Mine Countermeasure': '33',
+ '34 Missile': '34',
+ '35 Mobile Advisor and Support': '35',
+ '36 Mobile Subscriber Equipment': '36',
+ '37 Mobility Support': '37',
+ '38 Movement Control Center': '38',
+ '39 Multinational': '39',
+ '40 Multinational Specialized Unit': '40',
+ '41 Multiple Rocket Launcher': '41',
+ '42 NATO Medical Role 1 ': '42',
+ '43 NATO Medical Role 2': '43',
+ '44 NATO Medical Role 3': '44',
+ '45 NATO Medical Role 4': '45',
+ '46 Naval': '46',
+ '47 Node Center': '47',
+ '48 Nuclear': '48',
+ '49 Operations': '49',
+ '50 Radar': '50',
+ '51 Radio Frequency Identification (RFID) Interrogator / Sensor': '51',
+ '52 Radiological': '52',
+ '53 Search and Rescue': '53',
+ '54 Security': '54',
+ '55 Sensor': '55',
+ '56 Sensor Control Module (SCM)': '56',
+ '57 Signals Intelligence': '57',
+ '58 Single Shelter Switch': '58',
+ '59 Single Rocket Launcher': '59',
+ '60 Smoke': '60',
+ '61 Sniper': '61',
+ '62 Sound Ranging': '62',
+ '63 Special Operations Forces (SOF)': '63',
+ '64 Special Weapons and Tactics': '64',
+ '65 Survey': '65',
+ '66 Tactical Exploitation': '66',
+ '67 Target Acquisition': '67',
+ '68 Topographic': '68',
+ '69 Utility': '69',
+ '70 Video Imagery (Combat Camera)': '70',
+ '71 Accident': '71',
+ '72 Other': '72',
+ '73 Civilian': '73',
+ '74 Antisubmarine Warfare': '74',
+ '75 Medevac': '75',
+ '76 Ranger': '76',
+ '77 Support': '77',
+ '78 Aviation': '78'
+ })
+
+ self.m2.update({
+ '00 Unspecified': '00',
+ '01 Airborne': '01',
+ '02 Arctic': '02',
+ '03 Battle Damage Repair': '03',
+ '04 Bicycle Equipped': '04',
+ '05 Casualty Staging': '05',
+ '06 Clearing': '06',
+ '07 Close Range': '07',
+ '08 Control': '08',
+ '09 Decontamination': '09',
+ '10 Demolition': '10',
+ '11 Dental': '11',
+ '12 Digital': '12',
+ '13 Enhanced Position Location Reporting System (EPLRS)': '13',
+ '14 Equipment': '14',
+ '15 Heavy': '15',
+ '16 High Altitude': '16',
+ '17 Intermodal': '17',
+ '18 Intensive Care': '18',
+ '19 Light': '19',
+ '20 Laboratory': '20',
+ '21 Launcher': '21',
+ '22 Long Range': '22',
+ '23 Low Altitude': '23',
+ '234 Medium': '24',
+ '25 Medium Altitude': '25',
+ '26 Medium Range': '26',
+ '27 Mountain': '27',
+ '28 High to Medium Altitude': '28',
+ '29 Multi�Channel': '29',
+ '30 Optical (Flash)': '30',
+ '31 Pack Animal': '31',
+ '32 Patient Evacuation Coordination': '32',
+ '33 Preventive Maintenance': '33',
+ '34 Psychological': '34',
+ '35 Radio Relay Line of Sight': '35',
+ '36 Railroad': '36',
+ '37 Recovery (Unmanned Systems)': '37',
+ '38 Recovery (Maintenance)': '38',
+ '39 Rescue Coordination Center': '39',
+ '40 Riverine': '40',
+ '41 Single Channel': '41',
+ '42 Ski': '42',
+ '43 Short Range': '43',
+ '44 Strategic': '44',
+ '45 Support': '45',
+ '46 Tactical': '46',
+ '47 Towed': '47',
+ '48 Troop': '48',
+ '49 Vertical or Short Take�Off and Landing (VTOL/VSTOL)': '49',
+ '50 Veterinary': '50',
+ '51 Wheeled': '51',
+ '52 High to Low Altitude': '52',
+ '53 Medium to Low Altitude': '53',
+ '54 Attack': '54',
+ '55 Refuel': '55',
+ '56 Utility': '56',
+ '57 Combat Search and Rescue': '57'
+ })
+
+
+class LandCivilianUnit(SymbolSet):
+ entity_types = {
+ 'Civilian': {
+ '01 Environmental Protection': '01',
+ '02 Governmental Organization': '02',
+ '03 Individual': '03',
+ '04 Organization or Group': '04',
+ '05 Killing Victim': '05',
+ '06 Killing Victims': '06',
+ '07 Victim of an Attempted Crime': '07',
+ '08 Spy': '08',
+ '09 Composite Loss': '09',
+ '10 Emergency Medical Operation': '10'
+ }
+ }
+
+ entity_subtypes = {}
+
+ def entitytypes(self, entity):
+ if entity in self.entity_types:
+ return self.entity_types[entity]
+ else:
+ return self.entityType
+
+ def entitysubtypes(self, entity_type):
+ if entity_type in self.entity_subtypes:
+ return self.entity_subtypes[entity_type]
+ else:
+ return self.entitySubType
+
+ def __init__(self):
+ super().__init__()
+ self.entity.update({
+ '11 Civilian': '11',
+ })
+
+ self.m1.update({
+ '00 Unspecified': '00',
+ '01 Assassination': '01',
+ '02 Execution (Wrongful Killing)': '02',
+ '03 Murder Victims': '03',
+ '04 Hijacking': '04',
+ '05 Kidnapping': '05',
+ '06 Piracy': '06',
+ '07 Rape': '07',
+ '08 Civilian': '08',
+ '09 Displaced Person(s), Refugee(s) and Evacuee(s)': '09',
+ '10 Foreign Fighter(s)': '10',
+ '11 Gang Member or Gang': '11',
+ '12 Government Organization': '12',
+ '13 Leader or Leadership': '13',
+ '14 Nongovernmental Organization Member or Nongovernmental Organization': '14',
+ '15 Coerced/Impressed Recruit': '15',
+ '16 Willing Recruit': '16',
+ '17 Religious or Religious Organization': '17',
+ '18 Targeted Individual or Organization': '18',
+ '19 Terrorist or Terrorist Organization': '19',
+ '20 Speaker': '20',
+ '21 Accident': '21',
+ '22 Combat': '22',
+ '23 Other': '23',
+ '24 Loot': '24'
+ })
+ self.m2.update({
+ '00 Unspecified': '00',
+ '01 Leader or Leadership': '01'
+ })
+
+
+class LandEquipment(SymbolSet):
+ entity_types = {
+ 'Weapons/Weapons System': {
+ '00': '00',
+ '01 Rifle': '01',
+ '02 Machine Gun': '02',
+ '03 Grenade Launcher': '03',
+ '04 Flame Thrower': '04',
+ '05 Air Defense Gun': '05',
+ '06 Antitank Gun': '06',
+ '07 Direct Fire Gun': '07',
+ '08 Recoilless Gun': '08',
+ '09 Howitzer': '09',
+ '10 Missile Launcher': '10',
+ '11 Air Defense Missile Launcher': '11',
+ '12 Antitank Missile Launcher': '12',
+ '13 Surface-to-Surface Missile Launcher': '13',
+ '14 Mortar': '14',
+ '15 Single Rocket Launcher': '15',
+ '16 Multiple Rocket Launcher': '16',
+ '17 Antitank Rocket Launcher': '17',
+ '18 Nonlethal Weapon': '18',
+ '19 Taser': '19',
+ '20 Water Cannon': '20',
+ },
+ 'Vehicle': {
+ '00': '00',
+ '01 Armored': '01',
+ '02 Tank': '02',
+ '03 Tank Recovery Vehicle': '03'
+ },
+ 'Engineer Vehicles and Equipment': {
+ '00': '00',
+ '01 Bridge': '01',
+ '02 Bridge Mounted on Utility Vehicle': '02',
+ '03 Fixed Bridge': '03',
+ '04 Floating Bridge': '04',
+ '05 Folding Girder Bridge': '05',
+ '06 Hollow Deck Bridge': '06',
+ '07 Drill': '07',
+ '08 Earthmover': '08',
+ '09 Mine Clearing Equipment': '09',
+ '10 Mine Laying Equipment': '10',
+ '11 Dozer': '11',
+ '12 Armored Assault': '12',
+ '13 Armored Engineer Recon Vehicle (AERV)': '13',
+ '14 Backhoe': '14',
+ '15 Construction Vehicle': '15',
+ '16 Ferry Transporter': '16',
+ },
+ 'Utility Vehicles': {
+ '00': '00',
+ '01 Utility Vehicle': '01',
+ '02 Medical': '02',
+ '03 Medical Evacuation': '03',
+ '04 Mobile Emergency Physician': '04',
+ '05 Bus': '05',
+ '06 Semi-Trailer and Truck': '06',
+ '07 Limited Cross Country Truck': '07',
+ '08 Cross Country Truck': '08',
+ '09 Petroleum, Oil and Lubricant': '09',
+ '10 Water': '10',
+ '11 Amphibious Utility Wheeled Vehicle': '11',
+ '12 Tow Truck': '12'
+ },
+ 'Train': {
+ '00': '00',
+ '01 Locomotive': '01',
+ '02 Railcar': '02'
+ },
+ 'Civilian Vehicle': {
+ '00': '00',
+ '01 Automobile': '01',
+ '02 Open-Bed Truck': '02',
+ '03 Multiple Passenger Vehicle': '03',
+ '04 Utility Vehicle': '04',
+ '05 Jeep Type Vehicle': '05',
+ '06 Tractor Trailer Truck with Box': '06',
+ '07 Tractor Trailer Truck with Flatbed Trailer': '07',
+ '08 Known Insurgent Vehicle': '08',
+ '09 Drug Vehicle': '09'
+ },
+ 'Law Enforcement': {
+ '00': '00',
+ '01 Bureau of Alcohol, Tobacco, Firearms and Explosives (ATF) (Department of Justice)': '01',
+ '02 Border Patrol': '02',
+ '03 Customs Service': '03',
+ '04 Drug Enforcement Administration (DEA)': '04',
+ '05 Department of Justice (DOJ)': '05',
+ '06 Federal Bureau of Investigation (FBI)': '06',
+ '07 Police': '07',
+ '08 United States Secret Service (USSS)': '08',
+ '09 Transportation Security Administration (TSA)': '09',
+ '10 Coast Guard': '10',
+ '11 US Marshals Service': '11'
+ },
+ 'Missile Support': {
+ '00': '00',
+ '01 Transloader': '01',
+ '02 Transporter': '02',
+ '03 Crane/Loading Device': '03',
+ '04 Propellant Transporter': '04',
+ '05 Warhead Transporter': '05'
+ },
+ 'Other Equipment': {
+ '00': '00',
+ '01 Antennae': '01',
+ '02 Bomb': '02',
+ '03 Booby Trap': '03',
+ '04 CBRN Equipment': '04',
+ '05 Computer System': '05',
+ '06 Command Launch Equipment (CLE)': '06',
+ '07 Generator Set': '07',
+ '08 Ground-based Midcourse Defense (GMD) Fire Control (GFC) Center': '08',
+ '09 In-Flight Interceptor Communications System (IFICS) Data Terminal (IDT)': '09',
+ '10 Laser': '10',
+ '11 Military Information Support Operations (MISO)': '11',
+ '12 Sustainment Shipments': '12',
+ '13 Tent': '13',
+ '14 Unit Deployment Shipments': '14',
+ '15 Emergency Medical Operation': '15'
+ },
+ 'Land Mines': {
+ '00': '00',
+ '01 Land Mine': '01',
+ '02 Antipersonnel Land mine (APL)': '02',
+ '03 Antitank Mine': '03',
+ '04 Improvised Explosives Device (IED)': '04',
+ '05 Less than lethal': '05'
+ },
+ 'Sensors': {
+ '00': '00',
+ '01 Sensor': '01',
+ '02 Sensor Emplaced': '02',
+ '03 Radar': '03'
+ },
+ 'Emergency Operation': {
+ '00': '00',
+ '01 Ambulance': '01',
+ '02 Fire Fighting/Fire Protection': '02'
+ }
+ }
+
+ entity_subtypes = {
+ 'Rifle': {
+ '00': '00',
+ '01 Single Shot Rifle': '01',
+ '02 Semiautomatic Rifle': '02',
+ '03 Automatic Rifle': '03'
+ },
+ 'Machine Gun': {
+ '00': '00',
+ '01 Light ': '01',
+ '02 Medium ': '02',
+ '03 Heavy': '03'
+ },
+ 'Grenade Launcher': {
+ '00': '00',
+ '01 Light ': '01',
+ '02 Medium ': '02',
+ '03 Heavy': '03'
+ },
+ 'Air Defense Gun': {
+ '00': '00',
+ '01 Light ': '01',
+ '02 Medium ': '02',
+ '03 Heavy': '03'
+ },
+ 'Antitank Gun': {
+ '00': '00',
+ '01 Light ': '01',
+ '02 Medium ': '02',
+ '03 Heavy': '03'
+ },
+ 'Direct Fire Gun': {
+ '00': '00',
+ '01 Light ': '01',
+ '02 Medium ': '02',
+ '03 Heavy': '03'
+ },
+ 'Recoilless Gun': {
+ '00': '00',
+ '01 Light ': '01',
+ '02 Medium ': '02',
+ '03 Heavy': '03'
+ },
+ 'Howitzer': {
+ '00': '00',
+ '01 Light ': '01',
+ '02 Medium ': '02',
+ '03 Heavy': '03'
+ },
+ 'Missile Launcher': {
+ '00': '00',
+ '01 Light ': '01',
+ '02 Medium ': '02',
+ '03 Heavy': '03'
+ },
+ 'Antitank Missile Launcher': {
+ '00': '00',
+ '01 Light ': '01',
+ '02 Medium ': '02',
+ '03 Heavy': '03'
+ },
+ 'Surface-to-Surface Missile Launcher': {
+ '00': '00',
+ '01 Light ': '01',
+ '02 Medium ': '02',
+ '03 Heavy': '03'
+ },
+ 'Mortar': {
+ '00': '00',
+ '01 Light ': '01',
+ '02 Medium ': '02',
+ '03 Heavy': '03'
+ },
+ 'Single Rocket Launcher': {
+ '00': '00',
+ '01 Light ': '01',
+ '02 Medium ': '02',
+ '03 Heavy': '03'
+ },
+ 'Multiple Rocket Launcher': {
+ '00': '00',
+ '01 Light ': '01',
+ '02 Medium ': '02',
+ '03 Heavy': '03'
+ },
+ 'Antitank Rocket Launcher': {
+ '00': '00',
+ '01 Light ': '01',
+ '02 Medium ': '02',
+ '03 Heavy': '03'
+ },
+ 'Air Defense Missile Launcher': {
+ '00': '00',
+ '01 Light': '01',
+ '02 Light, Light Transporter-Launcher and Radar (TLAR)': '02',
+ '03 Light, Light Tactical Landing Approach Radar (TELAR)': '03',
+ '04 Medium': '04',
+ '05 Medium, TLAR': '05',
+ '06 Medium, TELAR': '06',
+ '07 Heavy': '07',
+ '08 Heavy, TLAR': '08',
+ '09 Heavy, TELAR': '09'
+ },
+ 'Armored': {
+ '00': '00',
+ '01 Armored Fighting Vehicle': '01',
+ '02 Armored Fighting Vehicle Command and Control': '02',
+ '03 Armored Personnel Carrier': '03',
+ '04 Armored Personnel Carrier Ambulance': '04',
+ '05 Armored Protected Vehicle': '05',
+ '06 Armored Protected Vehicle Recovery': '06',
+ '07 Armored Protected Vehicle Medical Evacuation': '07',
+ '08 Armored Personnel Carrier, Recovery': '08',
+ '09 Combat Service Support Vehicle': '09',
+ '10 Light Wheeled Armored Vehicle': '10'
+ },
+ 'Tank': {
+ '00': '00',
+ '01 Light ': '01',
+ '02 Medium ': '02',
+ '03 Heavy': '03'
+ },
+ 'Tank Recovery Vehicle': {
+ '00': '00',
+ '01 Light ': '01',
+ '02 Medium ': '02',
+ '03 Heavy': '03'
+ },
+ 'Drill': {
+ '00': '00',
+ '01 Drill Mounted on Utility Vehicle': '01'
+ },
+ 'Earthmover': {
+ '00': '00',
+ '01 Multifunctional Earthmover/Digger': '01'
+ },
+ 'Mine Clearing Equipment': {
+ '00': '00',
+ '01 Trailer Mounted': '01',
+ '02 Mine Clearing Equipment on Tank Chassis': '02'
+ },
+ 'Mine Laying Equipment': {
+ '00': '00',
+ '01 Mine Laying Equipment on Utility Vehicle': '01',
+ '02 Armored Carrier with Volcano': '02',
+ '03 Truck Mounted with Volcano': '03'
+ },
+ 'Dozer': {
+ '00': '00',
+ '01 Dozer , Armored': '01'
+ },
+ 'Semi-Trailer and Truck': {
+ '00': '00',
+ '01 Light': '01',
+ '02 Medium': '02',
+ '03 Heavy': '03'
+ },
+ 'Tow Truck': {
+ '00': '00',
+ '01 Light': '01',
+ '02 Heavy': '02'
+ },
+ 'Automobile': {
+ '00': '00',
+ '01 Compact': '01',
+ '02 Midsize': '02',
+ '03 Sedan': '03'
+ },
+ 'Open-Bed Truck': {
+ '00': '00',
+ '01 Pickup': '01',
+ '02 Small': '02',
+ '03 Large': '03'
+ },
+ 'Multiple Passenger Vehicle': {
+ '00': '00',
+ '01 Van': '01',
+ '02 Small Bus': '02',
+ '03 Large Bus': '03'
+ },
+ 'Utility Vehicle': {
+ '00': '00',
+ '01 Sport Utility Vehicle (SUV)': '01',
+ '02 Small Box Truck': '02',
+ '03 Large Box Truck': '03'
+ },
+ 'Jeep Type Vehicle': {
+ '00': '00',
+ '01 Small/Light': '01',
+ '02 Medium': '02',
+ '03 Large/Heavy': '03'
+ },
+ 'Tractor Trailer Truck with Box': {
+ '00': '00',
+ '01 Small/Light': '01',
+ '02 Medium': '02',
+ '03 Large/Heavy': '03'
+ },
+ 'Tractor Trailer Truck with Flatbed Trailer': {
+ '00': '00',
+ '01 Small/Light': '01',
+ '02 Medium': '02',
+ '03 Large/Heavy': '03'
+ },
+ 'Emergency Medical Operation': {
+ '00': '00',
+ '01 Medical Evacuation Helicopter': '01'
+ }
+ }
+
+ def entitytypes(self, entity):
+ if entity in self.entity_types:
+ return self.entity_types[entity]
+ else:
+ return self.entityType
+
+ def entitysubtypes(self, entity_type):
+ if entity_type in self.entity_subtypes:
+ return self.entity_subtypes[entity_type]
+ else:
+ return self.entitySubType
+
+ def __init__(self):
+ super().__init__()
+ self.entity.update({
+ '11 Weapons/Weapons System': '11',
+ '12 Vehicle': '12',
+ '13 Engineer Vehicles and Equipment': '13',
+ '14 Utility Vehicles': '14',
+ '15 Train': '15',
+ '16 Civilian Vehicle': '16',
+ '17 Law Enforcement': '17',
+ '18 Pack Animals': '18',
+ '19 Missile Support': '19',
+ '20 Other Equipment': '20',
+ '21 Land Mines': '21',
+ '22 Sensors': '22',
+ '23 Emergency Operation': '23',
+ '24 Manual Track': '24'
+ })
+
+ self.m1.update({
+ '00 Unspecified': '00',
+ '01 Biological': '01',
+ '02 Chemical': '02',
+ '03 Early Warning Radar': '03',
+ '04 Intrusion': '04',
+ '05 Nuclear': '05',
+ '06 Radiological': '06',
+ '07 Upgraded Early Warning Radar': '07',
+ '08 Hijacking': '08',
+ '09 Civilian': '09'
+ })
+
+
+class LandInstallation(SymbolSet):
+ entity_types = {
+ 'Military/Civilian': {
+ '00': '00',
+ '01 Aircraft Production/Assembly': '01',
+ '02 Ammunition and Explosives/Assembly': '02',
+ '03 Ammunition Cache': '03',
+ '04 Armament Production': '04',
+ '05 Black List Location': '05',
+ '06 Chemical, Biological, Radiological and Nuclear (CBRN)': '06',
+ '07 Engineering Equipment Production': '07',
+ '08 Equipment Manufacture': '08',
+ '09 Government Leadership': '09',
+ '10 Gray List Location': '10',
+ '11 Mass Grave Site': '11',
+ '12 Materiel': '12',
+ '13 Mine': '13',
+ '14 Missile and Space System Production': '14',
+ '15 Nuclear (Non CBRN Defense)': '15',
+ '16 Printed Media': '16',
+ '17 Safe House': '17',
+ '18 White List Location': '18',
+ '19 Tented Camp': '19',
+ '20 Warehouse/Storage Facility': '20',
+ '21 Law Enforcement': '21',
+ '22 Emergency Operation': '22'
+ },
+ 'Infrastructure': {
+ '00': '00',
+ '01 Agriculture and Food Infrastructure': '01',
+ '02 Banking Finance and Insurance Infrastructure': '02',
+ '03 Commercial Infrastructure': '03',
+ '04 Educational Facilities Infrastructure': '04',
+ '05 Energy Facility Infrastructure': '05',
+ '06 Infrastructure.Government Site Infrastructure': '06',
+ '07 Medical Infrastructure': '07',
+ '08 Military Infrastructure': '08',
+ '09 Postal Services Infrastructure': '09',
+ '10 Public Venues Infrastructure': '10',
+ '11 Special Needs Infrastructure': '11',
+ '12 Telecommunications Infrastructure': '12',
+ '13 Transportation Infrastructure': '13',
+ '14 Water Supply Infrastructure': '14'
+ }
+ }
+
+ entity_subtypes = {
+ 'Engineering Equipment Production': {
+ '00': '00',
+ '01 Bridge': '01',
+ },
+ 'Tented Camp': {
+ '00': '00',
+ '01 Displaced Persons/ Refugee/Evacuees Camp': '01',
+ '02 Training Camp': '02'
+ },
+ 'Law Enforcement': {
+ '00': '00',
+ '01 Bureau of Alcohol, Tobacco, Firearms and Explosives (ATF) (Department of Justice)': '01',
+ '02 Border Patrol': '02',
+ '03 Customs Service': '03',
+ '04 Drug Enforcement Administration (DEA)': '04',
+ '05 Department of Justice (DOJ)': '05',
+ '06 Federal Bureau of Investigation (FBI)': '06',
+ '07 Police': '07',
+ '08 Prison': '08',
+ '09 United States Secret Service (USSS)': '09',
+ '10 Transportation Security Administration (TSA)': '10',
+ '11 Coast Guard': '11',
+ '12 US Marshals Service': '12'
+ },
+ 'Emergency Operation': {
+ '00': '00',
+ '01 Fire Station': '01',
+ '02 Emergency Medical Operation': '02'
+ },
+ 'Agriculture and Food Infrastructure': {
+ '00': '00',
+ '01 Agriculture Laboratory': '01',
+ '02 Animal Feedlot': '02',
+ '03 Commercial Food Distribution Center': '03',
+ '04 Farm/Ranch': '04',
+ '05 Food Distribution': '05',
+ '06 Food Production Center': '06',
+ '07 Food Retail': '07',
+ '08 Grain Storage': '08'
+ },
+ 'Banking Finance and Insurance Infrastructure': {
+ '00': '00',
+ '01 ATM': '01',
+ '02 Bank': '02',
+ '03 Bullion Storage': '03',
+ '04 Economic Infrastructure Asset': '04',
+ '05 Federal Reserve Bank': '05',
+ '06 Financial Exchange': '06',
+ '07 Financial Services, Other': '07'
+
+ },
+ 'Commercial Infrastructure': {
+ '00': '00',
+ '01 Chemical Plant': '01',
+ '02 Firearms Manufacturer': '02',
+ '03 Firearms Retailer': '03',
+ '04 Hazardous Material Production': '04',
+ '05 Hazardous Material Storage': '05',
+ '06 Industrial Site': '06',
+ '07 Landfill': '07',
+ '08 Pharmaceutical Manufacturer': '08',
+ '09 Contaminated Hazardous Waste Site': '09',
+ '10 Toxic Release Inventory': '10'
+ },
+ 'Educational Facilities Infrastructure': {
+ '00': '00',
+ '01 College/University': '01',
+ '02 School': '02'
+ },
+ 'Energy Facility Infrastructure': {
+ '00': '00',
+ '01 Electric Power': '01',
+ '02 Generation Station': '02',
+ '03 Natural Gas Facility': '03',
+ '04 Petroleum Facility': '04',
+ '05 Petroleum/Gas/Oil': '05',
+ '06 Propane Facility': '06'
+ },
+ 'Medical Infrastructure': {
+ '00': '00',
+ '01 Medical': '01',
+ '02 Medical Treatment Facility (Hospital)': '02'
+ },
+ 'Military Infrastructure': {
+ '00': '00',
+ '01 Military Armory': '01',
+ '02 Military Base': '02'
+ },
+ 'Postal Services Infrastructure': {
+ '00': '00',
+ '01 Postal Distribution Center': '01',
+ '02 Post Office': '02'
+ },
+ 'Public Venues Infrastructure': {
+ '00': '00',
+ '01 Enclosed Facility': '01',
+ '02 Open Facility': '02',
+ '03 Recreational Area': '03',
+ '04 Religious Institution': '04'
+ },
+ 'Special Needs Infrastructure': {
+ '00': '00',
+ '01 Adult Day Care': '01',
+ '02 Child Day Care': '02',
+ '03 Elder Care': '03'
+ },
+ 'Telecommunications Infrastructure': {
+ '00': '00',
+ '01 Broadcast Transmitter Antennae': '01',
+ '02 Telecommunications': '02',
+ '03 Telecommunications Tower': '03'
+ },
+ 'Transportation Infrastructure': {
+ '00': '00',
+ '01 Airport/Air Base': '01',
+ '02 Air Traffic Control Facility': '02',
+ '03 Bus Station': '03',
+ '04 Ferry Terminal': '04',
+ '05 Helicopter Landing Site': '05',
+ '06 Maintenance Facility': '06',
+ '07 Railhead/Railroad Station': '07',
+ '08 Rest Stop': '08',
+ '09 Sea Port/Naval Base': '09',
+ '10 Ship Yard': '10',
+ '11 Toll Facility': '11',
+ '12 Traffic Inspection Facility': '12',
+ '13 Tunnel': '13'
+ },
+ 'Water Supply Infrastructure': {
+ '00': '00',
+ '01 Control Valve': '01',
+ '02 Dam': '02',
+ '03 Discharge Outfall': '03',
+ '04 Ground Water Well': '04',
+ '05 Pumping Station': '05',
+ '06 Reservoir': '06',
+ '07 Storage Tower': '07',
+ '08 Surface Water Intake': '08',
+ '09 Wastewater Treatment Facility': '09',
+ '10 Water': '10',
+ '11 Water Treatment': '11'
+ }
+ }
+
+ def entitytypes(self, entity):
+ if entity in self.entity_types:
+ return self.entity_types[entity]
+ else:
+ return self.entityType
+
+ def entitysubtypes(self, entity_type):
+ if entity_type in self.entity_subtypes:
+ return self.entity_subtypes[entity_type]
+ else:
+ return self.entitySubType
+
+ def __init__(self):
+ super().__init__()
+
+ self.entity.update({
+ '11 Military/Civilian': '11',
+ '12 Infrastructure': '12'
+ })
+
+ self.m1.update({
+ '00 Unspecified': '00',
+ '01 Biological': '01',
+ '02 Chemical ': '02',
+ '03 Nuclear': '03',
+ '04 Radiological': '04',
+ '05 Decontamination': '05',
+ '06 Coal': '06',
+ '07 Geothermal': '07',
+ '08 Hydroelectric': '08',
+ '09 Natural Gas': '09',
+ '10 Petroleum': '10',
+ '11 Civilian ': '11',
+ '12 Civilian Telephone': '12',
+ '13 Civilian Television': '13'
+ })
+
+ self.m2.update({
+ '00 Unspecified': '00',
+ '01 Biological': '01',
+ '02 Chemical ': '02',
+ '03 Nuclear': '03',
+ '04 Radiological': '04',
+ '05 Atomic Energy Reactor': '05',
+ '06 Nuclear Material Production': '06',
+ '07 Nuclear Material Storage': '07',
+ '08 Weapons Grade': '08'
+ })
+
+
+class Surface(SymbolSet):
+ entity_types = {
+ 'Military Combatant': {
+ '00': '00',
+ '01 Carrier': '01',
+ '02 Surface Combatant, Line': '02',
+ '03 Amphibious Warfare Ship': '03',
+ '04 Mine Warfare Ship': '04',
+ '05 Patrol Boat': '05',
+ '06 Decoy': '06',
+ '07 Unmanned Surface Water Vehicle (USV)': '07',
+ '08 Speedboat': '08',
+ '09 Jet Ski': '09',
+ '10 Navy Task Organization': '10',
+ '11 Sea-Based X-Band Radar': '11',
+ },
+ 'Military Non Combatant': {
+ '00': '00',
+ '01 Auxiliary Ship': '01',
+ '02 Service Craft/Yard': '02'
+ },
+ 'Civilian': {
+ '00': '00',
+ '01 Merchant Ship': '01',
+ '02 Fishing Vessel': '02',
+ '03 Law Enforcement Vessel': '03',
+ '04 Leisure Craft, Sailing': '04',
+ '05 Leisure Craft, Motorized': '05',
+ '06 Jet Ski': '06',
+ '07 Unmanned Surface Water Vehicle (USV)': '07'
+ }
+ }
+
+ entity_subtypes = {
+ 'Surface Combatant, Line': {
+ '00': '00',
+ '01 Battleship': '01',
+ '02 Cruiser': '02',
+ '03 Destroyer': '03',
+ '04 Frigate': '04',
+ '05 Corvette': '05',
+ '06 Littoral Combatant Ship': '06'
+ },
+ 'Amphibious Warfare Ship': {
+ '00': '00',
+ '01 Amphibious Command Ship': '01',
+ '02 Amphibious Assault, Non-specified': '02',
+ '03 Amphibious Assault Ship, General': '03',
+ '04 Amphibious Assault Ship, Multipurpose': '04',
+ '05 Amphibious Assault Ship, Helicopter': '05',
+ '06 Amphibious Transport Dock': '06',
+ '07 Landing Ship': '07',
+ '08 Landing Craft': '08',
+ },
+ 'Mine Warfare Ship': {
+ '00': '00',
+ '01 Mine Layer': '01',
+ '02 Mine Sweeper': '02',
+ '03 Mine Sweeper, Drone': '03',
+ '04 Mine Hunter': '04',
+ '05 Mine Countermeasures': '05',
+ '06 Mine Countermeasures, Support Ship': '06'
+ },
+ 'Patrol Boat': {
+ '00': '00',
+ '01 Patrol Craft, Submarine Chaser/Escort, General': '01',
+ '02 Patrol Ship, General': '02'
+ },
+ 'Speedboat': {
+ '00': '00',
+ '01 Rigid-Hull Inflatable Boat (RHIB)': '01'
+ },
+ 'Navy Task Organization': {
+ '00': '00',
+ '01 Navy Task Element': '01',
+ '02 Navy Task Force': '02',
+ '03 Navy Task Group': '03',
+ '04 Navy Task Unit': '04',
+ '05 Convoy': '05'
+ },
+ 'Auxiliary Ship': {
+ '00': '00',
+ '01 Ammunition Ship': '01',
+ '02 Naval Stores Ship': '02',
+ '03 Auxiliary Flag Ship': '03',
+ '04 Intelligence Collector': '04',
+ '05 Oceanographic Research Ship': '05',
+ '06 Survey Ship': '06',
+ '07 Hospital Ship': '07',
+ '08 Naval Cargo Ship': '08',
+ '09 Combat Support Ship, Fast': '09',
+ '10 Oiler, Replenishment': '10',
+ '11 Repair Ship': '11',
+ '12 Submarine Tender': '12',
+ '13 Tug, Ocean Going': '13'
+ },
+ 'Service Craft/Yard': {
+ '00': '00',
+ '01 Barge, not Self-Propelled': '01',
+ '02 Barge, Self-Propelled': '02',
+ '03 Tug, Harbor': '03',
+ '04 Launch': '04'
+ },
+ 'Merchant Ship': {
+ '00': '00',
+ '01 Cargo, General': '01',
+ '02 Container Ship': '02',
+ '03 Dredge': '03',
+ '04 Roll On/Roll Off': '04',
+ '05 Ferry': '05',
+ '06 Heavy Lift': '06',
+ '07 Hovercraft': '07',
+ '08 Lash Carrier (with Barges)': '08',
+ '09 Oiler/Tanker': '09',
+ '10 Passenger': '10',
+ '11 Tug, Ocean Going': '11',
+ '12 Tow': '12',
+ '13 Transport Ship, Hazardous Material': '13',
+ '14 Junk/Dhwo': '14',
+ '15 Barge, not Self-Propelled': '15',
+ '16 Hospital Ship': '16'
+ },
+ 'Fishing Vessel': {
+ '00': '00',
+ '01 Drifter': '01',
+ '02 Trawler': '02',
+ '03 Dredger': '03',
+ },
+ 'Leisure Craft, Motorized': {
+ '00': '00',
+ '01 Rigid-Hull Inflatable Boat (RHIB)': '01',
+ '02 Speedboat': '02'
+ }
+ }
+
+ def entitytypes(self, entity):
+ if entity in self.entity_types:
+ return self.entity_types[entity]
+ else:
+ return self.entityType
+
+ def entitysubtypes(self, entity_type):
+ if entity_type in self.entity_subtypes:
+ return self.entity_subtypes[entity_type]
+ else:
+ return self.entitySubType
+
+ def __init__(self):
+ super().__init__()
+
+ self.entity.update({
+ '11 Military': '11',
+ '12 Military Combatant': '12',
+ '13 Military Non Combatant': '13',
+ '14 Civilian': '14',
+ '15 Own Ship': '15',
+ '16 Fused Track': '16',
+ '17 Manual Track': '17'
+ })
+
+ self.m1.update({
+ '00 Unspecified': '00',
+ '01 Own Ship': '01',
+ '02 Antiair Warfare': '02',
+ '03 Antisubmarine Warfare': '03',
+ '04 Escort': '04',
+ '05 Electronic Warfare': '05',
+ '06 Intelligence, Surveillance, Reconnaissance': '06',
+ '07 Mine Countermeasures': '07',
+ '08 Missile Defense': '08',
+ '09 Medical': '09',
+ '10 Mine Warfare': '10',
+ '11 Remote Multi-Mission Vehicle (USV-only)': '11',
+ '12 Special Operations Forces (SOF)': '12',
+ '13 Surface Warfare': '13',
+ '14 Ballistic Missile ': '14',
+ '15 Guided Missile ': '15',
+ '16 Other Guided Missile ': '16',
+ '17 Torpedo': '17',
+ '18 Drone-Equipped': '18',
+ '19 Helicopter-Equipped/VSTOL': '19',
+ '20 Ballistic Missile Defense, Shooter ': '20',
+ '21 Ballistic Missile Defense, Long-Range Surveillance and Track (LRS&T)': '21',
+ '22 Sea-Base X-Band': '22',
+ '23 Hijacking': '23'
+ })
+
+ self.m2.update({
+ '00 Unspecified': '00',
+ '01 Nuclear Powered': '01',
+ '02 Heavy': '02',
+ '03 Light': '03',
+ '04 Medium': '04',
+ '05 Dock': '05',
+ '06 Logistics': '06',
+ '07 Tank': '07',
+ '08 Vehicle': '08',
+ '09 Fast': '09',
+ '10 Air-Cushioned (US)': '10',
+ '11 Air-Cushioned (NATO)': '11',
+ '12 Hydrofoil': '12',
+ '13 Autonomous Control': '13',
+ '14 Remotely Piloted': '14',
+ '15 Expendable': '15'
+ })
+
+
+class Sub(SymbolSet):
+ entity_types = {
+ 'Military': {
+ '01 Submarine': '01',
+ '02 Other Submersible': '02',
+ '03 Nonsubmarine': '03',
+ '04 Autonomous Underwater Vehicle (AUV)/Unmanned Underwater Vehicle (UUV)': '04',
+ '05 Diver': '05'
+ },
+ 'Civilian': {
+ '01 Submersible': '01',
+ '02 Autonomous Underwater Vehicle (AUV)/ Unmanned Underwater Vehicle (UUV)': '02',
+ '03 Diver': '03'
+ },
+ 'Weapon': {
+ '01 Torpedo': '01',
+ '02 Improvised Explosive Device (IED)': '02',
+ '03 Decoy': '03'
+ }
+ }
+
+ entity_subtypes = {
+ 'Submarine': {
+ '01 Submarine, Surfaced': '01',
+ '02 Submarine, Snorkeling': '02',
+ '03 Submarine, Bottomed': '03'
+ }
+ }
+
+ def entitytypes(self, entity):
+ if entity in self.entity_types:
+ return self.entity_types[entity]
+ else:
+ return self.entityType
+
+ def entitysubtypes(self, entity_type):
+ if entity_type in self.entity_subtypes:
+ return self.entity_subtypes[entity_type]
+ else:
+ return self.entitySubType
+
+ def __init__(self):
+ super().__init__()
+
+ self.entity.update({
+ '11 Military': '11',
+ '12 Civilian': '12',
+ '13 Weapon': '13',
+ '14 Echo Tracker Classifier (ETC) / Possible Contact (POSCON)': '14',
+ '15 Fused Track': '15',
+ '16 Manual Track': '16'
+ })
+
+ self.m1.update({
+ '00 Unspecified': '00',
+ '01 Antisubmarine Warfare': '01',
+ '02 Auxiliary': '02',
+ '03 Command and Control': '03',
+ '04 Intelligence, Surveillance, Reconnaissance': '04',
+ '05 Mine Countermeasures': '05',
+ '06 Mine Warfare': '06',
+ '07 Surface Warfare': '07',
+ '08 Attack': '08',
+ '09 Ballistic Missile ': '09',
+ '10 Guided Missile ': '10',
+ '11 Other Guided Missile': '11',
+ '12 Special Operations Forces (SOF)': '12',
+ '13 Possible Submarine Low 1 ': '13',
+ '14 Possible Submarine Low 2': '14',
+ '15 Possible Submarine High 3': '15',
+ '16 Possible Submarine High 4': '16',
+ '17 Probable Submarine': '17',
+ '18 Certain Submarine': '18',
+ '19 Anti-torpedo Torpedo': '19',
+ '20 Hijacking/Highjacked': '20'
+ })
+
+ self.m2.update({
+ '00 Unspecified': '00',
+ '01 Air Independent Propulsion': '01',
+ '02 Diesel Electric, General': '02',
+ '03 Diesel - Type 1': '03',
+ '04 Diesel - Type 2': '04',
+ '05 Diesel - Type 3': '05',
+ '06 Nuclear Powered, General': '06',
+ '07 Nuclear - Type 1': '07',
+ '08 Nuclear - Type 2': '08',
+ '09 Nuclear - Type 3': '09',
+ '10 Nuclear - Type 4': '10',
+ '11 Nuclear - Type 5': '11',
+ '12 Nuclear - Type 6': '12',
+ '13 Nuclear - Type 7': '13',
+ '14 Autonomous Control': '14',
+ '15 Remotely Piloted': '15',
+ '16 Expendable': '16'
+ })
+
+
+class MineWarfare(SymbolSet):
+ entity_types = {
+ 'Sea Mine, General': {
+ '01 Sea Mine, Bottom': '01',
+ '02 Sea Mine, Moored': '02',
+ '03 Sea Mine, Floating': '03',
+ '04 Sea Mine, Rising': '04',
+ '05 Sea Mine, Other Position': '05',
+ '06 Kingfisher': '06',
+ '07 Small Object, Mine-Like': '07',
+ '08 Exercise Mine, General': '08',
+ '09 Neutralized Mine, General': '09'
+ },
+ 'Sea Mine Decoy': {
+ '01 Sea Mine Decoy, Bottom': '01',
+ '02 Sea Mine Decoy, Moored': '02'
+ },
+ 'Mine-Like Contact (MILCO)': {
+ '01 MILCO - General': '01',
+ '02 MILCO - Bottom': '02',
+ '03 MILCO - Moored': '03',
+ '04 MILCO - Floating': '04'
+ },
+ 'Mine-Like Echo (MILEC), General': {
+ '01 Mine-Like Echo, Bottom': '01',
+ '02 Mine-Like Echo, Moored': '02',
+ '03 Mine-Like Echo, Floating': '03',
+ },
+ 'Negative Reacquisition, General': {
+ '01 Negative Reacquisition, Bottom': '01',
+ '02 Negative Reacquisition, Moored': '02',
+ '03 Negative Reacquisition, Floating': '03'
+ },
+ 'Obstructor': {
+ '01 Neutralized Obstructor': '01'
+ },
+ 'Non-Mine Mine-Like Object (NMLO), General': {
+ '01 Non-Mine Mine-Like Object, Bottom': '01',
+ '02 Non-Mine Mine-Like Object, Moored': '02',
+ '03 Non-Mine Mine-Like Object, Floating': '03'
+ }
+ }
+
+ entity_subtypes = {
+ 'Exercise Mine, General': {
+ '01 Exercise Mine, Bottom': '01',
+ '02 Exercise Mine, Moored': '02',
+ '03 Exercise Mine, Floating': '03',
+ '04 Exercise Mine, Rising': '04'
+ },
+ 'Neutralized Mine, General': {
+ '01 Neutralized Mine, Bottom': '01',
+ '02 Neutralized Mine, Moored': '02',
+ '03 Neutralized Mine, Floating': '03',
+ '04 Neutralized Mine, Rising': '04',
+ '05 Neutralized Mine, Other Position': '05'
+ },
+ 'MILCO - General': {
+ '01 MILCO - General, Confidence.Level 1': '01',
+ '02 MILCO - General, Confidence.Level 2': '02',
+ '03 MILCO - General, Confidence.Level 3': '03',
+ '04 MILCO - General, Confidence.Level 4': '04',
+ '05 MILCO - General, Confidence.Level 5': '05'
+ },
+ 'MILCO - Bottom': {
+ '01 MILCO - Bottom, ConfidenceLevel 1': '01',
+ '02 MILCO - Bottom, Confidence.Level 2': '02',
+ '03 MILCO - Bottom, Confidence.Level 3': '03',
+ '04 MILCO - Bottom, Confidence.Level 4': '04',
+ '05 MILCO - Bottom, ConfidenceLevel 5': '05'
+
+ },
+ 'MILCO - Moored': {
+ '01 MILCO - Moored, Confidence.Level 1': '01',
+ '02 MILCO - Moored, Confidence.Level 2': '02',
+ '03 MILCO - Moored, Confidence.Level 3': '03',
+ '04 MILCO - Moored, Confidence.Level 4': '04',
+ '05 MILCO - Moored, Confidence.Level 5': '05'
+ },
+ 'MILCO - Floating': {
+ '01 MILCO - Floating, Confidence.Level 1': '01',
+ '02 MILCO - Floating, Confidence.Level 2': '02',
+ '03 MILCO - Floating, Confidence.Level 3': '03',
+ '04 MILCO - Floating, Confidence.Level 4': '04',
+ '05 MILCO - Floating, Confidence.Level 5': '05'
+ }
+ }
+
+ def entitytypes(self, entity):
+ if entity in self.entity_types:
+ return self.entity_types[entity]
+ else:
+ return self.entityType
+
+ def entitysubtypes(self, entity_type):
+ if entity_type in self.entity_subtypes:
+ return self.entity_subtypes[entity_type]
+ else:
+ return self.entitySubType
+
+ def __init__(self):
+ super().__init__()
+ self.entity.update({
+ '11 Sea Mine, General': '11',
+ '12 Unexploded Ordnance': '12',
+ '13 Sea Mine Decoy': '13',
+ '14 Mine-Like Contact (MILCO)': '14',
+ '15 Mine-Like Echo (MILEC), General': '15',
+ '16 Negative Reacquisition, General': '16',
+ '17 Obstructor': '17',
+ '18 General Mine Anchor': '18',
+ '19 Non-Mine Mine-Like Object (NMLO), General': '19',
+ '20 Environmental Report Location': '20',
+ '21 Dive Report Location': '21'
+ })
+
+
+class Activities(SymbolSet):
+ entity_types = {
+ '11 Incident': {
+ '00': '00',
+ '01 Criminal Activity Incident': '01',
+ '02 Bomb/Bombing': '02',
+ '03 IED Event': '03',
+ '04 Shooting': '04',
+ '05 Illegal Drug Operation': '05',
+ '06 Explosion': '06'
+ },
+ '12 Civil Disturbance': {
+ '00': '00',
+ '01 Demonstration': '01'
+ },
+ '13 Operation': {
+ '00': '00',
+ '01 Patrolling': '01',
+ '02 Military Information Support Operation (MISO)': '02',
+ '03 Foraging/Searching': '03',
+ '04 Recruitment': '04',
+ '05 Mine Laying': '05',
+ '06 Spy': '06',
+ '07 Warrant Served': '07',
+ '08 Exfiltration': '08',
+ '09 Infiltration': '09',
+ '10 Meeting': '10',
+ '11 Raid on House': '11',
+ '12 Emergency Operation': '12',
+ '13 Emergency Medical Operation': '13',
+ '14 Fire Fighting Operation': '14',
+ '15 Law Enforcement Operation': '15'
+ },
+ '14 Fire Event': {
+ '00': '00',
+ '01 Fire Origin': '01',
+ '02 Smoke': '02',
+ '03 Hot Spot': '03',
+ '04 Non-Residential Fire': '04',
+ '05 Residential Fire': '05',
+ '06 School Fire': '06',
+ '07 Special Needs Fire': '07',
+ '08 Wild Fire': '08',
+ },
+ '15 Hazardous Materials': {
+ '00': '00',
+ '01 Hazardous Materials Incident': '01',
+ },
+ '16 Transportation Incident': {
+ '00': '00',
+ '01 Air': '01',
+ '02 Marine': '02',
+ '03 Rail': '03',
+ '04 Vehicle': '04',
+ '05 Wheeled Vehicle Explosion': '05'
+ },
+ '17 Natural Event': {
+ '00': '00',
+ '01 Geologic': '01',
+ '02 Hydro-Meteorological': '02',
+ '03 Infestation': '03'
+ },
+ '18 Individual': {
+ '00': '00',
+ '01 Religious Leader': '01',
+ '02 Speaker': '02'
+ }
+ }
+
+ entity_subtypes = {
+ '01 Criminal Activity Incident': {
+ '00': '00',
+ '01 Arrest': '01',
+ '02 Arson': '02',
+ '03 Attempted Criminal Activity': '03',
+ '04 Drive-by Shooting': '04',
+ '05 Drug Related': '05',
+ '06 Extortion': '06',
+ '07 Graffiti': '07',
+ '08 Killing': '08',
+ '09 Poisoning': '09',
+ '10 Civil Rioting': '10',
+ '11 Booby Trap': '11',
+ '12 Home Eviction': '12',
+ '13 Black Marketing': '13',
+ '14 Vandalism/Loot/Ransack/Plunder': '14',
+ '15 Jail Break': '15',
+ '16 Robbery': '16',
+ '17 Theft': '17',
+ '18 Burglary': '18',
+ '19 Smuggling': '19',
+ '20 Rock Throwing': '20',
+ '21 Dead Body': '21',
+ '22 Sabotage': '22',
+ '23 Suspicious Activity': '23'
+ },
+ '02 Bomb/Bombing': {
+ '00': '00',
+ '01 Bomb/Bombing.Bomb Threat': '01'
+ },
+ '03 IED Event': {
+ '00': '00',
+ '01 IED Explosion': '01',
+ '02 Premature IED Explosion': '02',
+ '03 IED Cache': '03',
+ '04 IED Suicide Bomber': '04'
+ },
+ '04 Shooting': {
+ '00': '00',
+ '01 Sniping': '01'
+ },
+ '05 Illegal Drug Operation': {
+ '00': '00',
+ '01 Trafficking': '01',
+ '02 Illegal Drug Lab': '02',
+ },
+ '06 Explosion': {
+ '00': '00',
+ '01 Grenade Explosion': '01',
+ '02 Incendiary Explosion': '02',
+ '03 Mine Explosion': '03',
+ '04 Mortar Fire Explosion': '04',
+ '05 Rocket Explosion': '05',
+ '06 Bomb Explosion': '06'
+ },
+ '02 Military Information Support Operation (MISO)': {
+ '00': '00',
+ '01 TV and Radio Propaganda': '01'
+ },
+ '04 Recruitment': {
+ '00': '00',
+ '01 Willing': '01',
+ '02 Coerced/Impressed': '02'
+ },
+ '10 Meeting': {
+ '00': '00',
+ '01 Polling Place/Election': '01'
+ },
+ '12 Emergency Operation': {
+ '00': '00',
+ '01 Emergency Collection Evacuation Point': '01',
+ '02 Emergency Food Distribution': '02',
+ '03 Emergency Incident Command Center': '03',
+ '04 Emergency Operations Center': '04',
+ '05 Emergency Public Information Center': '05',
+ '06 Emergency Shelter': '06',
+ '07 Emergency Staging Area': '07',
+ '08 Emergency Water Distribution Center': '08'
+ },
+ '13 Emergency Medical Operation': {
+ '00': '00',
+ '01 EMT Station Location': '01',
+ '02 Health Department Facility': '02',
+ '03 Medical Facilities Outpatient': '03',
+ '04 Morgue': '04',
+ '05 Pharmacy': '05',
+ '06 Triage': '06'
+ },
+ '14 Fire Fighting Operation': {
+ '00': '00',
+ '01 Fire Hydrant': '01',
+ '02 Fire Station': '02',
+ '03 Other Water Supply Location': '03'
+ },
+ '15 Law Enforcement Operation': {
+ '00': '00',
+ '01 Bureau of Alcohol, Tobacco, Firearms and Explosives (ATF) (Department of Justice)': '01',
+ '02 Border Patrol': '02',
+ '03 Customs Service': '03',
+ '04 Drug Enforcement Administration (DEA)': '04',
+ '05 Department of Justice (DOJ)': '05',
+ '06 Federal Bureau of Investigation (FBI)': '06',
+ '07 Police': '07',
+ '08 Prison': '08',
+ '09 United States Secret Service(Treas) (USSS)': '09',
+ '10 Transportation Security Administration (TSA)': '10',
+ '11 Coast Guard': '11',
+ '12 US Marshals Service': '12',
+ '13 Internal Security Force': '13'
+ },
+ '01 Hazardous Materials Incident': {
+ '00': '00',
+ '01 Chemical Agent': '01',
+ '02 Corrosive Material': '02',
+ '03 Hazardous when Wet': '03',
+ '04 Explosive Material': '04',
+ '05 Flammable Gas': '05',
+ '06 Flammable Liquid': '06',
+ '07 Flammable Solid': '07',
+ '08 Non-Flammable Gas': '08',
+ '09 Organic Peroxide': '09',
+ '10 Oxidizer': '10',
+ '11 Radioactive Material': '11',
+ '12 Spontaneously Combustible Material': '12',
+ '13 Toxic Gas': '13',
+ '14 Toxic Infectious Material': '14',
+ '15 Unexploded Ordnance': '15'
+ },
+ '01 Geologic': {
+ '00': '00',
+ '01 Aftershock': '01',
+ '02 Avalanche': '02',
+ '03 Earthquake Epicenter': '03',
+ '04 Landslide': '04',
+ '05 Subsidence': '05',
+ '06 Volcanic Eruption': '06',
+ '07 Volcanic Threat': '07',
+ '08 Cave Entrance': '08'
+ },
+ '02 Hydro-Meteorological': {
+ '00': '00',
+ '01 Drought': '01',
+ '02 Flood': '02',
+ '03 Tsunami': '03'
+ },
+ '03 Infestation': {
+ '00': '00',
+ '01 Bird': '01',
+ '02 Insect': '02',
+ '03 Microbial': '03',
+ '04 Reptile': '04',
+ '05 Rodent': '05'
+ }
+ }
+
+ def entitytypes(self, entity):
+ if entity in self.entity_types:
+ return self.entity_types[entity]
+ else:
+ return self.entityType
+
+ def entitysubtypes(self, entity_type):
+ if entity_type in self.entity_subtypes:
+ return self.entity_subtypes[entity_type]
+ else:
+ return self.entitySubType
+
+ def __init__(self):
+ super().__init__()
+
+ self.entity.update({
+ '11 Incident': '11',
+ '12 Civil Disturbance': '12',
+ '13 Operation': '13',
+ '14 Fire Event': '14',
+ '15 Hazardous Materials': '15',
+ '16 Transportation Incident': '16',
+ '17 Natural Event': '17',
+ '18 Individual': '18',
+ })
+
+ self.m1.update({
+ '00 Unspecified': '00',
+ '01 Assassination': '01',
+ '02 Execution (Wrongful Killing)': '02',
+ '03 Hijacking/Hijacked': '03',
+ '04 House-to-House': '04',
+ '05 Kidnapping': '05',
+ '06 Murder': '06',
+ '07 Piracy': '07',
+ '08 Rape': '08',
+ '09 Written Military Information Support Operations': '09',
+ '10 Pirate': '10',
+ '11 False': '11',
+ '12 Find': '12',
+ '13 Found and Cleared': '13',
+ '14 Hoax (Decoy)': '14',
+ '15 Attempted': '15',
+ '16 Accident': '16',
+ '17 Incident': '17',
+ '18 Theft': '18'
+ })
+
+
+class MeteorologicalAtmospheric(SymbolSet):
+ entity_types = {
+ '11 Pressure Systems': {
+ '00': '00',
+ '01 Low Pressure Center': '01',
+ '02 High Pressure Center': '02',
+ '03 Frontal Systems': '03',
+ '04 Lines': '04',
+ '05 Pressure Tendency': '05',
+ },
+ '12 Turbulence': {
+ '00': '00',
+ '01 Light': '01',
+ '02 Moderate': '02',
+ '03 Severe': '03',
+ '04 Extreme': '04',
+ '05 Mountain Waves': '05'
+ },
+ '13 Icing': {
+ '00': '00',
+ '01 Clear Icing': '01',
+ '02 Rime Icing': '02',
+ '03 Mixed Icing': '03'
+ },
+ '14 Winds': {
+ '00': '00',
+ '01 Calm Winds': '01',
+ '02 Wind Plot': '02',
+ '03 Jet Stream': '03',
+ '04 Stream Line': '04'
+ },
+ '15 Cloud Cover': {
+ '00': '00',
+ '01 Cloud Coverage Symbols': '01'
+ },
+ '16 Weather Symbols': {
+ '00': '00',
+ '01 Rain': '01',
+ '02 Freezing Rain': '02',
+ '03 Rain Showers': '03',
+ '04 Drizzle': '04',
+ '05 Freezing Drizzle': '05',
+ '06 Rain and Snow Mixed': '06',
+ '07 Snow': '07',
+ '08 Snow Grains': '08',
+ '09 Snow Showers': '09',
+ '10 Hail': '10',
+ '11 Ice Crystals (Diamond Dust)': '11',
+ '12 Ice Pellets (Sleet)': '12',
+ '13 Inversion': '13',
+ '14 Storms': '14',
+ '15 Fog': '15',
+ '16 Mist': '16',
+ '17 Smoke': '17',
+ '18 Haze': '18',
+ '19 Dust or Sand': '19',
+ '20 Tropical Storm Systems': '20',
+ '21 Volcanic Eruption': '21',
+ '22 Tropopause Level': '22',
+ '23 Freezing Level': '23',
+ '24 Precipitation of Unknown Type and Intensity': '24'
+ },
+ '17 Bounded Areas of Weather': {
+ '00': '00',
+ '01 Instrument Flight Rule (IFR)': '01',
+ '02 Marginal Visual Flight Rule (MVFR)': '02',
+ '03 Turbulence': '03',
+ '04 Icing': '04',
+ '05 Liquid Precipitation - Non-Convective Continuous or Intermittent': '05',
+ '06 Freezing /Frozen Precipitation': '06',
+ '07 Thunderstorm': '07',
+ '08 Fog': '08',
+ '09 Dust or Sand': '09',
+ '10 Operator-Defined Freeform': '10'
+ },
+ '18 Isopleths': {
+ '00': '00',
+ '01 Isobar - Surface': '01',
+ '02 Contour - Upper Air': '02',
+ '03 Isotherm': '03',
+ '04 Isotach': '04',
+ '05 Isodrosotherm': '05',
+ '06 Thickness': '06',
+ '07 Operator-Defined Freeform': '07'
+ },
+ '19 State of the Ground': {
+ '00': '00',
+ '01 Without Snow or Measurable Ice Cover': '01',
+ '02 With Snow or Measurable Ice Cover': '02'
+ }
+ }
+
+ entity_subtypes = {
+ '01 Low Pressure Center': {
+ '00': '00',
+ '01 Cyclone Center': '01',
+ '02 Tropopause Low': '02'
+ },
+ '02 High Pressure Center': {
+ '00': '00',
+ '01 Anticyclone Center': '01',
+ '02 Tropopause High': '02'
+ },
+ '03 Frontal Systems': {
+ '00': '00',
+ '01 Cold Front': '01',
+ '02 Upper Cold Front': '02',
+ '03 Cold Frontogenesis': '03',
+ '04 Cold Frontolysis': '04',
+ '05 Warm Front': '05',
+ '06 Upper Warm Front': '06',
+ '07 Warm Frontogenesis': '07',
+ '08 Warm Frontolysis': '08',
+ '09 Occluded Front': '09',
+ '10 Upper Occluded Front': '10',
+ '11 Occluded Frontolysis': '11',
+ '12 Stationary Front': '12',
+ '13 Upper Stationary Front': '13',
+ '14 Stationary Frontogenesis': '14',
+ '15 Stationary Frontolysis': '15'
+ },
+ '04 Lines': {
+ '00': '00',
+ '01 Trough Axis': '01',
+ '02 Upper Trough Axis': '02',
+ '03 Ridge Axis': '03',
+ '04 Severe Squall Line': '04',
+ '05 Instability Line': '05',
+ '06 Shear Line': '06',
+ '07 Inter-Tropical Convergence Zone': '07',
+ '08 Convergence Line': '08',
+ '09 Inter-Tropical Discontinuity': '09'
+ },
+ '05 Pressure Tendency': {
+ '00': '00',
+ '01 Rise Then Fall Higher': '01',
+ '02 Rise Then Steady': '02',
+ '03 Rise': '03',
+ '04 Rise Then Rise Higher': '04',
+ '05 Steady': '05',
+ '06 Fall Then Rise Lower': '06',
+ '07 Fall Then Steady': '07',
+ '08 Fall': '08',
+ '09 Rise Then Fall Lower': '09'
+ },
+ '01 Clear Icing': {
+ '00': '00',
+ '01 Light': '01',
+ '02 Moderate': '02',
+ '03 Severe': '03'
+ },
+ '02 Rime Icing': {
+ '00': '00',
+ '01 Light': '01',
+ '02 Moderate': '02',
+ '03 Severe': '03'
+ },
+ '03 Mixed Icing': {
+ '00': '00',
+ '01 Light': '01',
+ '02 Moderate': '02',
+ '03 Severe': '03'
+ },
+ '01 Cloud Coverage Symbols': {
+ '00': '00',
+ '01 Clear Sky': '01',
+ '02 Few Coverage': '02',
+ '03 Scattered Coverage': '03',
+ '04 Broken Coverage': '04',
+ '05 Overcast Coverage': '05',
+ '06 Sky Totally or Partially Obscured': '06'
+ },
+ '01 Rain': {
+ '00': '00',
+ '01 Intermittent Light': '01',
+ '02 Continuous Light': '02',
+ '03 Intermittent Moderate': '03',
+ '04 Intermittent Moderate/Continuous Moderate': '04',
+ '05 Intermittent Heavy': '05',
+ '06 Intermittent Heavy/Continuous Heavy': '06',
+ },
+ '02 Freezing Rain': {
+ '00': '00',
+ '01 Light': '01',
+ '02 Moderate/Heavy': '02'
+ },
+ '03 Rain Showers': {
+ '00': '00',
+ '01 Light': '01',
+ '02 Moderate/Heavy': '02',
+ '03 Torrential': '03'
+ },
+ '04 Drizzle': {
+ '00': '00',
+ '01 Intermittent Light': '01',
+ '02 Intermittent Light/Continuous Light': '02',
+ '03 Intermittent Moderate': '03',
+ '04 Intermittent Moderate/Continuous Moderate': '04',
+ '05 Intermittent Heavy': '05',
+ '06 Intermittent Heavy/Continuous Heavy': '06',
+ },
+ '05 Freezing Drizzle': {
+ '00': '00',
+ '01 Light': '01',
+ '02 Moderate/Heavy': '02',
+ },
+ '06 Rain and Snow Mixed': {
+ '00': '00',
+ '01 Rain or Drizzle and Snow - Light': '01',
+ '02 Rain or Drizzle and Snow - Moderate/Heavy': '02',
+ '03 Rain and Snow Showers - Light': '03',
+ '04 Rain and Snow Showers - Moderate/Heavy': '04'
+ },
+ '07 Snow': {
+ '00': '00',
+ '01 Intermittent Light': '01',
+ '02 Intermittent Light/Continuous Light': '02',
+ '03 Intermittent Moderate': '03',
+ '04 Intermittent Moderate/Continuous Moderate': '04',
+ '05 Intermittent Heavy': '05',
+ '06 Intermittent Heavy/Continuous Heavy': '06',
+ '07 Blowing Snow - Light/Moderate': '07',
+ '08 Blowing Snow - Heavy': '08'
+ },
+ '09 Snow Showers': {
+ '00': '00',
+ '01 Light': '01',
+ '02 Moderate/Heavy': '02'
+ },
+ '10 Hail': {
+ '00': '00',
+ '01 Light not Associated with Thunder': '01',
+ '02 Moderate/Heavy not Associated with Thunder': '02'
+ },
+ '12 Ice Pellets (Sleet)': {
+ '00': '00',
+ '01 Light': '01',
+ '02 Moderate': '02',
+ '03 Heavy': '03'
+ },
+ '14 Storms': {
+ '00': '00',
+ '01 Thunderstorm - No Precipitation': '01',
+ '02 Thunderstorm Light to Moderate with Rain/Snow - No Hail': '02',
+ '03 Thunderstorm Heavy with Rain/Snow - No Hail': '03',
+ '04 Thunderstorm Light to Moderate - With Hail': '04',
+ '05 Thunderstorm Heavy - With Hail': '05',
+ '06 Funnel Cloud (Tornado/Waterspout)': '06',
+ '07 Squall': '07',
+ '08 Lightning': '08'
+ },
+ '15 Fog': {
+ '00': '00',
+ '01 Shallow Patches': '01',
+ '02 Shallow Continuous': '02',
+ '03 Patchy': '03',
+ '04 Sky Visible': '04',
+ '05 Sky Obscured': '05',
+ '06 Freezing-Sky Visible': '06',
+ '07 Freezing-Sky Obscured': '07'
+ },
+ '19 Dust or Sand': {
+ '00': '00',
+ '01 Light to Moderate': '01',
+ '02 Severe': '02',
+ '03 Dust Devil': '03',
+ '04 Blowing Dust or Sand': '04'
+ },
+ '20 Tropical Storm Systems': {
+ '00': '00',
+ '01 Tropical Depression': '01',
+ '02 Tropical Storm': '02',
+ '03 Hurricane/Typhoon': '03',
+ '04 Tropical Storm Wind Areas and Date/Time Labels': '04'
+ },
+ '21 Volcanic Eruption': {
+ '00': '00',
+ '01 Volcanic Ash': '01'
+ },
+ '05 Liquid Precipitation - Non-Convective Continuous or Intermittent': {
+ '00': '00',
+ '01 Liquid Precipitation - Convective': '01'
+ },
+ '01 Without Snow or Measurable Ice Cover': {
+ '00': '00',
+ '01 Surface Dry Without Cracks or Appreciable Dust or Loose Sand': '01',
+ '02 Surface Moist': '02',
+ '03 Surface Wet-Standing Water in Small or Large Pools': '03',
+ '04 Surface Flooded': '04',
+ '05 Surface Frozen': '05',
+ '06 Glaze (Thin Ice) on Ground': '06',
+ '07 Loose Dry Dust or Sand not Covering Ground Completely': '07',
+ '08 Thin Loose Dry Dust or Sand Covering Ground Completely': '08',
+ '09 Moderate/Thick Loose Dry Dust or Sand Covering Ground Completely': '09',
+ '10 Extremely Dry with Cracks': '10'
+ },
+ '02 With Snow or Measurable Ice Cover': {
+ '00': '00',
+ '01 Predominately Ice Covered': '01',
+ '02 Compact or Wet Snow (with or without Ice) Covering Less Than One-Half of Ground': '02',
+ '03 Compact or Wet Snow (with or without Ice) Covering at Least One-Half of Ground-but Ground not Completely Covered': '03',
+ '04 Even Layer of Compact or Wet Snow Covering Ground Completely': '04',
+ '05 Uneven Layer of Compact or Wet Snow Covering Ground Completely': '05',
+ '06 Loose Dry Snow Covering Less Than One-Half of Ground': '06',
+ '07 Loose Dry Snow Covering at Least One-Half of Ground-but Ground not Completely Covered': '07',
+ '08 Even Layer of Loose Dry Snow Covering Ground Completely': '08',
+ '09 Uneven Layer of Loose Dry Snow Covering Ground Completely': '09',
+ '10 Snow Covering Ground Completely-Deep Drifts': '10'
+ }
+ }
+
+ def entitytypes(self, entity):
+ if entity in self.entity_types:
+ return self.entity_types[entity]
+ else:
+ return self.entityType
+
+ def entitysubtypes(self, entity_type):
+ if entity_type in self.entity_subtypes:
+ return self.entity_subtypes[entity_type]
+ else:
+ return self.entitySubType
+
+ def __init__(self):
+ super().__init__()
+
+ self.entity.update({
+ '11 Pressure Systems': '11',
+ '12 Turbulence': '12',
+ '13 Icing': '13',
+ '14 Winds': '14',
+ '15 Cloud Cover': '15',
+ '16 Weather Symbols': '16',
+ '17 Bounded Areas of Weather': '17',
+ '18 Isopleths': '18',
+ '19 State of the Ground': '19'
+ })
+
+
+class MeteorologicalOceanographic(SymbolSet):
+ entity_types = {
+ '11 Ice Systems': {
+ '00': '00',
+ '01 Icebergs': '01',
+ '02 Ice Concentration': '02',
+ '03 Dynamic Processes': '03',
+ '04 Sea Ice': '04',
+ '05 Limits': '05',
+ '06 Openings in the Ice': '06',
+ '07 Snow Cover': '07',
+ '08 Topographical Features': '08'
+ },
+ '12 Hydrography': {
+ '00': '00',
+ '01 Depth': '01',
+ '02 Coastal Hydrography': '02',
+ '03 Ports and Harbors': '03',
+ '04 Aids to Navigation': '04',
+ '05 Dangers/Hazards': '05',
+ '06 Bottom Features': '06',
+ '07 Tide and Current': '07'
+ },
+ '13 Oceanography': {
+ '00': '00',
+ '01 Bioluminescence': '01',
+ '02 Beach Slope': '02'
+ },
+ '14 Geophysics/Acoustics': {
+ '00': '00',
+ '01 Mine Warfare (MIW) Bottom Descriptors': '01'
+ },
+ '15 Limits': {
+ '00': '00',
+ '01 Maritime Limit Boundary': '01',
+ '02 Maritime Area': '02',
+ '03 Restricted Area': '03',
+ '04 Swept Area': '04',
+ '05 Training Area': '05',
+ '06 Operator-Defined': '06'
+ },
+ '16 Man-Made Structures': {
+ '00': '00',
+ '01 Submarine Cable': '01',
+ '02 Submerged Crib': '02',
+ '03 Canal': '03',
+ '04 Ford': '04',
+ '05 Lock': '05',
+ '06 Oil/Gas Rig': '06',
+ '07 Oil/Gas Rig Field': '07',
+ '08 Pipelines/Pipe': '08',
+ '09 Pile/Piling/Post': '09',
+ }
+ }
+
+ entity_subtypes = {
+ '01 Icebergs': {
+ '00': '00',
+ '01 Many Icebergs': '01',
+ '02 Belts and Strips': '02',
+ '03 General': '03',
+ '04 Many Icebergs - General': '04',
+ '05 Bergy Bit': '05',
+ '06 Many Bergy Bits': '06',
+ '07 Growler': '07',
+ '08 Many Growlers': '08',
+ '09 Floeberg': '09',
+ '10 Ice Island': '10'
+ },
+ '02 Ice Concentration': {
+ '00': '00',
+ '01 Bergy Water': '01',
+ '02 Water with Radar Targets': '02',
+ '03 Ice Free': '03'
+ },
+ '03 Dynamic Processes': {
+ '00': '00',
+ '01 Convergence': '01',
+ '02 Divergence': '02',
+ '03 Shearing or Shear Zone': '03',
+ '04 Ice Drift (Direction)': '04'
+ },
+ '04 Sea Ice': {
+ '00': '00',
+ '01 Ice Thickness (Observed)': '01',
+ '02 Ice Thickness (Estimated)': '02',
+ '03 Melt Puddles or Flooded Ice': '03'
+ },
+ '05 Limits': {
+ '00': '00',
+ '01 Limits of Visual Observation': '01',
+ '02 Limits of Under Cast': '02',
+ '03 Limits of Radar Observation': '03',
+ '04 Observed Ice Edge or Boundary': '04',
+ '05 Estimated Ice Edge or Boundary': '05',
+ '06 Ice Edge or Boundary From Radar': '06'
+ },
+ '06 Openings in the Ice': {
+ '00': '00',
+ '01 Cracks': '01',
+ '02 Cracks at a Specific Location': '02',
+ '03 Lead': '03',
+ '04 Frozen Lead': '04'
+ },
+ '07 Snow Cover': {
+ '00': '00',
+ '01 Sastrugi (with Orientation)': '01'
+ },
+ '08 Topographical Features': {
+ '00': '00',
+ '01 Ridges or Hummocks': '01',
+ '02 Rafting': '02',
+ '03 Jammed Brash Barrier': '03'
+ },
+ '01 Depth': {
+ '00': '00',
+ '01 Soundings': '01',
+ '02 Depth Curve': '02',
+ '03 Depth Contour': '03',
+ '04 Depth Area': '04'
+ },
+ '02 Coastal Hydrography': {
+ '00': '00',
+ '01 Coastline': '01',
+ '02 Island': '02',
+ '03 Beach': '03',
+ '04 Water': '04',
+ '05 Foreshore - Line': '05',
+ '06 Foreshore - Area': '06'
+ },
+ '03 Ports and Harbors': {
+ '00': '00',
+ '01 Ports': '01',
+ '02 Berths (Onshore)': '02',
+ '03 Berths (Anchor)': '03',
+ '04 Anchorage - Point': '04',
+ '05 Anchorage - Line': '05',
+ '06 Anchorage - Area': '06',
+ '07 Call in Point': '07',
+ '08 Pier/Wharf/Quay': '08',
+ '09 Fishing Harbor - Point': '09',
+ '10 Fish Weirs - Point': '10',
+ '11 Fish Stakes - Point': '11',
+ '12 Fish Traps - Area': '12',
+ '13 Facilities': '13',
+ '14 Drydock': '14',
+ '15 Landing Place': '15',
+ '16 Offshore Loading Facility - Point': '16',
+ '17 Offshore Loading Facility - Line': '17',
+ '18 Offshore Loading Facility - Area': '18',
+ '19 Ramp - Above Water': '19',
+ '20 Ramp - Below Water': '20',
+ '21 Landing Ring': '21',
+ '22 Ferry Crossing': '22',
+ '23 Cable Ferry Crossing': '23',
+ '24 Dolphin': '24',
+ '25 Shoreline Protection': '25',
+ '26 Breakwater/Groin/Jetty - Above Water': '26',
+ '27 Breakwater/Groin/Jetty - Below Water': '27',
+ '28 Seawall': '28'
+ },
+ '04 Aids to Navigation': {
+ '00': '00',
+ '01 Beacon': '01',
+ '02 Buoy Default': '02',
+ '03 Marker': '03',
+ '04 Perches/Stakes - Point': '04',
+ '05 Perches/Stakes - Area': '05',
+ '06 Light': '06',
+ '07 Leading Line': '07',
+ '08 Light Vessel/Light Ship': '08',
+ '09 Lighthouse': '09'
+ },
+ '05 Dangers/Hazards': {
+ '00': '00',
+ '01 Rock Submerged': '01',
+ '02 Rock Awashed': '02',
+ '03 Underwater Danger/Hazard': '03',
+ '04 Foul Ground - Point': '04',
+ '05 Foul Ground - Area': '05',
+ '06 Kelp/Seaweed - Point': '06',
+ '07 Kelp/Seaweed - Area': '07',
+ '08 Snags/Stumps': '08',
+ '09 Wreck (Uncovers)': '09',
+ '10 Wreck (Submerged)': '10',
+ '11 Breakers': '11',
+ '12 Reef': '12',
+ '13 Eddies/Overfalls/Tide Rips': '13',
+ '14 Discolored Water': '14'
+ },
+ '06 Bottom Features': {
+ '00': '00',
+ '01 Bottom Characteristics - Sand': '01',
+ '02 Bottom Characteristics - Mud': '02',
+ '03 Bottom Characteristics - Clay': '03',
+ '04 Bottom Characteristics - Silt': '04',
+ '05 Bottom Characteristics - Stones': '05',
+ '06 Bottom Characteristics - Gravel': '06',
+ '07 Bottom Characteristics - Pebbles': '07',
+ '08 Bottom Characteristics - Cobbles': '08',
+ '09 Bottom Characteristics - Rock': '09',
+ '10 Bottom Characteristics - Coral': '10',
+ '11 Bottom Characteristics - Shell': '11',
+ '12 Qualifying Terms - Fine': '12',
+ '13 Qualifying Terms - Medium': '13',
+ '14 Qualifying Terms - Coarse': '14'
+ },
+ '07 Tide and Current': {
+ '00': '00',
+ '01 Water Turbulence': '01',
+ '02 Current Flow - Ebb': '02',
+ '03 Current Flow - Flood': '03',
+ '04 Tide Data Point': '04',
+ '05 Tide Gauge': '05',
+ },
+ '01 Bioluminescence': {
+ '00': '00',
+ '01 Visual Detection Ratio (VDR) Level 1-2': '01',
+ '02 VDR Level 2-3': '02',
+ '03 VDR Level 3-4': '03',
+ '04 VDR Level 4-5': '04',
+ '05 VDR Level 5-6': '05',
+ '06 VDR Level 6-7': '06',
+ '07 VDR Level 7-8': '07',
+ '08 VDR Level 8-9': '08',
+ '09 VDR Level 9-10': '09'
+ },
+ '02 Beach Slope': {
+ '00': '00',
+ '01 Flat': '01',
+ '02 Gentle': '02',
+ '03 Moderate': '03',
+ '04 Steep': '04'
+ },
+ '01 Mine Warfare (MIW) Bottom Descriptors': {
+ '00': '00',
+ '01 MIW Bottom Sediments - Solid Rock': '01',
+ '02 MIW Bottom Sediments - Clay': '02',
+ '03 MIW Bottom Sediments - Very Coarse Sand': '03',
+ '04 MIW Bottom Sediments - Coarse Sand': '04',
+ '05 MIW Bottom Sediments - Medium Sand': '05',
+ '06 MIW Bottom Sediments - Fine Sand': '06',
+ '07 MIW Bottom Sediments - Very Fine Sand': '07',
+ '08 MIW Bottom Sediments - Very Fine Silt': '08',
+ '09 MIW Bottom Sediments - Fine Silt': '09',
+ '10 MIW Bottom Sediments - Medium Silt': '10',
+ '11 MIW Bottom Sediments - Coarse Silt': '11',
+ '12 MIW Bottom Sediments - Boulders': '12',
+ '13 MIW Bottom Sediments - Cobbles-Oyster Shells': '13',
+ '14 MIW Bottom Sediments - Pebbles-Shells': '14',
+ '15 MIW Bottom Sediments - Sand and Shells': '15',
+ '16 MIW Bottom Sediment - Land': '16',
+ '17 MIW Bottom Sediment - No Data': '17',
+ '18 Bottom Roughness - Smooth': '18',
+ '19 Bottom Roughness - Moderate': '19',
+ '20 Bottom Roughness - Rough': '20',
+ '21 Clutter (Bottom) - Low': '21',
+ '22 Clutter (Bottom) - Medium': '22',
+ '23 Clutter (Bottom) - High': '23',
+ '24 Impact Burial - 0%': '24',
+ '25 Impact Burial - 0-10%': '25',
+ '26 Impact Burial - 10-20%': '26',
+ '27 Impact Burial - 20-75%': '27',
+ '28 Impact Burial - >75%': '28',
+ '29 MIW Bottom Category A': '29',
+ '30 MIW Bottom Category B': '30',
+ '31 MIW Bottom Category C': '31',
+ '32 MIW Bottom Type A1': '32',
+ '33 MIW Bottom Type A2': '33',
+ '34 MIW Bottom Type A3': '34',
+ '35 MIW Bottom Type B1': '35',
+ '36 MIW Bottom Type B2': '36',
+ '37 MIW Bottom Type B3': '37',
+ '38 MIW Bottom Type C1': '38',
+ '39 MIW Bottom Type C2': '39',
+ '40 MIW Bottom Type C3': '40'
+ }
+ }
+
+ def entitytypes(self, entity):
+ if entity in self.entity_types:
+ return self.entity_types[entity]
+ else:
+ return self.entityType
+
+ def entitysubtypes(self, entity_type):
+ if entity_type in self.entity_subtypes:
+ return self.entity_subtypes[entity_type]
+ else:
+ return self.entitySubType
+
+ def __init__(self):
+ super().__init__()
+
+ self.entity.update({
+ '11 Ice Systems': '11',
+ '12 Hydrography': '12',
+ '13 Oceanography': '13',
+ '14 Geophysics/Acoustics': '14',
+ '15 Limits': '15',
+ '16 Man-Made Structures': '16'
+ })
+
+
+class MeteorologicalSpace(SymbolSet):
+ entity_types = {}
+
+ entity_subtypes = {}
+
+ def entitytypes(self, entity):
+ if entity in self.entity_types:
+ return self.entity_types[entity]
+ else:
+ return self.entityType
+
+ def entitysubtypes(self, entity_type):
+ if entity_type in self.entity_subtypes:
+ return self.entity_subtypes[entity_type]
+ else:
+ return self.entitySubType
+
+ def __init__(self):
+ super().__init__()
+
+ self.entity.update({
+ '11 Space': '11'
+ })
+
+
+class SignalsIntelligenceSpace(SymbolSet):
+ entity_types = {
+ '11 Signal Intercept': {
+ '00': '00',
+ '01 Communications': '01',
+ '02 Jammer': '02',
+ '03 Radar': '03'
+ }
+ }
+
+ entity_subtypes = {}
+
+ def entitytypes(self, entity):
+ if entity in self.entity_types:
+ return self.entity_types[entity]
+ else:
+ return self.entityType
+
+ def entitysubtypes(self, entity_type):
+ if entity_type in self.entity_subtypes:
+ return self.entity_subtypes[entity_type]
+ else:
+ return self.entitySubType
+
+ def __init__(self):
+ super().__init__()
+
+ self.entity.update({
+ '11 Signal Intercept': '11'
+ })
+ self.m1.update({
+ '00': '00',
+ '14 Data Transmission': '14',
+ '15 Earth Surveillance': '15',
+ '21 Identification Friend or Foe (Interrogator)': '21',
+ '24 Identification Friend or Foe (Transponder)': '24',
+ '25 Barrage Jammer': '25',
+ '26 Click Jammer': '26',
+ '27 Deceptive Jammer': '27',
+ '28 Frequency Swept Jammer': '28',
+ '29 Jammer (General)': '29',
+ '30 Noise Jammer': '30',
+ '31 Pulsed Jammer': '31',
+ '32 Repeater Jammer': '32',
+ '33 Spot Noise Jammer': '33',
+ '34 Transponder Jammer': '34',
+ '36 Missile Control': '36',
+ '39 Multi-Function': '39',
+ '42 Missile Tracking': '42',
+ '43 Navigational/General': '43',
+ '44 Navigational/Distance Measuring Equipment': '44',
+ '45 Navigation/Terrain Following': '45',
+ '49 Point-to-Point Line of Sight (LOS)': '49',
+ '50 Instrumentation': '50',
+ '51 Range Only': '51',
+ '53 Satellite Downlink': '53',
+ '54 Space': '54',
+ '55 Surface Search': '55',
+ '58 Target Acquisition': '58',
+ '61 Target Tracking': '61',
+ '62 Unknown': '62',
+ '63 Video Remoting': '63',
+ '64 Experimental': '64'
+ })
+
+
+class SignalsIntelligenceAir(SymbolSet):
+ entity_types = {
+ '11 Signal Intercept': {
+ '00': '00',
+ '01 Communications': '01',
+ '02 Jammer': '02',
+ '03 Radar': '03'
+ }
+ }
+
+ entity_subtypes = {}
+
+ def entitytypes(self, entity):
+ if entity in self.entity_types:
+ return self.entity_types[entity]
+ else:
+ return self.entityType
+
+ def entitysubtypes(self, entity_type):
+ if entity_type in self.entity_subtypes:
+ return self.entity_subtypes[entity_type]
+ else:
+ return self.entitySubType
+
+ def __init__(self):
+ super().__init__()
+
+ self.entity.update({
+ '11 Signal Intercept': '11'
+ })
+
+ self.m1.update({
+ '00': '00',
+ '02 Airborne Search and Bombing': '02',
+ '03 Airborne Intercept': '03',
+ '04 Altimeter': '04',
+ '05 Airborne Reconnaissance and Mapping': '05',
+ '06 Air Traffic Control': '06',
+ '07 Beacon Transponder (not IFF)': '07',
+ '08 Battlefield Surveillance': '08',
+ '10 Controlled Intercept': '10',
+ '11 Cellular/Mobile': '11',
+ '12 Coastal Surveillance': '12',
+ '13 Decoy/Mimic': '13',
+ '14 Data Transmission': '14',
+ '16 Early Warning': '16',
+ '17 Fire Control': '17',
+ '18 Ground Mapping': '18',
+ '21 Identification Friend or Foe (Interrogator)': '21',
+ '23 Ionospheric Sounding': '23',
+ '24 Identification Friend or Foe (Transponder)': '24',
+ '25 Barrage Jammer': '25',
+ '26 Click Jammer': '26',
+ '27 Deceptive Jammer': '27',
+ '28 Frequency Swept Jammer': '28',
+ '29 Jammer (General)': '29',
+ '30 Noise Jammer': '30',
+ '31 Pulsed Jammer': '31',
+ '32 Repeater Jammer': '32',
+ '33 Spot Noise Jammer': '33',
+ '34 Transponder Jammer': '34',
+ '35 Missile Acquisition': '35',
+ '36 Missile Control': '36',
+ '37 Missile Downlink': '37',
+ '38 Meteorological': '38',
+ '39 Multi-Function': '39',
+ '40 Missile Guidance': '40',
+ '41 Missile Homing': '41',
+ '42 Missile Tracking': '42',
+ '43 Navigational/General': '43',
+ '44 Navigational/Distance Measuring Equipment': '44',
+ '45 Navigation/Terrain Following': '45',
+ '46 Navigational/Weather Avoidance': '46',
+ '47 Omni-Line of Sight (LOS)': '47',
+ '48 Proximity Use': '48',
+ '49 Point-to-Point Line of Sight (LOS)': '49',
+ '50 Instrumentation': '50',
+ '51 Range Only': '51',
+ '54 Space': '54',
+ '55 Surface Search': '55',
+ '57 Satellite Uplink': '57',
+ '58 Target Acquisition': '58',
+ '59 Target Illumination': '59',
+ '61 Target Tracking': '61',
+ '62 Unknown': '62',
+ '63 Video Remoting': '63',
+ '64 Experimental': '64'
+ })
+
+
+class SignalsIntelligenceLand(SymbolSet):
+ entity_types = {
+ '11 Signal Intercept': {
+ '00': '00',
+ '01 Communications': '01',
+ '02 Jammer': '02',
+ '03 Radar': '03'
+ }
+ }
+
+ entity_subtypes = {}
+
+ def entitytypes(self, entity):
+ if entity in self.entity_types:
+ return self.entity_types[entity]
+ else:
+ return self.entityType
+
+ def entitysubtypes(self, entity_type):
+ if entity_type in self.entity_subtypes:
+ return self.entity_subtypes[entity_type]
+ else:
+ return self.entitySubType
+
+ def __init__(self):
+ super().__init__()
+
+ self.entity.update({
+ '11 Signal Intercept': '11'
+ })
+
+ self.m1.update({
+ '00': '00',
+ '01 Anti-Aircraft Fire Control': '01',
+ '06 Air Traffic Control': '06',
+ '07 Beacon Transponder (not IFF)': '07',
+ '08 Battlefield Surveillance': '08',
+ '09 Controlled Approach': '09',
+ '10 Controlled Intercept': '10',
+ '11 Cellular/Mobile': '11',
+ '13 Decoy/Mimic': '13',
+ '14 Data Transmission': '14',
+ '16 Early Warning': '16',
+ '17 Fire Control': '17',
+ '19 Height Finding': '19',
+ '20 Harbor Surveillance': '20',
+ '21 Identification Friend or Foe (Interrogator)': '21',
+ '22 Instrument Landing System': '22',
+ '23 Ionospheric Sounding': '23',
+ '24 Identification Friend or Foe (Transponder)': '24',
+ '25 Barrage Jammer': '25',
+ '26 Click Jammer': '26',
+ '27 Deceptive Jammer': '27',
+ '28 Frequency Swept Jammer': '28',
+ '29 Jammer (General)': '29',
+ '30 Noise Jammer': '30',
+ '31 Pulsed Jammer': '31',
+ '32 Repeater Jammer': '32',
+ '33 Spot Noise Jammer': '33',
+ '34 Transponder Jammer': '34',
+ '35 Missile Acquisition': '35',
+ '36 Missile Control': '36',
+ '38 Meteorological': '38',
+ '39 Multi-Function': '39',
+ '40 Missile Guidance': '40',
+ '42 Missile Tracking': '42',
+ '43 Navigational/General': '43',
+ '44 Navigational/Distance Measuring Equipment': '44',
+ '45 Navigation/Terrain Following': '45',
+ '46 Navigational/Weather Avoidance': '46',
+ '47 Omni-Line of Sight (LOS)': '47',
+ '49 Point-to-Point Line of Sight (LOS)': '49',
+ '50 Instrumentation': '50',
+ '51 Range Only': '51',
+ '54 Space': '54',
+ '55 Surface Search': '55',
+ '56 Shell Tracking': '56',
+ '57 Satellite Uplink': '57',
+ '58 Target Acquisition': '58',
+ '59 Target Illumination': '59',
+ '60 Tropospheric Scatter': '60',
+ '61 Target Tracking': '61',
+ '62 Unknown': '62',
+ '63 Video Remoting': '63',
+ '64 Experimental': '64'
+ })
+
+
+class SignalsIntelligenceSurface(SymbolSet):
+ entity_types = {
+ '11 Signal Intercept': {
+ '00': '00',
+ '01 Communications': '01',
+ '02 Jammer': '02',
+ '03 Radar': '03'
+ }
+ }
+
+ entity_subtypes = {}
+
+ def entitytypes(self, entity):
+ if entity in self.entity_types:
+ return self.entity_types[entity]
+ else:
+ return self.entityType
+
+ def entitysubtypes(self, entity_type):
+ if entity_type in self.entity_subtypes:
+ return self.entity_subtypes[entity_type]
+ else:
+ return self.entitySubType
+
+ def __init__(self):
+ super().__init__()
+
+ self.entity.update({
+ '11 Signal Intercept': '11'
+ })
+
+ self.m1.update({
+ '00': '00',
+ '01 Anti-Aircraft Fire Control': '01',
+ '06 Air Traffic Control': '06',
+ '07 Beacon Transponder (not IFF)': '07',
+ '09 Controlled Approach': '09',
+ '10 Controlled Intercept': '10',
+ '11 Cellular/Mobile': '11',
+ '13 Decoy/Mimic': '13',
+ '14 Data Transmission': '14',
+ '16 Early Warning': '16',
+ '17 Fire Control': '17',
+ '19 Height Finding': '19',
+ '21 Identification Friend or Foe (Interrogator)': '21',
+ '22 Instrument Landing System': '22',
+ '24 Identification Friend or Foe (Transponder)': '24',
+ '25 Barrage Jammer': '25',
+ '26 Click Jammer': '26',
+ '27 Deceptive Jammer': '27',
+ '28 Frequency Swept Jammer': '28',
+ '29 Jammer (General)': '29',
+ '30 Noise Jammer': '30',
+ '31 Pulsed Jammer': '31',
+ '32 Repeater Jammer': '32',
+ '33 Spot Noise Jammer': '33',
+ '34 Transponder Jammer': '34',
+ '35 Missile Acquisition': '35',
+ '36 Missile Control': '36',
+ '38 Meteorological': '38',
+ '39 Multi-Function': '39',
+ '40 Missile Guidance': '40',
+ '42 Missile Tracking': '42',
+ '43 Navigational/General': '43',
+ '44 Navigational/Distance Measuring Equipment': '44',
+ '45 Navigation/Terrain Following': '45',
+ '46 Navigational/Weather Avoidance': '46',
+ '47 Omni-Line of Sight (LOS)': '47',
+ '49 Point-to-Point Line of Sight (LOS)': '49',
+ '50 Instrumentation': '50',
+ '51 Range Only': '51',
+ '52 Sonobuoy': '52',
+ '54 Space': '54',
+ '55 Surface Search': '55',
+ '57 Satellite Uplink': '57',
+ '58 Target Acquisition': '58',
+ '59 Target Illumination': '59',
+ '61 Target Tracking': '61',
+ '62 Unknown': '62',
+ '63 Video Remoting': '63',
+ '64 Experimental': '64'
+ })
+
+
+class SignalsIntelligenceSubsurface(SymbolSet):
+ entity_types = {
+ '11 Signal Intercept': {
+ '00': '00',
+ '01 Communications': '01',
+ '02 Jammer': '02',
+ '03 Radar': '03'
+ }
+ }
+
+ entity_subtypes = {}
+
+ def entitytypes(self, entity):
+ if entity in self.entity_types:
+ return self.entity_types[entity]
+ else:
+ return self.entityType
+
+ def entitysubtypes(self, entity_type):
+ if entity_type in self.entity_subtypes:
+ return self.entity_subtypes[entity_type]
+ else:
+ return self.entitySubType
+
+ def __init__(self):
+ super().__init__()
+
+ self.entity.update({
+ '11 Signal Intercept': '11'
+ })
+
+ self.m1.update({
+ '00': '00',
+ '07 Beacon Transponder (not IFF)': '07',
+ '11 Cellular/Mobile': '11',
+ '13 Decoy/Mimic': '13',
+ '14 Data Transmission': '14',
+ '16 Early Warning': '16',
+ '21 Identification Friend or Foe (Interrogator)': '21',
+ '24 Identification Friend or Foe (Transponder)': '24',
+ '25 Barrage Jammer': '25',
+ '26 Click Jammer': '26',
+ '27 Deceptive Jammer': '27',
+ '28 Frequency Swept Jammer': '28',
+ '29 Jammer (General)': '29',
+ '30 Noise Jammer': '30',
+ '31 Pulsed Jammer': '31',
+ '32 Repeater Jammer': '32',
+ '33 Spot Noise Jammer': '33',
+ '34 Transponder Jammer': '34',
+ '36 Missile Control': '36',
+ '39 Multi-Function': '39',
+ '42 Missile Tracking': '42',
+ '43 Navigational/General': '43',
+ '44 Navigational/Distance Measuring Equipment': '44',
+ '45 Navigation/Terrain Following': '45',
+ '46 Navigational/Weather Avoidance': '46',
+ '47 Omni-Line of Sight (LOS)': '47',
+ '49 Point-to-Point Line of Sight (LOS)': '49',
+ '50 Instrumentation': '50',
+ '51 Range Only': '51',
+ '52 Sonobuoy': '52',
+ '54 Space': '54',
+ '55 Surface Search': '55',
+ '57 Satellite Uplink': '57',
+ '58 Target Acquisition': '58',
+ '61 Target Tracking': '61',
+ '62 Unknown': '62',
+ '63 Video Remoting': '63',
+ '64 Experimental': '64'
+ })
+
+
+class CyberSpace(SymbolSet):
+ entity_types = {
+ '11 Botnet': {
+ '00': '00',
+ '01 Command and Control (C2)': '01',
+ '02 Herder': '02',
+ '03 Callback Domain': '03',
+ '04 Zombie': '04',
+ },
+ '12 Infection': {
+ '00': '00',
+ '01 Advanced Persistent Threat (APT)': '01',
+ '02 Non-Advanced Persistent Threat (NAPT)': '02',
+ },
+ '13 Health and Status': {
+ '00': '00',
+ '01 Normal': '01',
+ '02 Network Outage': '02',
+ '03 Unknown': '03',
+ '04 Impaired': '04',
+ },
+ '14 Device Type': {
+ '00': '00',
+ '01 Core Router': '01',
+ '02 Router': '02',
+ '03 Cross Domain Solution': '03',
+ '04 Mail Server': '04',
+ '05 Web Server': '05',
+ '06 Domain Server': '06',
+ '07 File Server': '07',
+ '08 Peer-to-Peer Node': '08',
+ '09 Firewall': '09',
+ '10 Switch': '10',
+ '11 Host': '11',
+ '12 Virtual Private Network (VPN)': '12',
+ },
+ '15 Device Domain': {
+ '00': '00',
+ '01 Department of Defense (DoD)': '01',
+ '02 Government': '02',
+ '03 Contractor': '03',
+ '04 Supervisory Control and Data Acquisition (SCADA)': '04',
+ '05 Non-Government': '05',
+ },
+ '16 Effect': {
+ '00': '00',
+ '01 Infection': '01',
+ '02 Degradation': '02',
+ '03 Data Spoofing': '03',
+ '04 Data Manipulation': '04',
+ '05 Exfiltration': '05',
+ '06 Power Outage': '06',
+ '07 Network Outage': '07',
+ '08 Service Outage': '08',
+ '09 Device Outage': '09'
+ }
+ }
+
+ entity_subtypes = {
+ '01 Advanced Persistent Threat (APT)': {
+ '00': '00',
+ '01 APT with C2': '01',
+ '02 APT with Self Propagation': '02',
+ '03 APT with C2 and Self Propagation': '03',
+ '04 APT Other': '04'
+ },
+ '02 Non-Advanced Persistent Threat (NAPT)': {
+ '00': '00',
+ '01 NAPT with C2': '01',
+ '02 NAPT with Self Propagation': '02',
+ '03 NAPT with C2 and Self Propagation': '03',
+ '04 NAPT Other': '04'
+ }
+ }
+
+ def entitytypes(self, entity):
+ if entity in self.entity_types:
+ return self.entity_types[entity]
+ else:
+ return self.entityType
+
+ def entitysubtypes(self, entity_type):
+ if entity_type in self.entity_subtypes:
+ return self.entity_subtypes[entity_type]
+ else:
+ return self.entitySubType
+
+ def __init__(self):
+ super().__init__()
+
+ self.entity.update({
+ '11 Botnet': '11',
+ '12 Infection': '12',
+ '13 Health and Status': '13',
+ '14 Device Type': '14',
+ '15 Device Domain': '15',
+ '16 Effect': '16'
+ })
diff --git a/milstd2525/ui/sidcdialogbase.py b/milstd2525/ui/sidcdialogbase.py
new file mode 100644
index 0000000..1aa9b17
--- /dev/null
+++ b/milstd2525/ui/sidcdialogbase.py
@@ -0,0 +1,187 @@
+# -*- coding: utf-8 -*-
+
+# Form implementation generated from reading ui file 'milstd2525/ui/sidcdialogbase.ui'
+#
+# Created by: PyQt5 UI code generator 5.9.2
+#
+# WARNING! All changes made in this file will be lost!
+
+from PyQt5 import QtCore, QtGui, QtWidgets
+
+class Ui_SidcDialog(object):
+ def setupUi(self, SidcDialog):
+ SidcDialog.setObjectName("SidcDialog")
+ SidcDialog.resize(617, 672)
+ self.verticalLayout = QtWidgets.QVBoxLayout(SidcDialog)
+ self.verticalLayout.setObjectName("verticalLayout")
+ self.gridLayout = QtWidgets.QGridLayout()
+ self.gridLayout.setObjectName("gridLayout")
+ self.label_2 = QtWidgets.QLabel(SidcDialog)
+ self.label_2.setObjectName("label_2")
+ self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1)
+ self.comboHQ = QtWidgets.QComboBox(SidcDialog)
+ self.comboHQ.setSizeAdjustPolicy(QtWidgets.QComboBox.AdjustToMinimumContentsLength)
+ self.comboHQ.setObjectName("comboHQ")
+ self.gridLayout.addWidget(self.comboHQ, 4, 1, 1, 1)
+ self.label_12 = QtWidgets.QLabel(SidcDialog)
+ self.label_12.setObjectName("label_12")
+ self.gridLayout.addWidget(self.label_12, 10, 0, 1, 1)
+ self.comboStatus = QtWidgets.QComboBox(SidcDialog)
+ self.comboStatus.setSizeAdjustPolicy(QtWidgets.QComboBox.AdjustToMinimumContentsLength)
+ self.comboStatus.setObjectName("comboStatus")
+ self.gridLayout.addWidget(self.comboStatus, 3, 1, 1, 1)
+ self.label_6 = QtWidgets.QLabel(SidcDialog)
+ self.label_6.setObjectName("label_6")
+ self.gridLayout.addWidget(self.label_6, 4, 0, 1, 1)
+ self.comboSymbolSet = QtWidgets.QComboBox(SidcDialog)
+ self.comboSymbolSet.setSizeAdjustPolicy(QtWidgets.QComboBox.AdjustToMinimumContentsLength)
+ self.comboSymbolSet.setObjectName("comboSymbolSet")
+ self.gridLayout.addWidget(self.comboSymbolSet, 2, 1, 1, 1)
+ self.comboContext = QtWidgets.QComboBox(SidcDialog)
+ self.comboContext.setSizeAdjustPolicy(QtWidgets.QComboBox.AdjustToMinimumContentsLength)
+ self.comboContext.setObjectName("comboContext")
+ self.gridLayout.addWidget(self.comboContext, 0, 1, 1, 1)
+ self.label_8 = QtWidgets.QLabel(SidcDialog)
+ self.label_8.setObjectName("label_8")
+ self.gridLayout.addWidget(self.label_8, 6, 0, 1, 1)
+ self.label_7 = QtWidgets.QLabel(SidcDialog)
+ self.label_7.setObjectName("label_7")
+ self.gridLayout.addWidget(self.label_7, 5, 0, 1, 1)
+ self.comboAmplifier = QtWidgets.QComboBox(SidcDialog)
+ self.comboAmplifier.setSizeAdjustPolicy(QtWidgets.QComboBox.AdjustToMinimumContentsLength)
+ self.comboAmplifier.setObjectName("comboAmplifier")
+ self.gridLayout.addWidget(self.comboAmplifier, 5, 1, 1, 1)
+ self.label_10 = QtWidgets.QLabel(SidcDialog)
+ self.label_10.setObjectName("label_10")
+ self.gridLayout.addWidget(self.label_10, 8, 0, 1, 1)
+ self.label_11 = QtWidgets.QLabel(SidcDialog)
+ self.label_11.setObjectName("label_11")
+ self.gridLayout.addWidget(self.label_11, 9, 0, 1, 1)
+ self.label_5 = QtWidgets.QLabel(SidcDialog)
+ self.label_5.setObjectName("label_5")
+ self.gridLayout.addWidget(self.label_5, 3, 0, 1, 1)
+ self.label_9 = QtWidgets.QLabel(SidcDialog)
+ self.label_9.setObjectName("label_9")
+ self.gridLayout.addWidget(self.label_9, 7, 0, 1, 1)
+ self.label_3 = QtWidgets.QLabel(SidcDialog)
+ self.label_3.setObjectName("label_3")
+ self.gridLayout.addWidget(self.label_3, 0, 0, 1, 1)
+ self.label_4 = QtWidgets.QLabel(SidcDialog)
+ self.label_4.setObjectName("label_4")
+ self.gridLayout.addWidget(self.label_4, 2, 0, 1, 1)
+ self.comboStandardId = QtWidgets.QComboBox(SidcDialog)
+ self.comboStandardId.setSizeAdjustPolicy(QtWidgets.QComboBox.AdjustToMinimumContentsLength)
+ self.comboStandardId.setObjectName("comboStandardId")
+ self.gridLayout.addWidget(self.comboStandardId, 1, 1, 1, 1)
+ self.label_13 = QtWidgets.QLabel(SidcDialog)
+ self.label_13.setObjectName("label_13")
+ self.gridLayout.addWidget(self.label_13, 11, 0, 1, 1)
+ self.comboModifier2 = QtWidgets.QComboBox(SidcDialog)
+ self.comboModifier2.setSizeAdjustPolicy(QtWidgets.QComboBox.AdjustToMinimumContentsLength)
+ self.comboModifier2.setObjectName("comboModifier2")
+ self.gridLayout.addWidget(self.comboModifier2, 11, 1, 1, 1)
+ self.comboModifier1 = QtWidgets.QComboBox(SidcDialog)
+ self.comboModifier1.setSizeAdjustPolicy(QtWidgets.QComboBox.AdjustToMinimumContentsLength)
+ self.comboModifier1.setObjectName("comboModifier1")
+ self.gridLayout.addWidget(self.comboModifier1, 10, 1, 1, 1)
+ self.comboEntitySubtype = QtWidgets.QComboBox(SidcDialog)
+ self.comboEntitySubtype.setSizeAdjustPolicy(QtWidgets.QComboBox.AdjustToMinimumContentsLength)
+ self.comboEntitySubtype.setObjectName("comboEntitySubtype")
+ self.gridLayout.addWidget(self.comboEntitySubtype, 9, 1, 1, 1)
+ self.comboEntity = QtWidgets.QComboBox(SidcDialog)
+ self.comboEntity.setSizeAdjustPolicy(QtWidgets.QComboBox.AdjustToMinimumContentsLength)
+ self.comboEntity.setObjectName("comboEntity")
+ self.gridLayout.addWidget(self.comboEntity, 7, 1, 1, 1)
+ self.comboEntityType = QtWidgets.QComboBox(SidcDialog)
+ self.comboEntityType.setSizeAdjustPolicy(QtWidgets.QComboBox.AdjustToMinimumContentsLength)
+ self.comboEntityType.setObjectName("comboEntityType")
+ self.gridLayout.addWidget(self.comboEntityType, 8, 1, 1, 1)
+ self.comboDescriptor = QtWidgets.QComboBox(SidcDialog)
+ self.comboDescriptor.setSizeAdjustPolicy(QtWidgets.QComboBox.AdjustToMinimumContentsLength)
+ self.comboDescriptor.setObjectName("comboDescriptor")
+ self.gridLayout.addWidget(self.comboDescriptor, 6, 1, 1, 1)
+ self.verticalLayout.addLayout(self.gridLayout)
+ self.line = QtWidgets.QFrame(SidcDialog)
+ self.line.setFrameShape(QtWidgets.QFrame.HLine)
+ self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
+ self.line.setObjectName("line")
+ self.verticalLayout.addWidget(self.line)
+ self.horizontalLayout = QtWidgets.QHBoxLayout()
+ self.horizontalLayout.setObjectName("horizontalLayout")
+ self.label = QtWidgets.QLabel(SidcDialog)
+ font = QtGui.QFont()
+ font.setPointSize(12)
+ self.label.setFont(font)
+ self.label.setObjectName("label")
+ self.horizontalLayout.addWidget(self.label)
+ self.txtCode = QtWidgets.QLineEdit(SidcDialog)
+ self.txtCode.setEnabled(False)
+ font = QtGui.QFont()
+ font.setPointSize(12)
+ self.txtCode.setFont(font)
+ self.txtCode.setFrame(False)
+ self.txtCode.setObjectName("txtCode")
+ self.horizontalLayout.addWidget(self.txtCode)
+ self.verticalLayout.addLayout(self.horizontalLayout)
+ spacerItem = QtWidgets.QSpacerItem(311, 53, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
+ self.verticalLayout.addItem(spacerItem)
+ self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
+ self.horizontalLayout_2.setObjectName("horizontalLayout_2")
+ spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
+ self.horizontalLayout_2.addItem(spacerItem1)
+ self.labelImg = QtWidgets.QLabel(SidcDialog)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.labelImg.sizePolicy().hasHeightForWidth())
+ self.labelImg.setSizePolicy(sizePolicy)
+ self.labelImg.setMinimumSize(QtCore.QSize(100, 100))
+ self.labelImg.setMaximumSize(QtCore.QSize(100, 100))
+ self.labelImg.setBaseSize(QtCore.QSize(100, 100))
+ self.labelImg.setFrameShape(QtWidgets.QFrame.Box)
+ self.labelImg.setText("")
+ self.labelImg.setObjectName("labelImg")
+ self.horizontalLayout_2.addWidget(self.labelImg)
+ spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
+ self.horizontalLayout_2.addItem(spacerItem2)
+ self.verticalLayout.addLayout(self.horizontalLayout_2)
+ spacerItem3 = QtWidgets.QSpacerItem(311, 52, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
+ self.verticalLayout.addItem(spacerItem3)
+ self.buttonBox = QtWidgets.QDialogButtonBox(SidcDialog)
+ self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
+ self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok)
+ self.buttonBox.setObjectName("buttonBox")
+ self.verticalLayout.addWidget(self.buttonBox)
+
+ self.retranslateUi(SidcDialog)
+ self.buttonBox.accepted.connect(SidcDialog.accept)
+ self.buttonBox.rejected.connect(SidcDialog.reject)
+ QtCore.QMetaObject.connectSlotsByName(SidcDialog)
+
+ def retranslateUi(self, SidcDialog):
+ _translate = QtCore.QCoreApplication.translate
+ SidcDialog.setWindowTitle(_translate("SidcDialog", "SIDC code"))
+ self.label_2.setText(_translate("SidcDialog", "Standard Identity"))
+ self.label_12.setText(_translate("SidcDialog", "Sector 1 Modifer"))
+ self.label_6.setText(_translate("SidcDialog", "Headquarters/task force/dummy (HQTF)"))
+ self.label_8.setText(_translate("SidcDialog", "Descriptor"))
+ self.label_7.setText(_translate("SidcDialog", "Amplifier"))
+ self.label_10.setText(_translate("SidcDialog", "Entity type"))
+ self.label_11.setText(_translate("SidcDialog", "Entity subtype"))
+ self.label_5.setText(_translate("SidcDialog", "Status"))
+ self.label_9.setText(_translate("SidcDialog", "Entity"))
+ self.label_3.setText(_translate("SidcDialog", "Context"))
+ self.label_4.setText(_translate("SidcDialog", "Symbol set"))
+ self.label_13.setText(_translate("SidcDialog", "Sector 2 Modifer"))
+ self.label.setText(_translate("SidcDialog", "SIDC code"))
+
+
+if __name__ == "__main__":
+ import sys
+ app = QtWidgets.QApplication(sys.argv)
+ SidcDialog = QtWidgets.QDialog()
+ ui = Ui_SidcDialog()
+ ui.setupUi(SidcDialog)
+ SidcDialog.show()
+ sys.exit(app.exec_())
+
diff --git a/milstd2525/ui/sidcdialogbase.ui b/milstd2525/ui/sidcdialogbase.ui
index 7798210..af3a6f6 100644
--- a/milstd2525/ui/sidcdialogbase.ui
+++ b/milstd2525/ui/sidcdialogbase.ui
@@ -1,13 +1,13 @@
- Dialog
-
+ SidcDialog
+
0
0
617
- 497
+ 672
@@ -15,9 +15,51 @@
-
-
+
+
-
+
+
+ Standard Identity
+
+
+
+ -
+
+
+ QComboBox::AdjustToMinimumContentsLength
+
+
+
+ -
+
+
+ Sector 1 Modifer
+
+
+
+ -
+
+
+ QComboBox::AdjustToMinimumContentsLength
+
+
+
+ -
+
+
+ Headquarters/task force/dummy (HQTF)
+
+
+
+ -
+
+
+ QComboBox::AdjustToMinimumContentsLength
+
+
+
-
-
+
QComboBox::AdjustToMinimumContentsLength
@@ -26,28 +68,35 @@
-
- Icon
+ Descriptor
- -
-
+
-
+
- Special entity subtypes
+ Amplifier
- -
-
+
-
+
+
+ QComboBox::AdjustToMinimumContentsLength
+
+
+
+ -
+
- StandardIdentity2
+ Entity type
- -
-
+
-
+
- Headquarters/task force/dummy
+ Entity subtype
@@ -58,17 +107,17 @@
- -
-
+
-
+
- Echelon/mobility/towed array
+ Entity
-
- StandardIdentity1
+ Context
@@ -79,78 +128,57 @@
- -
-
+
-
+
QComboBox::AdjustToMinimumContentsLength
- -
-
+
-
+
- Icon modifier 1
+ Sector 2 Modifer
- -
+
-
QComboBox::AdjustToMinimumContentsLength
- -
-
-
- Icon modifier 2
-
-
-
- -
-
-
- QComboBox::AdjustToMinimumContentsLength
-
-
-
- -
-
+
-
+
QComboBox::AdjustToMinimumContentsLength
- -
-
+
-
+
QComboBox::AdjustToMinimumContentsLength
- -
-
+
-
+
QComboBox::AdjustToMinimumContentsLength
- -
-
+
-
+
QComboBox::AdjustToMinimumContentsLength
-
-
-
- QComboBox::AdjustToMinimumContentsLength
-
-
-
- -
-
+
QComboBox::AdjustToMinimumContentsLength
@@ -303,7 +331,7 @@
buttonBox
accepted()
- Dialog
+ SidcDialog
accept()
@@ -319,7 +347,7 @@
buttonBox
rejected()
- Dialog
+ SidcDialog
reject()
diff --git a/milstd2525/ui/trash.py b/milstd2525/ui/trash.py
new file mode 100644
index 0000000..0647c44
--- /dev/null
+++ b/milstd2525/ui/trash.py
@@ -0,0 +1,54 @@
+import json
+
+
+def main():
+ with open("/Users/vickdw/Downloads/symbolSets.json") as f:
+ symbolSets = json.load(f)
+ for s in symbolSets:
+ ent = {}
+ ent_type = {}
+ ent_subtype = {}
+ textfile = open("/Users/vickdw/Downloads/" + s['label'] + ".txt", "w")
+ textfile.write("entities:\n")
+ textfile.write("{\n")
+ for e in s['entities']:
+ x = "'" + e['digits'] + " " + e['label'] + "': '" + e['digits'] + "',"
+ textfile.write(x + "\n")
+ textfile.write("}\n")
+
+ for e in s['entities']:
+ if len(e['entityTypes']) > 0:
+ textfile.write("entity-types:\n")
+ textfile.write(" '" + e['digits'] + ' ' + e['label'] + "': {\n")
+ textfile.write(" '00': '00',\n")
+ for et in e['entityTypes']:
+ x = " '" + et['digits'] + " " + et['label'] + "': '" + et['digits'] + "',"
+ textfile.write(x + "\n")
+ textfile.write("}\n")
+ if len(e['entityTypes']) > 0:
+ for et in e['entityTypes']:
+ if len(et['entitySubTypes']) > 0:
+ textfile.write("entity-subtypes:\n")
+ textfile.write(" '" + et['digits'] + " " + et['label'] + "': {\n")
+ textfile.write(" '00': '00',\n")
+ for est in et['entitySubTypes']:
+ x = " '" + est['digits'] + " " + est['label'] + "': '" + est['digits'] + "',"
+ textfile.write(x + "\n")
+ textfile.write("}\n")
+ textfile.write("Modifiers 1:\n")
+ textfile.write("{\n")
+ for m in s['sectorOneModifiers']:
+ x = "'" + m['digits'] + " " + m['label'] + "': '" + m['digits'] + "',"
+ textfile.write(x + "\n")
+ textfile.write("}\n\n")
+
+ textfile.write("Modifiers 2:\n")
+ textfile.write("{\n")
+ for m in s['sectorTwoModifiers']:
+ x = "'" + m['digits'] + " " + m['label'] + "': '" + m['digits'] + "',"
+ textfile.write(x + "\n")
+ textfile.write("}\n")
+
+
+if __name__ == "__main__":
+ main()