RU:Векторные тайлы

From OpenStreetMap Wiki
Jump to navigation Jump to search

 Векторные тайлы — способ доставки географических данных небольшими порциями в браузер или другое клиентское приложение. Векторные тайлы похожи на растровые тайлы, но вместо растровых изображений возвращаемые данные являются векторным представлением объектов в тайлах. Затем клиенты должны преобразовать данные в визуальное представление "на лету" (как правило, с помощью отдельной таблицы стилей, которая описывает, как должны выглядеть данные, когда они будут представлены пользователю).

Мотивация

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

  • Настройка: поскольку клиентское приложение отображает данные тайлов, оно может адаптировать отображаемые данные к различным вариантам использования. Например, на карте могут быть более отчётливо видны велосипедные дорожки, если пользователь ищет маршруты для езды на велосипеде, или ночью можно переключиться на версию карты в "тёмном режиме", которая использует те же данные, но с другим оформлением.
  • Плавное масштабирование: приложение может отображать данные в точном размере и разрешении, соответствующих экрану устройства и текущему уровню масштабирования, что означает, что карта всегда выглядит чёткой (без пикселизации).
  • Поворот: пользователь может поворачивать карту, при этом надписи могут оставаться вертикальными, поскольку приложение может перерисовывать их под любым требуемым углом.
  • Интерактивность: приложение может запрашивать данные, хранящиеся на тайлах и предоставлять их пользователю (например, позволяя ему нажимать на карту, чтобы увидеть подробную информацию об объекте, или искать объекты поблизости, без необходимости обращаться к отдельному веб‑сервису).

Векторные тайлы Mapbox

Когда люди говорят "векторные тайлы", они почти всегда имеют в виду тайлы в формате данных, называемом Mapbox Vector Tiles или MVT. Спецификация векторных тайлов Mapbox определяет этот формат файла. Mapbox также предлагает руководство с наглядными материалами, объясняющее, как работает этот формат.

На высоком уровне плитки MVT обеспечивают эффективное двоичное кодирование объектов карты. У объектов есть геометрия (это могут быть точки, линии или полигоны, аналогично GeoJSON), а также могут иметь атрибуты (пары ключ-значение, где ключами являются строки, а значениями — целые числа, числа с плавающей точкой или логические значения). MVT обеспечивает компактное двоичное кодирование этих данных, основанное на двоичном формате сериализации Protobuf. Обратите внимание, что, хотя файл Planet.osm распространяется в формате .osm.pbf, основанном на Protobuf, эти два формата не связаны между собой, за исключением того факта, что они построены поверх одного и того же низкоуровневого формата сериализации.

Как и растровые тайлы, векторные тайлы обычно передаются клиентам по протоколу HTTP. Обычно расширение файла .mvt или .pbf. Рекомендуемый MIME-тип: application/vnd.mapbox-vector-tile.

Отображение на карте (рендеринг)

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

Библиотеки рендеринга

Рендеринг красивых карт из векторных тайлов сложен. Это связано с такими проблемами, как  пересечение,  растеризация и  размещение надписей. Большинство веб‑сайтов и приложений, которые рендерят карты с использованием векторных тайлов, делают это с помощью библиотеки рендеринга, которая обрабатывает эти детали. Вот некоторые доступные возможности:

Моделирование

Моделирование В дополнение к самим плиткам клиенту нужны инструкции, которые определяют, как должны выглядеть различные объекты (какие значки использовать для разных типов объектов, какой толщины должны быть линии для дорог и т.д.). Наиболее широко используемым языком моделирования является спецификация таблицы стилей Mapbox (иногда называемая "спецификация стиля"). Движки рендеринга Mapbox и MapLibre поддерживают этот формат таблицы стилей.

Схемы тайлов

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

Любая данная таблица стилей, как правило, будет работать только в сочетании с тайлами, для которых она была разработана (во многом так же, как таблица стилей CSS, как правило, будет иметь ожидаемый эффект только при применении к HTML‑странице, для которой она была предназначена, а не к странице на другом веб‑сайте).

Несколько компаний и организаций создали стандартизированные схемы тайлов с целью предоставления общего набора картографических данных, которых будет достаточно для создания карт для различных целей. Это позволяет разработчикам веб‑сайтов и приложений настраивать внешний вид карты в соответствии со своими потребностями без необходимости создавать и размещать собственные наборы листов (вместо этого они могут использовать листы, размещенные одной из этих компаний или организаций). К ним относятся:

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

MBTiles и PMTiles

MBTiles и PMTiles — два формата файлов, предназначенные для хранения больших наборов тайлов в одном файле. Оба они способны хранить как растровые (графические), так и векторные фрагменты, и оба поддерживают быстрый произвольный доступ, так что один фрагмент может быть эффективно извлечён по его координатам Z, X и Y без необходимости сканирования всего файла. Многие инструменты, которые создают векторные листы, поддерживают вывод в архивы MBTiles или PMTiles. Это часто удобнее, чем создавать миллионы тайлов в виде отдельных файлов (например, может быть эффективнее загружать результирующий набор тайлов на сервер).

Поставщики

Следующие компании или организации размещают векторные плитки в формате MVT в качестве услуги. Для использования некоторых из них требуется ключ API и/или оплата.

Обратите внимание, что Operations Working Group также работает над размещением векторных тайлов на серверах OSMF. На данный момент (2024 год) планируется использовать Tilekiln.

Генераторы

Следующие программы могут генерировать тайлы MVT из данных OSM:

  • Tilemaker — инструмент командной строки для создания векторных тайлов (MBtiles) непосредственно из файлов .osm.pbf.
  • Planetiler — гибкий инструмент для создания векторных наборов тайлов в масштабе планеты из данных OpenStreetMap за несколько часов (выводится в виде MBTiles (sqlite) или PMTiles).
  • Sequentially-generate-planet-mbtiles — генератор наборов векторных тайлов планетарного масштаба на устройствах с малым объёмом памяти и слабым процессором.
  • OpenMapTiles Tools — создание векторных тайлов из данных OSM.

История

  • 19.01.2016: выпущена спецификация Mapbox Vector Tile Specification 2.1
  • 13.04.2014: выпущена спецификация Mapbox Vector Tile Specification 1.0.0
  • 29.11.2010: TileStache может передавать обрезанные тайлы GeoJSON в Polymaps

Примеры

Вот несколько примеров карт на основе OSM с использованием векторных тайлов:

Смотрите также