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.