Vector Tiles
See also Workshop Vector Tiles GEOSummit 2016, OpenMapTiles.
Vector tiles are roughly-square shaped "tiles" containing vector geometries and metadata – like road names, place names, house numbers – in a compact, structured format. Web Mercator (CRS EPSG:3857) is the projection of reference, and the Google tile scheme is the tile extent convention of reference. Together, they provide a 1-to-1 relationship between a specific geographical area, at a specific level of detail, and a path such as https://example.com/17/65535/43602.mvt
Vector tiles are typically preprocessed for a certain purpose and for several zoom levels (typically 1 to 14). Preprocessing means that expensive filtering (database queries), vector geometry clipping and cartographic generalization operations are performed in advance.
Vector tiles are rendered by either a client, like a web browser (Mapbox GL JS), a mobile app (Mapbox iOS SDK, Mapbox Android SDK), or a desktop GIS (Vector Tiles Reader QGIS Plugin). They can also be rendered on the fly on a server and delivered as common raster image tiles (WMTS).
Vector tiles have some advantages over fully rendered raster image tiles:
- Styling: As vectors, tiles can be styled when requested and on-the-fly, allowing for many map styles on global data
- Size: Vector tiles are small, enabling global high resolution maps, fast map loads
- Caching: As with raster tiles, the tiling allows efficient caching
- Decentralization: Rendering takes place in distributed (GPU) processors.
On the other hand, it's important to note that vector tiles are rather specific vector data targeted to visualization and thus not comparable to generic geospatial (vector) data formats.
More info
- Great video explaining vector tiles by Sam Mathews, Mapbox: https://www.youtube.com/watch?v=wN2-ms2PwBs
- Vector tiles on Wikipedia: https://en.wikipedia.org/wiki/Vector_tiles Wikipedia
- Mapbox Vector Tiles: https://www.mapbox.com/developers/vector-tiles/
- Vector tiles specification: See https://www.mapbox.com/vector-tiles/specification/ and https://github.com/mapbox/vector-tile-spec
Miscellaneous:
- The MBTiles is an efficient format for storing millions of vector tiles in a single SQLite database file.
- Understanding Esri Vector Basemap File Structure: https://blogs.esri.com/esri/arcgis/2015/12/02/understanding-esri-vector-basemap-file-structure/
Vector Tiles Providers
- MapBox Map Styles
- MapZen Vector Tiles
- OpenMapTiles.org (formerly OSM2VectorTiles) by Klokan Technologies and Geometa Lab
Tools
Vector Tiles Readers/Clients we know:
- Leaflet with MapBox GL extension
- OpenLayers 3
- Syling editor and inspector: http://maputnik.com/editor/#14.99/47.2253/8.8160
- Plugin for Mapbox GL JS to view the view ans inspect VT features: https://github.com/lukasmartinelli/mapbox-gl-inspect
- MapTiler
- Vector Tiles Reader QGIS Plugin
Vector Tiles Generators/Servers:
- t-rex - MVT server. Serves tiles from PostGIS supporting custom tile grids. single executable written in Rust by Pirmin Kalberer, Sourcepole. https://github.com/pka/t-rex/
- Tileserver - A lightweight tileserver to share code paths with tilequeue for tile generation. Written in a single Python file by Ian Dees. https://github.com/tilezen/tileserver
- Tiler - Command line tool for converting GeoJSON, Shapefiles or PostGIS layer to raw Vector Tiles (or MBTiles). Written in Python (avail. as Docker container) by Geovation. https://github.com/Geovation/tiler
- tippecanoe - Build vector tilesets from large collections of GeoJSON features. Written in CPP (OSX only?) by Mapbox. https://github.com/mapbox/tippecanoe
- GeoServer for creating Vector Tiles in GeoJSON, TopoJSON, and MapBox Vector Tiles format for all the vector data formats it supports. https://github.com/geoserver/geoserver/tree/master/src/community/vectortiles
- ArcGIS Pro
For software around vector tiles see https://github.com/mapbox/awesome-vector-tiles
Miscellaneous:
- Raw vector tiles (MVT) to download as MBTiles with daily update: https://osmlab.github.io/osm-qa-tiles/
- Inspect MVTs directly: https://github.com/lukasmartinelli/mapbox-gl-inspect
- Mapbox GeoJSON/TopoJSON Viewer: http://mapbox.github.io/geojson-vt/debug/
Discussion
Advantages:
- Vector tiles gives performance gain for production (without database) but makes it harder to get "right" structure for specific use case on client side
- Vector tiles allows 3D view / tilt map view on client
- Vector tiles allow labels that may be moved into bbox and oriented
Potentially controversial points:
- Vector tiles implies high coupling of server and client (vs. low coupling of raster tiles/WMS/WMTS)
- Vector tiles implies a complex and resource demanding infrastructure.
- Vector tiles rendered in browser (using Mapbox GL or others) means yet another new styling language (different and diverting from CartoCSS, Mapnik, SLD/SE, GIS), initially more limited - unless reconstructed (like with Vector Tiles Reader QGIS Plugin)