Warstwa mapy pulpitu C2 to nie tylko obraz tła, nad którym pozycjonowane są symbole. To silnik renderowania w czasie rzeczywistym, który musi jednocześnie obsługiwać tysiące dynamicznych obiektów, wiele nakładających się warstw danych i interakcje użytkownika — przesuwanie, powiększanie, zaznaczanie — bez degradacji cyklu aktualizacji utrzymującego aktualność obrazu operacyjnego.
Artykuł porównuje trzy główne technologie renderowania map używane w obronnym tworzeniu C2 — Cesium.js, Mapbox GL JS i niestandardowe serwery kafli — oraz przeprowadza testy wydajności przy liczbach śladów, które mają znaczenie: 1 000, 5 000 i 10 000 jednocześnie poruszających się obiektów.
Wymagania dla warstwy mapy w militarnych systemach C2
Liczba obiektów. Taktyczny system C2 na szczeblu brygady w środowisku wysokiej intensywności śledzi 500–2 000 obiektów. Teatralny system obrony przeciwlotniczej śledzi 5 000–50 000 obiektów. Warstwa renderowania mapy musi utrzymywać akceptowalną liczbę klatek na górnym końcu oczekiwanej liczby obiektów.
Częstotliwość aktualizacji. Ślady powietrzne muszą aktualizować się nie rzadziej niż 1 Hz (jedna aktualizacja pozycji na sekundę na ślad). Ślady naziemne aktualizują się co 10–30 sekund. Przy 1 000 śladach powietrznych aktualizujących się 1 Hz, renderer otrzymuje 1 000 aktualizacji pozycji na sekundę.
Wymóg terenu 3D. Dla naziemnego dowodzenia C2 wystarczy mapa 2D. Dla obrony przeciwlotniczej, zarządzania ogniem artylerii i planowania misji BSP dokładny teren 3D jest wymaganiem operacyjnym. Wymóg ten jest szczególnie istotny w polskich programach modernizacyjnych SZ RP, gdzie systemy przeciwlotnicze wymagają dokładnych danych o ukształtowaniu terenu.
Ograniczenia sieci zamkniętych. Wszystkie dane kartograficzne — zdjęcia satelitarne, dane wysokościowe terenu, obiekty wektorowe — muszą być obsługiwane z wnętrza zamkniętego perymétru sieciowego. Żadne zewnętrzne wywołania CDN lub API nie są dozwolone.
Cesium.js: zalety dla obronnej wizualizacji 3D
Cesium.js to biblioteka JavaScript open-source dla globusów 3D i map 2D, pierwotnie opracowana do wizualizacji misji satelitarnych i kosmicznych, a następnie szeroko przyjęta w zastosowaniach obronnych wymagających dokładnego modelowania Ziemi w 3D.
Tryb globusowy i dokładność elipsoidalna. Cesium renderuje Ziemię jako elipsoidę WGS84, co oznacza, że pozycje obiektów są umieszczane z geodezyjnie dokładną elewacją. Ślad powietrzny na 3 000 metrów jest renderowany 3 000 metrów nad powierzchnią terenu. Dla obrony przeciwlotniczej i dalekodystansowego zarządzania ogniem jest to wymaganie operacyjne.
Wydajność w skali. Cesium Entity API — 60 FPS przy 500 śladach, ~35 FPS przy 2 000 śladach, ~12 FPS przy 5 000 śladach. Cesium Primitive API z instancjonowanym renderowaniem — 60 FPS przy 2 000 śladach, ~45 FPS przy 5 000 śladach, ~28 FPS przy 10 000 śladach.
Mapbox GL JS: kafle wektorowe, niestandardowe stylizowanie, offline MBTiles
Mapbox GL JS to biblioteka JavaScript oparta na WebGL dla interaktywnych map z kaflami wektorowymi. Jest tylko 2D, ale doskonale sprawdza się w taktycznych wyświetlaczach COP dzięki kontroli stylu, zarządzaniu warstwami i możliwościom offline.
Obsługa offline MBTiles. MBTiles to format kontenerowy oparty na SQLite. Kompletny zestaw kafli wektorowych dla obszaru operacyjnego na szczeblu brygady (ok. 50 × 50 km) mieści się w ok. 200–800 MB. Mapbox GL JS z lokalnym serwerem kafli (TileServer-GL lub MapTiler Server) działa bez modyfikacji.
Wydajność w skali. Źródło GeoJSON z warstwą symboli: 60 FPS przy 1 000 śladach, ~42 FPS przy 3 000 śladach, ~18 FPS przy 5 000 śladach. Niestandardowa warstwa WebGL z renderowaniem instancjonowanym: 60 FPS przy 5 000 śladach, ~50 FPS przy 10 000 śladach.
Niestandardowe serwery kafli dla sieci zamkniętych
W programach SZ RP i MON serwer kafli musi być wdrożony w zamkniętej sieci. TileServer-GL to serwer open-source obsługujący kafle kompatybilne z Mapbox GL z plików MBTiles. MapTiler Server Enterprise to komercyjny serwer kafli z ulepszonymi funkcjami dla dużych wdrożeń, w tym kompatybilnością WMS/WMTS dla integracji z systemami GIS używanymi w SZ RP.
Testy wydajności: FPS przy 1 000 / 5 000 / 10 000 poruszających się obiektach
1 000 śladów: Cesium Entity API — 60 FPS. Mapbox GeoJSON — 60 FPS. Wszystkie opcje akceptowalne.
5 000 śladów: Cesium Entity API — 12 FPS (nieakceptowalne). Cesium Primitive API — 45 FPS. Mapbox GeoJSON — 18 FPS (marginalne). Mapbox niestandardowy WebGL — 58 FPS.
10 000 śladów: Cesium Entity API — 4 FPS (nieużyteczne). Cesium Primitive API — 28 FPS. Mapbox niestandardowy WebGL — 48 FPS. Niestandardowy renderer WebGL — 60 FPS.
Przewodnik doboru technologii: Używaj Cesium gdy teren 3D jest wymaganiem operacyjnym (obrona przeciwlotnicza, artyleria, planowanie BSP). Używaj Mapbox GL JS z niestandardową warstwą WebGL gdy 2D jest wystarczające. Używaj niestandardowego renderera WebGL tylko gdy liczba śladów przekracza 20 000.