Тактичний польовий застосунок живе або вмирає залежно від своєї базової карти. Коли солдат із телефоном у руках перебуває в долині без стільникового сигналу, без супутникового зворотного каналу і з акумулятором, який має витримати всю місію, карта вже має бути на пристрої — кожен тайл, кожна горизонталь, кожна дорога, упаковані у файл, завантажений ще до того, як оператор покинув розташування. Питання про те, який формат контейнера зберігає цю карту, не є косметичним. Воно визначає бюджети сховища, продуктивність рендерингу, потрібний вашому конвеєру інструментарій і те, чи дані потраплять прямо в ATAK, чи потребуватимуть кроку конвертації в полі. Це інженерне порівняння трьох форматів, які мають значення: GeoPackage, MBTiles і PMTiles.
1. проблема офлайн-базової карти
Визначальним обмеженням польового застосунку є відсутність зворотного каналу. Немає тайлового сервера, до якого можна звернутися, немає CDN, немає живого API. Усе, що рендерер коли-небудь намалює, має бути присутнім у локальному сховищі, перш ніж пристрій залишиться без зв'язку. Це перетворює доставку карт на задачу пакування: вам потрібен єдиний, копійований, перевірюваний артефакт, який містить карткові дані цілого регіону і який мобільний рендерер може швидко запитувати з флеш-сховища.
Сховище обмежене й оспорюване. Захищений кінцевий Android-пристрій може виділити 16–64 ГБ під дані місії, що розподіляються між знімками, рельєфом, кліпами повноекранного відео й базовою картою. Растрова базова карта масштабу театру воєнних дій на придатних рівнях зуму може сама по собі сягати десятків гігабайтів. Тож формат контейнера — це не просто обгортка: його поведінка при стисненні, структура тайлової піраміди й вартість запитів безпосередньо визначають, скільки карти ви можете нести і як швидко вона промальовується.
2. MBTiles — тайловий контейнер SQLite
MBTiles — це формат, який зробив офлайн-картографію звичайною справою. По суті, це база даних SQLite з узгодженою схемою: таблиця tiles з ключами за рівнем зуму, стовпцем і рядком, плюс таблиця metadata з парами ім'я/значення, що описують межі, мін/макс зум, формат і атрибуцію. Геніальність — у простоті: будь-яка платформа з бібліотекою SQLite (а це кожна мобільна платформа) може відкрити й запитати її без спеціального драйвера.
MBTiles містить або растрові тайли (PNG, JPEG, WebP), або векторні тайли (Mapbox Vector Tiles, стиснений gzip protobuf). Растровий MBTiles — це те, що насправді використовувала більшість польових операторів: попередньо відрендерені знімки або відскановані топографічні аркуші, нарізані у стандартну тайлову піраміду Web Mercator і запхані в базу даних. Поле format таблиці metadata повідомляє клієнту, чого очікувати — png чи pbf, а конвенція нумерації рядків TMS (перевернута по y відносно XYZ) — це той одна стійка пастка, яка одного разу кусає кожного нового імплементатора.
Його повсюдність — головний заголовок. MBTiles — це фактичний стандарт із десятиліттям інструментарію за плечима, і він є lingua franca відкритої екосистеми офлайн-картографії. Якщо вам треба обрати формат, який щось нижче за течією точно зрозуміє, MBTiles — безпечна ставка.
3. PMTiles — одинофайловий формат, оптимізований для хмари
PMTiles, створений Брендоном Лю, розв'язує проблему, яку MBTiles не може: подачу тайлів безпосередньо зі статичного сховища без процесу бази даних. Архів PMTiles — це єдиний файл із компактним каталогом спереду й даними тайлів позаду, викладеними так, щоб клієнт міг отримати будь-який окремий тайл за допомогою HTTP range-запиту. Покладіть файл у звичайне об'єктне сховище чи на флеш-карту — і клієнт один раз прочитає каталог, а потім байт-діапазонними запитами завантажить лише потрібні йому тайли — без тайлового сервера, без процесу SQLite, без розпакування.
Для польового застосунку це дає два окремі виграші. У підключеній мережі підготовки архів PMTiles у статичному бакеті замінює цілий стек тайлового сервера, що на одну річ менше розгортати й акредитувати. На пристрої та сама одинофайлова структура «лише додавання» чисто копіюється й контрольується контрольними сумами та дружня до читань у стилі mmap. Кластеризований каталог формату тримає індекс малим навіть для архівів планетарного масштабу, тож пошук на тайл лишається дешевим. Компроміси навколо офлайн-карт MBTiles і PMTiles зводяться до того, чи ваш рендерер нативно розмовляє патерном доступу через range-запити, чи очікує дескриптора SQLite.
Ключова думка: MBTiles, PMTiles і тайловий GeoPackage всі кодують ту саму тайлову піраміду Web Mercator — ті самі байти PNG чи векторних тайлів. Війна форматів — не про тайли; вона про індекс перед ними. Обирайте індекс, який відповідає тому, як ваш рендерер читає сховище: запит SQLite, HTTP range чи OGC-доступ до об'єктів. Пікселі ідентичні.
4. GeoPackage — стандарт OGC
GeoPackage (GPKG) — єдиний із трьох, що є формальним відкритим стандартом, опублікованим Open Geospatial Consortium і прийнятим як контейнер, релевантний для Національного агентства геопросторової розвідки США та НАТО. Як і MBTiles, він побудований на SQLite, але набагато амбітніший: один файл GeoPackage може містити растрові тайлові піраміди, векторні таблиці об'єктів із повною геометрією та атрибутами, просторові індекси (R-tree) і метадані, що описують усе це. Один файл може бути одночасно вашою базовою картою й вашим векторним накладанням — треками дружніх сил, контрольними мірами, іменованими районами інтересу — в одній запитуваній, редагованій базі даних.
Ця широта — причина, чому GeoPackage домінує у формальному світі оборонної геопросторовості. Коли геопросторовий осередок відправляє пакет даних місії, GeoPackage дозволяє тайлам знімків і атрибутованим об'єктним даним подорожувати разом в одному підзвітному артефакті з документованою схемою, яку приймальна система контрактно зобов'язана читати. Ціна в тому, що GeoPackage важче виробляти і що його повна об'єктна модель — це більше, ніж потрібно чистій базовій карті: ви несете стандарт, побудований для редагованих ГІС-даних, а не просто кеш тайлів.
5. компроміси розміру й продуктивності
Вибір формату змінює розмір файлу менше, ніж люди очікують, бо домінуюча вартість — це байти тайлів, а вони здебільшого однакові в усіх контейнерах. Справжні важелі вищі за течією: формат тайлів (WebP перевершує PNG на 25–35% за рівної якості), відсічення рівня зуму і те, чи подаєте ви вектор, чи растр.
Векторні тайли — це великий виграш. Растрова базова карта країни на зумі 0–16 може займати 20–40 ГБ; еквівалентний набір векторних тайлів, де геометрія кодується один раз і стилізується під час рендерингу, зазвичай вкладається в 1–3 ГБ за того самого покриття. Вектор також дозволяє пристрою перестилізовувати на льоту — денні/нічні палітри, перемикачі шарів під конкретну місію — без перерендерингу тайлів. Ціна — це GPU й CPU під час малювання: пристрій збирає картинку покадрово замість того, щоб блитити попередньо запечене зображення, а це саме той вид бюджету рендерингу карт у реальному часі, який доводиться профілювати на справжньому цільовому обладнанні, а не на ноутбуці розробника.
За вартістю запитів усі три на практиці близькі. MBTiles і GeoPackage на базі SQLite розв'язують тайл індексованим пошуком за первинним ключем — мікросекунди з теплого кешу. PMTiles розв'язує через внутрішньофайловий каталог, що становить одне чи два читання, теж незначних, щойно кореневий каталог закешовано. Жодне з цього не є вузьким місцем; ним є I/O сховища й декодування/рендеринг. Чесний інженерний висновок: обирайте формат за відповідністю інструментарію й інтеграції, а потім витрачайте зусилля на продуктивність на формат тайлів, бюджет зуму й рендерер.
6. підтримка ATAK/TAK і польових застосунків
Для екосистеми TAK відповідь конкретна. ATAK нативно читає MBTiles і GeoPackage як джерела базової карти — покладіть файл у потрібний каталог чи імпортуйте його через менеджер пакетів, і він з'явиться як вибираний шар карти. Растровий MBTiles — найбільш перевірений у бою шлях і той, до якого тягнеться більшість операторів. GeoPackage — правильний вибір, коли вам потрібні знімки й атрибутовані векторні об'єкти в одному імпортованому пакеті місії, що є стандартним способом, яким формальні дані-продукти доходять до клієнта.
PMTiles — новіший прибулець. Його дедалі більше підтримують через плагіни й у сучасних клієнтах на основі MapLibre, але він ще не є типовим нативним імпортом базової карти в кожній збірці TAK, тож перевірте конкретну версію клієнта, перш ніж стандартизувати його для розгорнутої програми. Прагматичний робочий процес, який запускає багато команд: авторити й зберігати в PMTiles заради його переваг подачі з одного файлу, а потім експортувати в MBTiles чи GeoPackage для фінального пакета пристрою, коли цього вимагає цільовий клієнт.
7. інструментарій
Конвеєр конвертації — це там, де насправді йдуть інженерні години. Для векторних тайлів tippecanoe — спочатку від Mapbox, тепер підтримуваний Felt — це робоча конячка: він перетворює GeoJSON чи інші векторні джерела на оптимізований набір векторних тайлів MBTiles чи PMTiles, обробляючи відкидання об'єктів, об'єднання й генералізацію за рівнями зуму, щоб щільні дані лишалися рендерованими на низькому зумі. Це найважливіший окремий інструмент у конвеєрі офлайн-вектора.
Для всього іншого GDAL — це універсальний адаптер. Його растрові й векторні утиліти конвертують між форматами, будують тайлові піраміди й читають чи пишуть GeoPackage, MBTiles і (у поточних випусках) PMTiles. ogr2ogr переносить векторні об'єкти в об'єктні таблиці GeoPackage; gdal_translate і gdaladdo будують растрові тайлові піраміди GeoPackage; gdal2tiles нарізає знімки у стандартну піраміду. Типовий продакшн-конвеєр зчіплює джерельні дані → GDAL чи tippecanoe → контейнер → перевірку цілісності → пакет даних місії, заскриптований і відтворюваний так, щоб той самий регіон перебудовувався байт у байт. Інструмент командного рядка PMTiles завершує його, конвертуючи MBTiles у PMTiles й інспектуючи каталоги архівів.
8. вибір для польового застосунку
Рішення зводиться до трьох питань. Перше: растр чи вектор? Якщо ви можете авторити й стилізувати векторні тайли від початку до кінця — робіть це: 10-кратне зменшення розміру й перестилізація на пристрої є вирішальними для пристроїв з обмеженим сховищем. Відступайте до растру лише тоді, коли джерело — це знімки чи відскановані аркуші, що не мають векторного еквівалента.
Друге: подача з одного файлу чи багатство об'єктів? Якщо вам потрібні знімки плюс атрибутовані, редаговані векторні об'єкти в одному підзвітному артефакті — формальний випадок пакета даних місії — GeoPackage є відповіддю, і його статус стандарту OGC — це те, що робить його прийнятним у межах коаліції. Якщо ви відправляєте чисту базову карту й хочете найлегшу історію подачі, перемагає одинофайлова безсерверна модель PMTiles.
Третє: що клієнт читає сьогодні? Для програм TAK, які розгортаються зараз, растровий чи векторний MBTiles для базової карти й GeoPackage для комбінованих пакетів «знімки плюс об'єкти» — це прагматичний типовий вибір: обидва імпортуються нативно, обидва перевірені в бою. Приймайте PMTiles там, де ваш рендерер уже розмовляє range-запитами і ви контролюєте версію клієнта. Що б ви не обрали, тримайте формат поза вашим основним доменом: зберігайте канонічні картографічні дані один раз і ставтеся до MBTiles, PMTiles і GeoPackage як до взаємозамінних цілей експорту з одного відтворюваного конвеєра. Контейнер — це рішення про пакування, а не архітектура, у якій ви маєте бути замкнені.