Векторные плитки , мозаичные векторы или векторили [1] представляют собой пакеты географических данных, упакованные в заранее определенные «плитки» примерно квадратной формы для передачи через Интернет. Это новый метод создания стилизованных веб-карт , сочетающий в себе определенные преимущества предварительно обработанных фрагментов растровой карты с данными векторной карты . Как и в случае с широко используемыми растровыми мозаичными веб-картами , данные карты запрашиваются клиентом в виде набора «плиток», соответствующих квадратным участкам земли заранее определенного размера и местоположения. Однако в отличие от растровых мозаичных веб-карт сервер возвращает данные векторной карты, обрезанные по границам каждого тайла, вместо предварительно обработанного изображения карты.
У этого гибридного подхода есть несколько основных преимуществ. По сравнению с векторной картой без плиток, передача данных сокращается [2] , поскольку необходимо передавать только данные в пределах текущего окна просмотра и с текущим уровнем масштабирования. Все операции вырезания ГИС можно выполнить заранее, поскольку границы фрагментов заранее определены. Это, в свою очередь, означает, что мозаичные векторные данные можно упаковывать и распространять без необходимости использования какой-либо ГИС-системы для обслуживания данных.
По сравнению с мозаичной растровой картой передача данных также значительно сокращается, поскольку векторные данные обычно намного меньше визуализированного растрового изображения. Кроме того, стили можно применить позже в процессе или даже в самом браузере, что обеспечивает гораздо большую гибкость представления данных. Также легко обеспечить интерактивность объектов карты, поскольку их векторное представление уже существует в клиенте. [2] Еще одним преимуществом является то, что требуется меньшая вычислительная мощность централизованного сервера, поскольку растеризация может выполняться непосредственно на клиенте. Это было описано как «рендеринг… проблема последней мили, когда быстрые и высококачественные графические процессоры есть у каждого в кармане». [3]
Существует долгая история использования векторных схем листов в ГИС. Самая ранняя ГИС (около 1966 г.), Канадская географическая информационная система (CGIS), использовала схему хранения векторных листов, которая позволяла компьютерам с ограниченными ресурсами эффективно получать доступ и обрабатывать данные векторных карт. [4] В CGIS вместо векторных фрагментов использовался термин «кадр».
В 1975 году Служба дикой природы США инициировала национальную программу по картированию и оцифровке всех водно-болотных угодий США. В 1976 году они заключили с Autometric контракт на разработку программного обеспечения, позволяющего оцифровывать стереоизображения с помощью аналитического стереоплоттера. Позже была добавлена поддержка 2D-оцифровки отдельных фотографий (так называемая резекция одной фотографии) на столе оцифровки. Программное обеспечение называлось WAMS (система аналитического картографирования водно-болотных угодий). В хранилище данных WAMS использовалась мозаичная векторная структура. Каждая плитка называлась «геоединицей». Геоединица соответствовала одному из четырехугольных масштабов Геологической службы США, обычно 1:24000. По мере оцифровки данных они немедленно сохранялись в мозаичном хранилище данных и топологически структурировались. Линии, пересекающие границы геообъектов, автоматически разделялись. Хранилище системы отсчета координат (CRS) составляло WGS 72 широты/долготы. WAMS подробно описана в «Системе аналитического картографирования водно-болотных угодий: WAMS» [Pywell and Niedzwiadek, 1980].
Опираясь на практический опыт, полученный при внедрении и использовании WAMS, а также системы наложения карт и статистики (MOSS), [5] в 1986 году компания Autometric выпустила коммерческую ГИС на базе UNIX, в которой реализована расширенная мозаичная и индексированная структура хранения и доступа: DeltaMap. (позже ГенаМап). Возможности тайловой структуры и схема индексации описаны в документе «DeltaMap: не просто еще одна ГИС». [6] Там, где WAMS реализовала фиксированную систему листов, основанную на четырехугольниках широты и долготы 1:24000, DeltaMap позволяла пользователю определять тайлы любого размера в любой системе координат (CRS). Таким образом, для разреженных данных требовалось всего несколько плиток, тогда как для плотных данных можно было использовать плитки гораздо меньшего размера. В качестве схемы индексации векторных листов использовались R-деревья. Кроме того, в отличие от более ранних реализаций листов, DeltaMap/GenaMap использовала одну и ту же схему листов и индексации для любого типа геопространственных данных, включая 2D и 2,5D векторные и объектные данные, спутниковые изображения, 3D-сетки, такие как DEM, и аннотации. В конце 1980-х годов компания Genasys усовершенствовала GenaMap, чтобы обеспечить «непрерывную и плавную» обработку мозаичных слоев. По сути, с точки зрения конечного пользователя плитки стали невидимыми. Эта возможность работала независимо от того, редактировал ли пользователь, визуализировал, запрашивал или анализировал данные.
По состоянию на начало 2015 года не существует доминирующего стандарта для векторных листов. Подходы могут различаться по формату URL-адресов, формату сериализации данных, упаковке информации о стилях и поддержке проекций, отличных от Web Mercator.
Mapbox определил открытый стандарт для фрагментов векторных карт под названием «vector-tile-spec», который использует буферы протокола Google для экономичной сериализации данных. Web Mercator представляет собой эталонную проекцию, но для представления данных можно использовать векторные плитки с любой схемой проекции и экстента. [7] Он также связан с механизмом рендеринга Mapnik и использует «сериализованную версию внутренних данных, которые использует Mapnik». [8]
В марте 2015 года Esri , ведущий производитель геопространственного программного обеспечения, объявил, что будет поддерживать стандарт векторных листов Mapbox как на серверных, так и на клиентских платформах. [9]
Это был ранний формат, разработанный для средства визуализации Mapnik. [10]
Подход, которому следует TileStache, заключается в разрешении нескольких форматов сериализации данных; по состоянию на начало 2015 года он поддерживает GeoJSON, ArcJSON, GeoBSON, Arc GeoServices BSON, GeoAMF и Arc GeoServices BSON. Запрошенный формат указан в URL-адресе (например, http://example.com/tiles/mylayer/2/1/3.json
)
Векторные плитки используются в клиенте Google Maps для Android с декабря 2010 года [11] и в клиенте для настольных компьютеров с 2013 года. [12] Векторные плитки для рендеринга данных OpenStreetMap были впервые предложены в марте 2013 года [1] и поддерживаются Mapnik, [ 13] наиболее широко используемый рендерер данных OpenStreetMap. Mapbox , коммерческий поставщик пользовательских картографических инструментов и хостинга, сосредоточил свой картографический инструмент Mapbox Studio на векторных листах. [14]
Популярный и очень мощный Android-клиент для данных OpenStreetMap, osmAnd, поддерживает векторные тайлы, которые он называет «векторными картами». [15]
Конвейер тайлового сервера TileStache изначально поддерживает несколько разновидностей JSON. [16] Существует также плагин-провайдер векторных тайлов под названием VecTiles [17] , который преобразует данные PostGIS в векторные тайлы в формате Mapnik Vector Tile (несовместимом со спецификацией Mapbox [18] ) или TopoJSON .
PGRestAPI (также известный как пространственный сервер Chubbs) — это автономный сервер NodeJS, который также может генерировать векторные листы «на лету» из источника данных PostGIS, а также обслуживать предварительно созданные векторные листы из таких источников, как Mapbox Studio. [19]
pg_tileserv — это тайловый сервер с открытым исходным кодом, предназначенный только для PostGIS, написанный на Golang , который принимает HTTP-запросы и форму тайлов и выполняет SQL . [20]
В ESRI ArcGIS Server 10.4 [21] и ArcGIS Pro 1.2 [22] , выпущенных в феврале 2016 г., добавлена поддержка векторных листов.
Библиотека Leaflet JavaScript напрямую не поддерживает векторные плитки, но существует сторонний плагин для векторных плиток: Leaflet.MapboxVectorTile для Leaflet 0.7.x [23] и Leaflet.VectorGrid для Leaflet 1.0.x. [24]
Можно использовать собственную библиотеку JavaScript Mapbox — Mapbox GL JS. [25]
OpenLayers поддерживает векторные тайлы через объект ol.source.VectorTile [26] , начиная с версии 3.