Każda wiadomość Cursor on Target (CoT) to jeden dokument XML, którego element główny, <event>, przenosi kod typu, unikalny identyfikator, trzy znaczniki czasu UTC i pozycję <point>; wszystko pozostałe jedzie w otwartym kontenerze <detail>. Ten jeden kształt przenosi pozycje, znaczniki, czat, trasy, rysunki, alarmy i żądania medyczne między ATAK, WinTAK, iTAK i TAK Server. Ta strona to biblioteka do kopiowania: adnotowany, poprawny składniowo XML CoT dla wiadomości, które systemy taktyczne faktycznie wymieniają, każda z notatką, co robi z nią klient TAK po stronie odbiorczej.

O historii i koncepcji formatu przeczytasz w naszym przeglądzie formatu Cursor on Target, a omówienie pole po polu — w szczegółowej analizie schematu CoT; ten artykuł celowo zostaje na poziomie „pokaż mi XML”. Nazwy elementów i atrybutów poniżej zweryfikowano z publicznym podstawowym schematem zdarzeń CoT MITRE, dokumentacją podschematów i definicjami typów CoT publikowanymi razem z klientami TAK. Znaki wywoławcze, UID i współrzędne są fikcyjne; znaczniki czasu to przykładowe wartości ISO-8601 UTC.

Anatomia wiadomości CoT

Minimalne poprawne zdarzenie CoT wymaga siedmiu atrybutów <event>, dokładnie jednego <point> i opcjonalnie <detail>:

<event version="2.0" uid="ANDROID-9c2f71a4" type="a-f-G-U-C" how="m-g"
       time="2026-10-07T06:12:44.000Z" start="2026-10-07T06:12:44.000Z"
       stale="2026-10-07T06:13:14.000Z">
  <point lat="50.450112" lon="30.523398" hae="152.4" ce="4.5" le="9.0"/>
  <detail>
    <contact callsign="GRIF-2" endpoint="*:-1:stcp"/>
    <__group name="Cyan" role="Team Member"/>
    <status battery="78"/>
    <takv platform="ATAK-CIV" version="5.2.0" device="Samsung SM-G975F" os="34"/>
    <track speed="1.4" course="270.0"/>
    <precisionlocation geopointsrc="GPS" altsrc="GPS"/>
  </detail>
</event>

Co napędza każda część w kliencie odbiorczym:

Anatomia wiadomości Cursor on Target: po lewej szkielet XML zdarzenia CoT z atrybutami event (uid, type, how, time, start, stale), elementem point (lat, lon, hae, ce, le) i elementami potomnymi detail (contact, __group, status, takv, track, precisionlocation, remarks, link, usericon, __chat); strzałki po prawej łączą każdą część z tym, co napędza w ATAK i TAK Server: ikona na mapie i kolor przynależności, obsługa przeterminowania, pozycja i dokładność, znak wywoławczy, kolor zespołu i rola, bateria i wersja klienta, wektor prędkości i kursu, kierowanie GeoChat.
Każdy element zdarzenia CoT napędza konkretne zachowanie w ATAK, WinTAK i TAK Server — od ikony 2525 wybranej kodem typu po szare wygaszenie wyzwalane znacznikiem czasu stale.
CzęśćZnaczenieCo robi z tym ATAK / TAK Server
uidTożsamość rzeczy, nie wiadomościTen sam uid przesuwa istniejący znacznik; nowy uid tworzy nowy. Usunięcia i odwołania alarmów celują właśnie w niego.
typeTaksonomia kropka-myślnik opisująca, czym jest obiektWybiera symbol MIL-STD-2525 i kolor przynależności; steruje filtrowaniem po stronie serwera i regułami federacji.
howJak powstała pozycjaWażenie raportu w fuzji danych (GPS, szacunek czy retransmisja); ATAK pokazuje to w szczegółach znacznika.
time / start / staleCzas wygenerowania i okno ważnościPo upływie stale klienty wygaszają znacznik szaro, a potem go usuwają; nikt nie wysyła jawnego końca ważności.
pointlat/lon (stopnie dziesiętne WGS-84), hae (metry nad elipsoidą), ce/le (promienie błędu)Umieszcza znacznik; ce może narysować okrąg dokładności. Nieznane wartości używają wartownika 9999999.
detailOtwarty kontener rozszerzeńZnane elementy potomne (niżej) ustawiają znak wywoławczy, kolor zespołu, baterię, wektor prędkości; nieznane są ignorowane, nie odrzucane.

Trzy właściwości <point> stale potykają integratorów. hae to wysokość nad elipsoidą WGS-84, nie nad średnim poziomem morza. ce i le to 1-sigma poziome i pionowe granice błędu w metrach, wymagane przez schemat nawet gdy nieznane — wartość 9999999.0 jest umownym wartownikiem „nieznane” i jest lepsza niż pewne siebie 0.0. A lat/lon to stopnie dziesiętne ze znakiem, gdzie sześć miejsc po przecinku daje mniej więcej 0,1 m rozdzielczości; w CoT nie ma opcji MGRS ani UTM.

Kody typów CoT i wartości how: ściągawka

Atrybut type to rozdzielona myślnikami ścieżka taksonomii, której pierwszy token mówi, jakim rodzajem zdarzenia to jest:

Pierwszy tokenRodzinaTypowe zastosowania
a-Atomy — rzeczywiste obiektyPododdziały, pojazdy, samoloty, ranni, incydenty
b-Bity — obiekty informacyjneCzat, trasy, rysunki, znaczniki, aliasy wideo, alarmy
t-Zadaniowanie / sterowaniePakiety podtrzymujące, zadania usunięcia, pobieranie danych
y-OdpowiedziPotwierdzenia, status zadań

Dla atomów drugi token to przynależność, trzeci wymiar walki; pozostałe schodzą drzewem funkcji MIL-STD-2525 wielkimi literami, a małe litery są zarezerwowane dla rozszerzeń CoT:

TokenPrzynależnośćTokenWymiar walki
pOczekującyPKosmos
uNieznanyAPowietrze
aPrzypuszczalnie sojuszniczyGLąd
fSojuszniczySPowierzchnia morza
nNeutralnyUPodwodny
sPodejrzanyXInne
hWrogidalej następują identyfikatory funkcji 2525 wielkimi literami (np. -U-C bojowy, -E-V-A-T czołg)

Ponieważ taksonomia dekoduje się po prefiksie, klient, który rozumie tylko a-h-G, i tak narysuje ogólną wrogą ikonę naziemną dla a-h-G-E-V-A-T. Częste ciągi z rzeczywistego ruchu: a-f-G-U-C (sojuszniczy naziemny bojowy — domyślny typ urządzenia ATAK), a-f-A-M-F-Q / a-f-A-M-H-Q (sojuszniczy dron ze skrzydłem stałym / wirnikowym), a-u-G (nieznany naziemny), b-m-p-s-m (znacznik spot map), b-t-f (GeoChat), b-m-r (trasa), b-r-f-h-c (żądanie medyczne 9-line). Jak ikony mapują się na symbole, omawia renderowanie symboliki w TAK, a porównanie standardów — APP-6 kontra MIL-STD-2525.

Atrybut how zapisuje pochodzenie, a systemy fuzji ważą nim raporty:

howZnaczenie
h-eSzacunek wpisany przez człowieka
h-c / h-t / h-pPoliczone przez człowieka / przepisane (głos, papier) / wklejone z innego okna
h-g-i-g-oOficjalnie „wysoce wątpliwy ślad” — w praktyce ATAK ostemplowuje tym większość ręcznie upuszczonych znaczników i GeoChat
m-gWygenerowane maszynowo z GPS (doprecyzowania m-g-d DGPS, m-g-n INS+GPS)
m-i / m-f / m-rZmierzone z obrazu / zfuzowane z kilku źródeł / przekazane przez bramkę
m-n / m-s / m-cNawigacja inercjalna / symulacja / plik konfiguracyjny

Zasady czasu: time, start i stale to ISO 8601 UTC zakończone Z (części sekund są opcjonalne). time to moment wytworzenia zdarzenia; start–stale to okno ważności. Ustawienie stale wcześniejszego niż start to pierwotna konwencja MITRE „porzuć ślad” — choć w sieciach TAK pewniejsze jest jawne zadanie usunięcia (niżej).

Raporty pozycji: sojuszniczy PLI i znaczniki wrogie/neutralne

Przykład na górze strony to raport własnej pozycji (PLI): ATAK odtwarza go co kilka sekund z tym samym uid, ustawia stale na mniej więcej dwa–cztery interwały raportowania plus zapas i pozwala każdemu innemu klientowi usunąć znacznik, gdy aktualizacje ustaną. Znaczniki z czujników lub upuszczone przez operatora używają tego samego kształtu zdarzenia z innym type i dłuższym stale:

<event version="2.0" uid="E-20261007-0413" type="a-h-G-E-V-A-T" how="h-g-i-g-o"
       time="2026-10-07T06:41:02.000Z" start="2026-10-07T06:41:02.000Z"
       stale="2026-10-07T18:41:02.000Z">
  <point lat="50.412220" lon="30.591054" hae="9999999.0" ce="25.0" le="9999999.0"/>
  <detail>
    <contact callsign="K-41"/>
    <remarks source="BAO.F.ATAK.ANDROID-9c2f71a4">Hull-down at treeline, 2 vehicles</remarks>
    <usericon iconsetpath="COT_MAPPING_2525C/a-h/a-h-G-E-V-A-T"/>
    <link uid="ANDROID-9c2f71a4" type="a-f-G-U-C" relation="p-p"/>
    <archive/>
  </detail>
</event>

Co robi odbiorca: type maluje czerwony romb czołgu; contact/callsign staje się etykietą; usericon przypina dokładny wpis zestawu ikon (postać COT_MAPPING_2525C/<affiliation>/<type> to dokładnie to, co emituje paleta 2525 w ATAK); link relation="p-p" przypisuje autora; <archive/> każe klientom utrwalić znacznik zamiast pozwolić mu wygasnąć ze stale. Nieznane kontakty po prostu używają a-u-G; żółta ikona ze znakiem zapytania pojawia się bez innych zmian. Dla zwykłej kolorowej pinezki bez kodowania 2525 ATAK używa znacznika spot map:

<event version="2.0" uid="9405e320-9356-41c4-8449-f46990aa17f8"
       type="b-m-p-s-m" how="h-g-i-g-o"
       time="2026-10-07T06:55:10.000Z" start="2026-10-07T06:55:10.000Z"
       stale="2026-10-08T06:55:10.000Z">
  <point lat="50.456090" lon="30.563750" hae="9999999.0" ce="9999999.0" le="9999999.0"/>
  <detail>
    <contact callsign="R 1"/>
    <color argb="-65536"/>
    <usericon iconsetpath="COT_MAPPING_SPOTMAP/b-m-p-s-m/-65536"/>
  </detail>
</event>

Tu ikonę wybiera usericon z palety spot map i wartość koloru ARGB (32-bitowa liczba całkowita ze znakiem, -65536 to nieprzezroczysta czerwień), a nie kod symboliki — przydatne dla sojuszniczych adnotacji, które nie powinny sugerować tożsamości 2525.

Wiadomości GeoChat (b-t-f)

Czat w świecie TAK to nie osobny protokół: linia GeoChat to zdarzenie CoT typu b-t-f, którego tekst jedzie w <remarks>, a adresowanie w <__chat>/<chatgrp>:

<event version="2.0"
       uid="GeoChat.ANDROID-9c2f71a4.All Chat Rooms.3f8c2b1e-77d3-4c9a-9e21-5b0f6a2d4e88"
       type="b-t-f" how="h-g-i-g-o"
       time="2026-10-07T07:02:31.000Z" start="2026-10-07T07:02:31.000Z"
       stale="2026-10-08T07:02:31.000Z">
  <point lat="0.0" lon="0.0" hae="0.0" ce="9999999.0" le="9999999.0"/>
  <detail>
    <__chat id="All Chat Rooms" chatroom="All Chat Rooms" groupOwner="false"
            senderCallsign="GRIF-2"
            messageId="3f8c2b1e-77d3-4c9a-9e21-5b0f6a2d4e88">
      <chatgrp uid0="ANDROID-9c2f71a4" uid1="All Chat Rooms" id="All Chat Rooms"/>
    </__chat>
    <link uid="ANDROID-9c2f71a4" type="a-f-G-U-C" relation="p-p"/>
    <remarks source="BAO.F.ATAK.ANDROID-9c2f71a4"
             time="2026-10-07T07:02:31.000Z">Bearing 085, treeline, over.</remarks>
  </detail>
</event>

Jak to czytać: uid zdarzenia według konwencji to GeoChat.<sender>.<conversation>.<message-uuid>, co czyni deduplikację przy powtórce trywialną; chatgrp/uid0 to nadawca, a uid1 to cel — UID pojedynczego odbiorcy dla wiadomości bezpośredniej albo nazwa pokoju dla broadcastu; remarks/@to przenosi UID odbiorcy w wiadomościach bezpośrednich; stale jest ustawiony na dzień do przodu, bo czat, w przeciwieństwie do pozycji, musi przeżyć store-and-forward. Potwierdzenia doręczenia i odczytu wracają jako typy b-t-f-d i b-t-f-r. Punkt point zdarzenia może przypiąć wiadomość do miejsca na mapie; ATAK przekazuje też aktualną pozycję nadawcy, chyba że operator jej wyłączy. Pełny obraz store-and-forward i pasma opisuje czat taktyczny i strategia danych w TAK.

Trasy, rysunki i linie odległość–azymut

Trasa to jedno zdarzenie b-m-r, którego punkty trasy są elementami potomnymi <link> — b-m-p-w dla nazwanych punktów trasy, b-m-p-c dla punktów kontrolnych kształtów — po których następuje blok stylizacji <link_attr>:

<event version="2.0" uid="9017073e-5658-42e7-baa8-b98f3c9c1622" type="b-m-r" how="h-e"
       time="2026-10-07T07:20:00.000Z" start="2026-10-07T07:20:00.000Z"
       stale="2026-10-08T07:20:00.000Z">
  <point lat="0.0" lon="0.0" hae="9999999.0" ce="9999999.0" le="9999999.0"/>
  <detail>
    <link uid="f3acf150-d75c-407d-be43-e401ab40fe74" callsign="SP"
          type="b-m-p-w" point="50.443353,-77.054400" remarks="" relation="c"/>
    <link uid="820ebf04-1300-4c3a-a368-d6f1e21a5ddb" callsign=""
          type="b-m-p-c" point="50.436413,-77.045642" remarks="" relation="c"/>
    <link uid="f6926af1-deec-44f4-ae06-46065c829887" callsign="CP1"
          type="b-m-p-w" point="50.446574,-77.040572" remarks="" relation="c"/>
    <link_attr planningmethod="Infil" color="-1" method="Driving" prefix="CP"
               type="Vehicle" stroke="3" direction="Infil" routetype="Primary"
               order="Ascending Check Points"/>
    <strokeColor value="-1"/>
    <strokeWeight value="3.0"/>
    <contact callsign="ROUTE ALFA"/>
    <remarks></remarks>
    <archive/>
    <labels_on value="true"/>
  </detail>
</event>

ATAK renderuje listę link point jako geometrię trasy, promuje wpisy b-m-p-w do znaczników punktów z własnymi znakami wywoławczymi i czyta link_attr dla trybu przemieszczania (Driving|Walking|Flying|Swimming|Watercraft), kierunku (Infil|Exfil) i typu trasy (Primary|Secondary). Własny point zdarzenia to wartownik 0/0 — geometria w całości mieszka w detail.

Rysunki podążają za tym samym wzorcem „geometria w detail”. Okrąg to elipsa o równych osiach wewnątrz <shape>:

<event version="2.0" uid="6d09b6f6-720a-4eef-a197-183012512316"
       type="u-d-c-c" how="h-e"
       time="2026-10-07T07:35:12.000Z" start="2026-10-07T07:35:12.000Z"
       stale="2026-10-08T07:35:12.000Z">
  <point lat="50.437376" lon="30.572999" hae="9999999.0" ce="9999999.0" le="9999999.0"/>
  <detail>
    <shape>
      <ellipse major="300.0" minor="300.0" angle="360"/>
      <link uid="6d09b6f6-720a-4eef-a197-183012512316.Style"
            type="b-x-KmlStyle" relation="p-c">
        <Style>
          <LineStyle><color>ffffffff</color><width>4.0</width></LineStyle>
          <PolyStyle><color>96ffffff</color></PolyStyle>
        </Style>
      </link>
    </shape>
    <strokeColor value="-1"/>
    <strokeWeight value="4.0"/>
    <fillColor value="-1761607681"/>
    <contact callsign="PATROL AREA"/>
    <labels_on value="true"/>
  </detail>
</event>

Punkt point to środek, major/minor to metry, a blok w stylu KML zagnieżdżony w linku typu b-x-KmlStyle przenosi obrys i wypełnienie. Prostokąt opuszcza element shape i wylicza narożniki jako potomne <link point="lat,lon"/> z typem u-d-r; linia odręczna robi to samo z typem u-d-f, zamykając wielokąt powtórzeniem pierwszego punktu na końcu. Linia odległość–azymut jest znów inna: typ u-rb-a, point jest kotwicą, a wektor jest zapisany liczbowo:

<event version="2.0" uid="58df2fcd-e33e-414f-a718-b18b50cd3137"
       type="u-rb-a" how="h-e"
       time="2026-10-07T07:44:03.000Z" start="2026-10-07T07:44:03.000Z"
       stale="2026-10-08T07:44:03.000Z">
  <point lat="50.420806" lon="30.554945" hae="9999999.0" ce="9999999.0" le="9999999.0"/>
  <detail>
    <range value="886.14"/>
    <bearing value="45.6"/>
    <inclination value="0.0"/>
    <rangeUnits value="1"/>
    <bearingUnits value="0"/>
    <northRef value="0"/>
    <strokeColor value="-65536"/>
    <strokeWeight value="3.0"/>
    <contact callsign="R&amp;B 1"/>
  </detail>
</event>

Jednostki kodują się jako małe liczby całkowite: rangeUnits 0=km, 1=metry, 2=mile, 3=jardy, 4=stopy, 5=mile morskie; bearingUnits 0=stopnie, 1=milystemy, 2=radiany; northRef 0=północ rzeczywista, 1=magnetyczna, 2=siatki. ATAK przy imporcie przelicza pozycję grotu strzałki z kotwicy i wektora.

Alarmy i żądania CASEVAC/MEDEVAC

Sygnalizatory alarmowe to małe, pilne zdarzenia: typ b-a-o-tbl dla ogólnego alarmu 911, stale ledwie dziesięć sekund do przodu (majak jest retransmitowany, a nie zostawiany, by wisiał) oraz konwencja UID <device-uid>-9-1-1:

<event version="2.0" uid="ANDROID-9c2f71a4-9-1-1" type="b-a-o-tbl" how="h-g-i-g-o"
       time="2026-10-07T08:01:57.000Z" start="2026-10-07T08:01:57.000Z"
       stale="2026-10-07T08:02:07.000Z">
  <point lat="50.448620" lon="30.531104" hae="160.0" ce="8.0" le="12.0"/>
  <detail>
    <link uid="ANDROID-9c2f71a4" type="a-f-G-U-C" relation="p-p"/>
    <contact callsign="GRIF-2-Alert"/>
    <emergency type="911 Alert">GRIF-2</emergency>
  </detail>
</event>

Ciągi emergency/@type i ich typy CoT tak, jak definiuje je ATAK:

AlarmTyp CoTWyzwalacz w ATAK
911 Alertb-a-o-tblPrzycisk alarmu, ogólny
Ring The Bellb-a-o-panŚwiadoma prośba o pilną uwagę
In Contactb-a-o-opnPododdział w kontakcie
Geo-fence Breachedb-a-gŚlad wchodzi do monitorowanego geofence’a lub go opuszcza
Customb-a-o-cDefiniowane przez wtyczkę
Cancel Alertb-a-o-canOperator odwołuje aktywny majak

Po otrzymaniu klienci wyszukują znacznik po link/@uid, podnoszą alarm z odległością i azymutem do pozycji poszkodowanego i utrzymują majak przy życiu; TAK Server retransmituje go okresowo. Odwołanie ponownie używa tego samego uid zdarzenia i zmienia detail:

<event version="2.0" uid="ANDROID-9c2f71a4-9-1-1" type="b-a-o-can" how="h-g-i-g-o"
       time="2026-10-07T08:07:22.000Z" start="2026-10-07T08:07:22.000Z"
       stale="2026-10-07T08:07:32.000Z">
  <point lat="50.448620" lon="30.531104" hae="160.0" ce="8.0" le="12.0"/>
  <detail>
    <emergency cancel="true">GRIF-2</emergency>
  </detail>
</event>

Żądanie 9-line MEDEVAC/CASEVAC to znacznik typu b-r-f-h-c, którego detail przenosi element <_medevac_> (zwróć uwagę na podkreślenia) z dziewięcioma liniami w atrybutach. Bezpieczny, szeroko rozumiany podzbiór:

<event version="2.0" uid="7b1e0c52-2f4d-4f18-9c6e-0d4a2b9f5c31"
       type="b-r-f-h-c" how="h-g-i-g-o"
       time="2026-10-07T08:10:40.000Z" start="2026-10-07T08:10:40.000Z"
       stale="2026-10-07T09:10:40.000Z">
  <point lat="50.448620" lon="30.531104" hae="160.0" ce="8.0" le="12.0"/>
  <detail>
    <contact callsign="GRIF-2"/>
    <_medevac_ casevac="false" title="GRIF-2 9LINE" freq="41.50"
              urgent="1" priority="0" routine="0"
              litter="1" ambulatory="0"
              security="2" hlz_marking="2"
              equipment_none="true">
      <zMistsMap>
        <zMist title="MIST 1" z="Z1" m="GSW"
               i="left thigh" s="HR 110, BP 100/60" t="tourniquet, TXA"/>
      </zMistsMap>
    </_medevac_>
    <remarks>Pickup at gravel yard, wind 310/8</remarks>
  </detail>
</event>

Dekodowanie: liczby pacjentów wg priorytetu siedzą w urgent/priority/routine; linia 5 w litter/ambulatory; security to indeks 0–3 (N brak wroga, P możliwy, E wróg w rejonie, X wymagana eskorta); hlz_marking indeksuje A panele, B pirotechnika, C dym, D brak, E inne; sprzęt specjalny to flagi logiczne (hoist, extraction_equipment, ventilator); kliniczny raport MIST zagnieżdża się pod zMistsMap. ATAK renderuje z tego elementu pełną kartę 9-line i narzędzia lądowiska. Proces operacyjny wokół niego opisuje oprogramowanie koordynacji CASEVAC.

Pole widzenia czujnika i łącza wideo

Podschemat czujników MITRE dołącza sterowalne pole widzenia do dowolnego znacznika. Wewnątrz zdarzenia z pozycją samej platformy — tu sojuszniczy dron wirnikowy, typ a-f-A-M-H-Q — dodaj:

<event version="2.0" uid="UAV-ZP-07" type="a-f-A-M-H-Q" how="m-g"
       time="2026-10-07T08:22:05.000Z" start="2026-10-07T08:22:05.000Z"
       stale="2026-10-07T08:22:15.000Z">
  <point lat="50.437120" lon="30.552870" hae="820.0" ce="12.0" le="15.0"/>
  <detail>
    <contact callsign="ZP-07" endpoint="*:-1:stcp"/>
    <sensor azimuth="127.0" fov="30.0" vfov="22.0" range="2200.0"
           elevation="-18.0" model="EO/IR turret"/>
    <__video url="rtsp://192.168.4.60:8554/live.sdp"/>
  </detail>
</event>

azimuth to stopnie od północy rzeczywistej, elevation to pochylenie (ujemne znaczy w dół), fov/vfov to poziome i pionowe pole w stopniach, range to odległość skośna w metrach — razem pozwalają ATAK narysować na mapie stożek czujnika. Element potomny <__video> wiąże znacznik z URL strumienia, więc otwarcie znacznika otwiera transmisję. Samodzielne rejestracje kamer podróżują jako własne zdarzenia typu b-i-v z <ConnectionEntry> zawierającym address, port, protocol i pokrewne atrybuty tunera, które wypełniają menedżer wideo u każdego klienta. Szerszy potok — częstotliwości telemetrii, metadane KLV, naprowadzanie — opisuje integracja telemetrii dronów z TAK.

Tu utyka większość programów integracyjnych: radar, autopilot drona, czujnik akustyczny i starsze źródło danych C2 opisują świat różnie i każde trzeba przełożyć na poprawny CoT — właściwe typy, uczciwe ce/le, stabilne UID, sensowne stale — inaczej COP wypełnia się widmami śladów. Budujemy dokładnie takie bramki i adaptery CoT oraz wtyczki ATAK/WinTAK, które renderują wynik. Powiedz, jakiego źródła danych potrzebujesz na obrazie taktycznym →

Usuwanie znaczników i ping/pong podtrzymania

CoT nie ma wbudowanego usuwania; TAK dokłada to jako warstwę w postaci zdarzenia zadaniowego typu t-x-d-d, którego <link> wskazuje obiekt do usunięcia:

<event version="2.0" uid="6650d1ee-4b17-4d02-8c95-13a1f2e9b0aa"
       type="t-x-d-d" how="h-g-i-g-o"
       time="2026-10-07T08:31:19.000Z" start="2026-10-07T08:31:19.000Z"
       stale="2026-10-07T08:31:29.000Z">
  <point lat="0.0" lon="0.0" hae="9999999.0" ce="9999999.0" le="9999999.0"/>
  <detail>
    <link uid="E-20261007-0413" relation="p-p" type="a-h-G-E-V-A-T"/>
    <__forcedelete/>
  </detail>
</event>

Bez <__forcedelete/> ATAK tylko lokalnie oznacza wskazany element jako przeterminowany i usuwa go zgodnie z ustawieniami użytkownika; z nim element znika definitywnie u każdego klienta, który otrzymał zadanie. Importer wymaga, aby link/@uid, @relation i @type były obecne i niepuste, więc zachowaj wszystkie trzy. Keepalive jest jeszcze mniejszy — klienty TAK pingują serwer, który zamilkł na jakieś 15 sekund, powtarzając to co kilka sekund, i traktują pong typu t-x-c-t-r jako komunikat sterujący, który nigdy nie trafia na mapę:

<event version="2.0" uid="ANDROID-9c2f71a4-ping" type="t-x-c-t" how="m-g"
       time="2026-10-07T08:33:50.000Z" start="2026-10-07T08:33:50.000Z"
       stale="2026-10-07T08:34:00.000Z">
  <point lat="0.0" lon="0.0" hae="0.0" ce="9999999.0" le="9999999.0"/>
</event>

Jeśli budujesz bramkę, odbij to zachowanie: zdarzenie <uid>-ping w każdym interwale, w jakim połączenie ma być sprawdzane, i po cichu odrzucane pongi.

Generowanie poprawnego CoT: znaczniki czasu, stale, UID, maskowanie

Powtarzające się błędy nadajników CoT są przewidywalne i wszystkie są tanie do uniknięcia:

  • UTC, zawsze. Każdy znacznik czasu kończy się na Z; lokalne przesunięcia albo brak Z przesuwają znaczniki o godziny wstecz lub w przód. Ułamki sekund są opcjonalne, a każda precyzja jest legalna.
  • Dyscyplina stale. Ślady ruchome: dwa–cztery interwały raportowania plus margines. Znaczniki statyczne: godziny lub dni, z <archive/>, jeśli mają przetrwać. Nigdy nie zostawiaj stale na domyślnie dalekiej przyszłości dla żywego śladu — widmowe znaczniki to skarga numer jeden z pola.
  • Stabilne UID. Wyprowadzaj uid z bytu (numer seryjny, numer śladu, skrót treści), nie z wiadomości. Dwa realne ślady dzielące uid zapadają się w jeden migający znacznik.
  • Uczciwe błędy. Jeśli nie znasz wysokości ani dokładności, emituj 9999999.0, nie 0. Silniki fuzji traktują 0 jako deklarację.
  • Współrzędne. Stopnie dziesiętne ze znakiem, WGS-84; sześć miejsc po przecinku w zupełności wystarcza. Obcięcie do czterech miejsc (mniej więcej 10 m) to legalny wybór pasmowy, który podejmują niektóre biblioteki — ale rób to konsekwentnie.
  • Maskowanie XML. Maskuj &, <, > w wartościach atrybutów i tekście — znaki wywoławcze i uwagi prędzej czy później zawrą ampersand. Jeden zbłąkany < w polu remarks zabija cały dokument już w parserze.
  • Zwaliduj raz, ufaj potem. Sprawdzaj wyjście swojego nadajnika względem opublikowanego XSD zdarzeń CoT podczas developmentu. XSD nie wyłapie błędów semantycznych (stale przed start, bezsensowne ogony type), więc dodaj te sprawdzenia jako asercje w koderze.

Wysyłanie CoT: mesh multicast kontra TAK Server

Dwa transporty pokrywają niemal każde wdrożenie. Bezserwerowa mesh SA multikastuje każdy dokument XML jako jeden datagram UDP na standardowy adres TAK 239.2.3.1:6969 (GeoChat historycznie używał też 224.10.10.1:17012); każdy klient w segmencie słyszy wszystko i nie ma store-and-forward. W modelu serwerowym klienci łączą się z TAK Server po TCP — port 8087 jawny, 8089 TLS z certyfikatami klienta — który strumieniuje XML w obie strony, rozsyła zdarzenia z filtrowaniem po grupach i misjach i może przekodować strumień na zwarty format TAK protobuf negocjowany per połączenie. Szczegóły kodowania i negocjacji, w tym kiedy protobuf łamie narzędzia, omawia protokół TAK: CoT XML kontra protobuf; routing przez granice serwerów — architektura TAK Federation Hub, a obraz koalicyjny — sprzęganie CoT ze standardami NATO.

Jedna reguła kciuka rozstrzyga między nimi: jeśli odbiorcy są w tym samym segmencie RF i straty są do zaakceptowania, multicast jest darmowy; jeśli ktoś jest poza segmentem, w innej sieci albo potrzebuje replayu w trakcie rozłączenia, potrzebujesz serwera — i wszystko, co wymaga ścieżki audytu.

Zamień strumień z czujnika lub systemu C2 na poprawny CoT

Budujemy bramki i adaptery CoT, które zamieniają dane radarów, dronów, czujników akustycznych i starszych systemów C2 na czyste strumienie Cursor on Target, oraz wtyczki ATAK i WinTAK, które prezentują je na obrazie taktycznym.

Zintegruj swój system z TAK → TAKpilot dla CloudTAK →

Przygotowane przez zespół inżynierski Corvus Intelligence, budujący bramki CoT, integracje TAK Server i wtyczki ATAK/WinTAK; każda nazwa elementu, kod typu i zachowanie zweryfikowano względem publicznej dokumentacji schematu CoT MITRE i definicji CoT publikowanych razem z klientami TAK. O Corvus Intelligence →