Одна карта — один файл

Папка XYZ удобна как промежуточный результат, но неудобна пользователю: её трудно копировать, проверять и удалять целиком, а большое число мелких файлов создаёт лишнюю нагрузку на файловую систему. PMTiles хранит тайлы, индекс и метаданные в одном переносимом архиве. Такой файл можно положить в личную библиотеку, проверить по контрольной сумме, скачать и открыть локально.

На Android MapLibre читает из архива только нужные участки и масштабы. Веб-сервис использует тот же результат: готовая карта не требует отдельного тайлового сервера и не распаковывается на диске устройства.

Подходит и для офлайна, и для передачи по сети

PMTiles рассчитан на произвольный доступ к данным. Телефону или браузеру не обязательно получать весь архив, чтобы прочитать его заголовок, метаданные или конкретные тайлы. На сервере это сочетается с Range-запросами: прерванную загрузку можно продолжить, не начиная большой файл заново.

Внутри одного формата могут жить растровые исторические листы и векторные регионы OSM. Это не делает их одинаковыми по содержанию, зато упрощает каталог, хранение, проверку доступа и клиентский код THS2.

Почему не оставить исходный формат

MBTiles тоже хранит карту в одном файле и остаётся отличным промежуточным форматом для конвертации. Но это база SQLite, тогда как PMTiles специально устроен как архив для публикации и чтения по диапазонам байтов. GeoTIFF и KMZ удобны как исходники с геопривязкой, а ZIP с XYZ/TMS — как способ перенести готовую пирамиду тайлов. В THS2 они проходят через адаптеры и на выходе становятся одинаково управляемыми PMTiles.

У выбора есть цена: PMTiles не является редактором и обычно пересобирается при изменении содержимого. Поэтому THS2 сохраняет понятный конвейер: принять и безопасно проверить исходник, при необходимости построить MBTiles, преобразовать в PMTiles, проверить итог и только после этого добавить карту в библиотеку.

  • один файл вместо дерева тайлов
  • растровые и векторные карты в общем контейнере
  • локальное чтение без встроенного веб-сервера
  • Range-запросы и возобновляемое скачивание
  • метаданные и границы рядом с тайлами