При визуализации геопространственных данных часто используется картографическая подложка в виде Яндекс/Google/OSM/etc, которая в основном бывает двух видов - векторная или растровая. Однако, когда дело доходит до интеграции карт в свое приложение, то не всегда очевидно какой тип больше подойдет. В этом посте мы рассмотрим основные различия между этими двумя типами и обсудим, когда следует использовать одно или другое. Растровые данные, как правило, представляют из себя набор квадратных и равномерно расположенных растровых картинок (тайлов) формата PNG/JPEG. Представьте, что весь мир это поле, поделенное на множество квадратов, где каждый квадрат имеет значение X/Y/Z (долгота/широта/уровень зума). Примечание: здесь рассмотрен открытый стандарт векторных тайлов MVT. Большинство крупных коммерческих провайдеров картографии используют свои проприетарные (закрытые) форматы тайлов, но обычно они тоже векторные. В случае с векторными данными все чуть сложнее. Вместо картинки каждый тайл содержит в себе различную геометрию (дорог/домов/границ и т.д.), которая привязана не к географическим координатам, а строго к векторным X/Y. Геометрия представлена в виде следующих типов фигур: Точки - одна вершина, например, POI. Линии - две или более вершин, при этом первая и последняя вершины не равны между собой. Например, дорога. Полигоны - три или более вершин, при этом последняя вершина равна первой. Например, геометрия дома. Далее уже сам клиент (библиотека, занимающаяся отрисовкой карты) выполняет конвертацию векторных координат в географические и наоборот.  Стоит отметить, что сами тайлы содержат только информацию о геометрии, сгруппированную в слои. То есть у каждой геометрии есть текстовое поле "layer", в котором содержится имя слоя. Геометрия дорожной сети попадает в слой "roads", зданий - в "buildings" и так далее. Данная группировка по слоям не только упрощает использование информации, но и делает возможность в дальнейшем по-разному визуализировать каждый слой. Важный момент: в векторном тайле обычно отсутствует информация о внешнем виде (цвета, тип заливки, текстура и т.д.), только сами данные. Внешний вид уже регулируется через стиль карты. Стиль обычно представляет из себя большой JSON-документ с полным описанием того, какие слои как отображать, откуда брать сами тайлы (URL-адреса), тип проекции и прочая различная информация. Ниже пример описания слоя со зданиями:{　　"id": "building",　　"type": "fill",　　"source": "starlinemaps",　　"source-layer": "building",　　"minzoom": 15,　　"layout": {"visibility": "visible"},　　"paint": {　　　　"fill-outline-color": "#d5d0cb",　　　　"fill-color": "hsl(0, 0%, 93%)",　　　　"fill-opacity": {　　　　　　"base": 1,　　　　　　"stops": [[15.5, 0], [16, 0.9]]　　　　}　　} } У нас в компании мы почти не используем растровые тайлы, исключение - спутниковые изображения и данные аэросъёмок. Ниже попробую собрать плюсы и минусы, которые, возможно, помогут в выборе подходящего формата. Тип 👍 Плюсы 👎 Минусы Растровые тайлы отрисовка на клиенте  быстрее, потому что не нужно рассчитывать стили и геометрию датасет тайлов для всей планеты будет очень большим, в сравнении с векторным  некоторые типы данных (например, изменение водных поверхностей) оптимально рисовать только растром отсутствие гибкости и интерактивности (тайлы нельзя перекрашивать/менять на лету)  формат поддерживают всё старое железо и софт генерация растровых тайлов занимает больше времени Векторные тайлы отличная гибкость и настраивамость любого элемента требуется библиотека/SDK с поддержкой MVT  быстрая конвертация из PostGIS или других источников более высокий порог входа, из-за необходимости изучения документации к MVT и спецификации стилей  улучшенная точность гео-данных на "медленном" железе могут быть проблемы с производительностью отрисовки По состоянию на 2023 все основные библиотеки (Leaflet, MapLibre и OpenLayers) поддерживают оба типа данных. Однако, на нашем опыте векторный формат показал себя как более удобный и гибкий формат для отображения любого количество геоданных. Стоило бы также рассказать об открытых и закрытых источниках геоданных, но это, кажется, тема уже для отдельной статьи.  команда StarLine Maps