Cursor on Target (CoT) to format wiadomości oparty na XML, opracowany przez Laboratorium Badań Lotnictwa USA na początku lat 2000 w celu rozwiązania konkretnego problemu: jak współdzielić pozycję, tożsamość i status celu lub jednostki między heterogenicznymi systemami wojskowymi, które nie zostały zaprojektowane do interoperacji? Odpowiedzią CoT był minimalny, rozszerzalny schemat XML, który każdy system może produkować i konsumować.
Dwie dekady później CoT stał się de facto standardem do raportowania pozycji i współdzielenia zdarzeń w ekosystemie taktycznego brzegu. ATAK (Android Team Awareness Kit), WinTAK, iTAK, TAK Server i setki wtyczek mówią CoT. Oprogramowanie obronne, które musi wymieniać dane pozycyjne z taktycznymi systemami polowymi, musi generować lub konsumować wiadomości CoT.
Struktura XML: elementy event, point, detail
Wiadomość CoT to dokument XML z jednym elementem głównym: <event>. Każda wiadomość CoT jest zdarzeniem, niezależnie od tego czy opisuje aktualizację pozycji, raport z sensora, wiadomość czatu czy zadanie misji.
Minimalny meldunek pozycyjny CoT:
<event version="2.0"
uid="BRAVO-2-1"
type="a-f-G-U-C"
how="m-g"
time="2026-05-11T08:30:00.000Z"
start="2026-05-11T08:30:00.000Z"
stale="2026-05-11T08:31:00.000Z">
<point lat="52.2297"
lon="21.0122"
hae="100.0"
ce="10.0"
le="5.0"/>
<detail>
<contact callsign="BRAVO-2-1"/>
<group name="Blue" role="Team Leader"/>
<track speed="0.0" course="90.0"/>
</detail>
</event>
uid: Globalnie unikalny identyfikator encji. Utrzymywany we wszystkich meldunkach dla tej samej encji.
type: Hierarchiczny ciąg kodujący klasyfikację encji. a-f-G-U-C = atom, sojuszniczy, naziemny, jednostka, bojowa. a-h-A = atom, wrogi, powietrzny.
stale: Czas, po którym raport należy uznać za nieaktualny. Ustaw w przybliżeniu 2× oczekiwany interwał aktualizacji.
point: Pozycja encji we współrzędnych WGS84. hae to wysokość nad elipsoidą WGS84 w metrach (nie MSL). ce i le to błąd okrągły i liniowy w metrach.
Typy CoT: hierarchia klasyfikacji
a-f-G (Sojuszniczy naziemny): Wyświetlany niebieskim prostokątem wg MIL-STD-2525.
a-h-G (Wrogi naziemny): Wyświetlany czerwonym rombem.
a-u-G (Nieznany naziemny): Wyświetlany żółtym znakiem zapytania. Dla niezidentyfikowanych kontaktów radarowych.
a-f-A (Sojuszniczy powietrzny): Sojusznicze BSP, śmigłowce i samoloty. Szczególnie istotne w kontekście integracji systemów bezzałogowych w SZ RP.
TAK Server: routing, filtrowanie i federacja
TAK Server jest serwerową komponentą ekosystemu TAK. Odbiera wiadomości CoT od połączonych klientów i kieruje je do innych klientów na podstawie konfigurowalnych reguł.
Grupy ograniczają które klienty mogą widzieć które zdarzenia. Federacja łączy wiele instancji TAK Server, umożliwiając przepływ zdarzeń CoT między instancjami serwerów w różnych lokalizacjach — mechanizm, dzięki któremu pozycje niższego szczebla stają się widoczne w systemach COP wyższego szczebla bez bezpośrednich połączeń klientów.
Implementacja w Pythonie: parsowanie i generowanie CoT
Biblioteka pytak zapewnia kompletną implementację generowania zdarzeń CoT. Dla parsowania wystarczy standardowy xml.etree.ElementTree Pythona. Połączenie z TAK Server przez TCP wymaga nawiązania połączenia TCP do portu 8087 (lub TLS na 8089) i zapisania ciągu XML z następującym bajtem terminatora null. Biblioteka pytak to abstrahuje i wspiera multicast UDP dla wdrożeń w sieci lokalnej.
Wskazówka dotycząca czasu stale: Ustaw czas stale w przybliżeniu 2× oczekiwany interwał aktualizacji dla typu encji. Dla pieszego żołnierza aktualizującego się co 30 sekund, stale powinno wynosić 60 sekund. Zbyt długi stale powoduje, że ślady-duchy utrzymują się na COP po odejściu encji w tryb offline.