Chaque affichage cartographique militaire au sein de l'OTAN représente les mêmes éléments essentiels : une compagnie d'infanterie amie, un bataillon blindé hostile, un contact de surface inconnu, une zone d'engagement planifiée. Deux normes régissent l'apparence de ces éléments — l'APP-6 de l'OTAN et le MIL-STD-2525 des États-Unis. Elles partagent un ancêtre, se recoupent à environ quatre-vingt-quinze pour cent et divergent précisément là où votre moteur de rendu cède. Si vous développez des logiciels C2 pour un public de coalition, vous finirez par livrer du code qui devra parler les deux. Voici la comparaison d'ingénierie : origines, paysage des versions, code d'identification de symbole, jeux de symboles, amplificateurs, rendu et les cas limites de conversion qui posent problème.
1. deux normes, un seul ancêtre
Le MIL-STD-2525 est la norme du département de la Défense des États-Unis pour la symbologie commune de combat. L'APP-6 — Allied Procedural Publication 6, promulguée sous le STANAG 2019 — est la norme de l'OTAN. Elles descendent du même effort des années 1990 visant à doter les forces interarmées et combinées d'un langage visuel unique pour l'image opérationnelle commune, et pendant la majeure partie de leur histoire elles ont été délibérément maintenues en phase. Le MIL-STD-2525A et l'APP-6A étaient des jumeaux ; le 2525B s'alignait sur l'APP-6B. Le document américain avait tendance à ouvrir la voie, l'OTAN ratifiait une version étroitement correspondante un an ou deux plus tard, et les systèmes nationaux mettaient en œuvre celle qu'exigeait leur chaîne d'accréditation.
La divergence qui compte s'est produite à la frontière entre générations. Les États-Unis ont publié le MIL-STD-2525C en 2008 comme aboutissement mature de l'architecture d'origine. L'OTAN a ensuite pris l'initiative de la refonte de nouvelle génération, et les deux communautés ont co-développé le nouveau modèle livré sous les noms de MIL-STD-2525D (2014) et APP-6(D) (2017). La filiation s'inverse donc : pour la génération héritée les États-Unis menaient ; pour la génération moderne les normes ont reconvergé sur une conception élaborée conjointement. La conséquence pratique est que le 2525D et l'APP-6(D) sont bien plus proches d'une équivalence octet pour octet que tout couple antérieur — mais vous avez toujours sur le terrain un large parc installé de systèmes 2525C et APP-6(B) qui utilisent une structure de code complètement différente.
2. paysage des versions
Traitez les normes comme deux familles. La famille héritée est composée du MIL-STD-2525B/2525C et de l'APP-6(A)/(B) : un code d'identification de symbole de 15 caractères, un schéma hiérarchique mêlant lettres et chiffres, et un catalogue de symboles organisé autour des dimensions de combat. La famille moderne est composée du MIL-STD-2525D/2525E et de l'APP-6(D) : un code numérique de 20 chiffres, une architecture de jeux de symboles à plat, et un catalogue d'entités sensiblement élargi.
Les paires sémantiquement alignées sont 2525C ↔ APP-6(B) du côté hérité et 2525D ↔ APP-6(D) du côté moderne. Le 2525E (2022) étend le modèle moderne avec des jeux de symboles supplémentaires — notamment des entités plus riches pour l'espace, le cyberespace et les systèmes sans pilote — sans rompre la structure à 20 chiffres ; un moteur de rendu APP-6(D) lit donc correctement la plupart des codes 2525E et se contente de retomber sur une entité inconnue pour les nouveaux. Savoir quelle paire un système partenaire donné met en œuvre est la première question à résoudre sur toute intégration, car elle détermine si vous réalisez une correspondance champ par champ propre ou une traduction générationnelle.
3. structure du SIDC
Le code d'identification de symbole (SIDC) est le cœur des deux normes, et il a complètement changé d'une génération à l'autre. Le SIDC hérité est une chaîne de 15 caractères. La position 1 est le schéma de codage, la position 2 l'affiliation (ami, hostile, neutre, inconnu, plus les variantes présumé/suspect), la position 3 la dimension de combat (air, terre, surface maritime, sous-marin, espace, SOF), la position 4 le statut. Les positions 5 à 10 forment l'identifiant de fonction — un code de lettres hiérarchique où chaque caractère affine l'entité, de sorte qu'une unité d'infanterie mécanisée blindée et une unité d'infanterie générique partagent un préfixe et diffèrent par les caractères de fin. Les positions restantes portent les modificateurs de symbole et l'indicateur d'échelon. C'est compact et lisible par l'humain une fois mémorisé, mais c'est rigide : il ne reste aucune place pour ajouter de nouvelles entités sans réutiliser des emplacements.
Le SIDC moderne compte 20 chiffres, purement numérique et positionnel. Les chiffres 1–2 indiquent la version. Le chiffre 3 est le contexte d'identité standard (réalité, exercice, simulation). Les chiffres 5–6 sélectionnent le jeu de symboles — le champ le plus important, car il aiguille tout ce qui suit. Le chiffre 7 porte le statut, le 8 l'indicateur quartier général/force opérationnelle/factice, les 9–10 le descripteur d'amplificateur. Les chiffres 11–16 sont l'entité / le type d'entité / le sous-type d'entité, une hiérarchie numérique à trois niveaux. Les chiffres 17–18 et 19–20 sont les deux emplacements de modificateur. L'enseignement clé du point de vue d'un analyseur syntaxique : le code moderne est un enregistrement à décalage fixe, pas une chaîne à analyser, ce qui le rend bien plus facile à valider et bien plus difficile à détourner que la hiérarchie d'identifiant de fonction héritée.
Enseignement clé : les codes de 15 caractères et de 20 chiffres ne sont pas deux encodages des mêmes données — ce sont deux modèles de données différents. Un SIDC hérité fusionne affiliation, dimension et fonction en une seule chaîne hiérarchique ; le SIDC moderne sépare identité standard, jeu de symboles et hiérarchie numérique d'entités en champs indépendants de largeur fixe. Vous ne pouvez pas passer de l'un à l'autre par une regex. Il vous faut une table de correspondance, et c'est là que vit chaque bug de conversion.
4. jeux de symboles et entités
Dans le modèle moderne, le jeu de symboles (chiffres 5–6) est la clé d'aiguillage. Les jeux définis incluent l'air, le missile air, l'espace, le missile espace, l'unité terrestre, le civil terrestre, l'équipement terrestre, l'installation terrestre, les mesures de contrôle, la surface maritime, le sous-marin, la guerre des mines, les activités, le renseignement d'origine électromagnétique, ainsi que plusieurs jeux sans pilote et cyberespace ajoutés dans des révisions ultérieures. Le jeu de symboles détermine d'un seul coup la géométrie du cadre, les codes d'entité valides et les champs d'amplificateur disponibles. Un symbole d'unité terrestre utilise la famille de cadres rectangle/quadrilatère ; un symbole de surface maritime utilise le cadre en forme de coque de navire ; un symbole aérien utilise le cadre « air » arrondi par le haut.
C'est une séparation plus nette que le champ hérité de dimension de combat, qui confondait forme du cadre et domaine de l'entité. Dans le modèle moderne, le cadre provient de l'affiliation plus le jeu de symboles, tandis que l'icône à l'intérieur provient de la hiérarchie d'entités. Cette orthogonalité est exactement ce qui rend un moteur de rendu piloté par les données réalisable : vous construisez le cadre à partir d'une poignée d'entrées et vous recherchez le glyphe de l'icône à partir des chiffres d'entité, de manière indépendante. C'est la même discipline de séparation des préoccupations que nous décrivons dans notre analyse approfondie de l'ingénierie de symbologie avec le MIL-STD-2525.
5. amplificateurs et modificateurs
Le glyphe n'est que la moitié d'un symbole militaire. L'autre moitié est l'ensemble des amplificateurs — les décorations textuelles et graphiques placées autour du cadre, champs désignés par les lettres A à Y dans la norme. Le champ B est l'indicateur d'échelon ou de mobilité dessiné au-dessus du cadre (les points d'équipe/groupe, les barres de section/compagnie/bataillon, les croix X de brigade/division). Le champ T est la désignation unique — le nom ou le numéro de l'unité. Le champ H est l'information additionnelle, le champ W le groupe date-heure, le champ J la note d'évaluation, le champ C la quantité, le champ Q la flèche de direction de déplacement, le champ AA l'indicateur d'état-major de quartier général spécial.
Le statut (présent face à anticipé/planifié) est rendu par un cadre plein face à un cadre en pointillés — un petit détail qu'un nombre énorme de moteurs de rendu manquent, car il doit s'appliquer au trait du cadre sans affecter le remplissage ni l'icône. L'indicateur de quartier général prolonge une ligne d'état-major vers le bas depuis le cadre ; l'indicateur de force opérationnelle entoure le cadre d'une accolade ; l'indicateur factice/leurre ajoute une extension en pointillés. Échelon, QG, force opérationnelle et statut sont des indicateurs indépendants dans le SIDC moderne, ce qui signifie que votre moteur d'amplificateurs doit les composer plutôt que de basculer sur un seul type de symbole énuméré.
6. rendu
En pratique, presque personne ne dessine ces symboles à partir des PDF bruts de la norme. L'écosystème web s'est standardisé sur milsymbol, la bibliothèque JavaScript open source maintenue par Måns Beckman, qui génère un symbole militaire sous forme de SVG en ligne directement à partir d'un SIDC et d'un objet d'options contenant des valeurs d'amplificateur. Vous lui transmettez un code de 20 chiffres (ou hérité de 15 caractères) et un ensemble de valeurs de champ, et il renvoie un SVG en couches : le tracé du cadre, le remplissage d'affiliation, l'icône d'entité, ainsi que le texte et les graphiques d'amplificateur environnants, chacun sous forme d'éléments distincts que vous pouvez styliser.
C'est la mise en couches qui le rend rapide. Parce que le cadre, le remplissage, l'icône et les amplificateurs sont des couches SVG indépendantes, un moteur de rendu peut mettre en cache les parties coûteuses (la géométrie de l'icône d'entité) et ne recalculer que les parties bon marché (texte des amplificateurs, couleur) lorsqu'une piste se met à jour. À l'échelle C2 — des milliers de pistes se mettant à jour plusieurs fois par seconde — vous ne régénérez pas tout le symbole à chaque mise à jour de position ; vous transformez le groupe SVG en cache et ne réécrivez que le texte d'amplificateur modifié. Associer la sortie SVG de milsymbol à une couche de symboles canvas ou WebGL est l'approche standard du rendu cartographique en temps réel sur une image opérationnelle commune en mouvement. milsymbol prend en charge à la fois les styles de cadre 2525 et APP-6 via une seule option, ce qui est le moyen le moins coûteux de satisfaire un client de coalition qui veut la variante de cadre OTAN plutôt que celle des États-Unis.
7. pièges d'interconversion
La mise en correspondance d'un SIDC hérité de 15 caractères vers un code moderne de 20 chiffres est la conversion que vous écrirez, et elle est à perte dans les deux sens. Le champ d'affiliation se mappe assez proprement — ami, hostile, neutre, inconnu ont des homologues directs — mais les identités présumé-ami et suspect, ainsi que les variantes d'exercice joker/faker, ne survivent pas toutes intactes à un aller-retour. La dimension de combat doit être réexprimée en jeu de symboles, et ce n'est pas du un-pour-un : la dimension « terre » héritée se répartit entre unité terrestre, équipement terrestre et installation terrestre dans le modèle moderne ; vous ne pouvez donc pas déduire le jeu de symboles cible à partir du seul chiffre de dimension — vous devez inspecter l'identifiant de fonction.
La hiérarchie d'identifiant de fonction est le pire fautif. Plusieurs entités héritées n'ont pas d'entité moderne exacte et plusieurs entités modernes (en particulier les jeux cyberespace et sans pilote plus récents) n'ont aucun code hérité, si bien qu'elles se dégradent en une entité générique lors de la descente. L'échelon survit généralement ; les indicateurs de mobilité parfois non. La posture d'ingénierie sûre consiste à conserver le SIDC d'origine textuellement comme attribut stocké et à traiter le code converti comme une dérivation au moment du rendu, jamais comme le système de référence — ainsi une future correction de votre table de correspondance redessine toute l'image sans migration de données.
8. choisir pour votre produit C2
La décision porte rarement sur la norme « meilleure » — elles encodent la même doctrine. Elle porte sur qui consomme votre sortie. Si vos opérateurs et vos partenaires de coalition exploitent des systèmes OTAN, rendez la variante de cadre APP-6 par défaut ; si vous vous intégrez étroitement à des programmes américains, prenez le MIL-STD-2525 par défaut. La diffusabilité compte aussi ici : la symbologie elle-même n'est pas classifiée, mais les entités que vous renseignez et les variantes de SIDC que vous prenez en charge doivent suivre ce que les systèmes accrédités de vos partenaires affichent réellement, afin de ne pas pousser un symbole qui apparaîtrait vide sur l'écran d'un allié.
Le schéma qui vieillit bien est la stratégie de double rendu : stockez chaque piste avec son SIDC moderne de 20 chiffres comme identité canonique, conservez un indicateur de style de cadre (2525 vs APP-6) comme préférence d'affichage, et laissez la couche de symboles émettre l'un ou l'autre à la demande. Parce que milsymbol change de style de cadre à partir d'une seule option, le coût marginal de la prise en charge des deux est quasi nul une fois votre modèle de données propre. Construisez le pipeline de symboles comme une couche de correspondance mince et bien testée au-dessus d'un unique code canonique, traitez les tables de conversion comme des données versionnées plutôt que comme une logique codée en dur, et vous absorberez la prochaine révision — 2525F, APP-6(E) — comme une mise à jour de table plutôt qu'une réécriture. Pour le contexte architectural plus large, consultez notre guide complet des systèmes C2.