Векторные тайлы в QuickMapServices: как добавить и как это устроено

Каталог qms.nextgis.com пополнился новым типом сервисов

Векторные тайлы (MVT) в QuickMapServices (QMS)

В каталоге сервисов qms.nextgis.com, который используется модулем QuickMapServices для QGIS, появился новый тип подложек – векторные тайлы.

Если говорить именно о подложках, а не о данных, до сих пор каталог работал с двумя типами источников: TMS отдаёт заранее подготовленные растровые тайлы, а WMS рендерит карту из источника на лету – тоже в виде растра. Но в картографической разработке растёт популярность векторных тайлов: они дают куда больше гибкости в управлении стилями и не теряют чёткость при масштабировании, в отличие от растровых изображений.

Векторные тайлы уже поддерживаются QGIS, а поскольку QuickMapServices – самый используемый модуль для подключения картографических сервисов, ему не хватало только одного: возможности добавлять такие карты через привычный каталог QMS, в пару кликов, как и любой другой сервис. Теперь эта возможность есть – в QMS можно добавить карту, которая описывается не картинками, а JSON-документом стиля в формате Mapbox или MapLibre.

Что нужно, чтобы добавить сервис

Чтобы добавить новый сервис на основе векторных тайлов, достаточно указать ссылку на JSON-документ стиля. Пример:

https://tiles.openfreemap.org/styles/liberty

JSON, кроме описания стилей, ссылается на источники векторных тайлов, шрифты и иконки – всё это подгружается автоматически по адресам, указанным внутри самого документа.

Векторные тайлы (MVT) в QuickMapServices (QMS)

После создания подключения вы можете добавлять созданную вами подложку на векторных тайлах в QGIS.

Векторные тайлы (MVT) в QuickMapServices (QMS)

Теперь можете либо перейти непосредственно к созданию своего сервиса, либо узнать чуть больше о том, как устроен JSON-файл стиля.

Как устроен файл стиля

Если разобраться, что находится внутри такого JSON, дальше станет понятно, откуда берутся данные для карты.

Файл стиля решает две разные задачи.

  1. Источники данных. Блок sources указывает, где искать сами геометрии – тайлы в формате векторных данных (обычно .pbf (иногда встречается .mvt)), отдаваемые по стандартной схеме адресации тайлов – XYZ (иногда её называют ZXY, по фактическому порядку следования параметров в URL: {z}/{x}/{y}). Адрес источника можно задать напрямую готовым шаблоном ссылки, либо сослаться на отдельный TileJSON-документ с актуальным шаблоном и описанием самой схемы данных. 
  2. Оформление. Блок layers описывает, как рисовать то, что лежит в источниках: каким цветом воду, какой толщины линии дорог, какой заливкой здания. Каждый слой оформления ссылается на конкретный источник и конкретный слой внутри него.

Отдельно указываются sprite – набор иконок для точечных объектов (остановки, кафе, другие POI) и glyphs – шрифты для подписей.

Ключевой момент: сам JSON-файл стиля не содержит координат и геометрии объектов. Это описание того, как рисовать карту, а не что на ней нарисовано. Данные всегда приходят из источника, указанного в sources, отдельно от файла стиля.

Откуда берутся данные

Здесь возможны два сценария.

Использовать готовый открытый источник. Пример со стилем liberty выше как раз такой случай – он ссылается на публичный сервис OpenFreeMap, который бесплатно раздаёт векторные тайлы по всему миру на основе данных OpenStreetMap. Чтобы протестировать такой сервис, ничего, кроме самой ссылки на стиль, не требуется – данные уже развёрнуты и обслуживаются сторонним провайдером.

Поднять собственный источник. Если нужны свои данные – например, обработанные и стилизованные специально под задачу, – потребуется отдельный сервер векторных тайлов (например, на основе tileserver-gl или аналогичного ПО), на который затем сошлётся sources в вашем файле стиля. Если вы упаковываете свои тайлы в современный облачно-оптимизированный формат PMTiles, то сервер не требуется – достаточно хостинга, отдающего файлы по HTTPS.

Файл стиля в обоих случаях – это просто статический документ, который нужно где-то разместить. И здесь также подойдёт любой хостинг, отдающий файлы по HTTPS (S3-бакет, GitHub Pages, обычный веб-сервер).

Зачем это нужно

Векторные тайлы дают несколько практических преимуществ по сравнению с растровыми подложками:

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

Добавить и начать использовать новый тип сервисов можно уже сейчас с помощью каталога qms.nextgis.com через модуль QuickMapServices для QGIS.

Несколько подложек доступны по умолчанию во встроенном каталоге.

Векторные тайлы (MVT) в QuickMapServices (QMS)

Комментарии запрещены.