Vector Tile native support in QGIS

Crowdfunding Status: Completed

Time Remaining:

Update 2

Success! With your support we have reached the goal for this project.

Update 1

We have successfully reached (even exceeded) our original goal of 8000 euro. There have been several requests from the sponsors to extend the feature so that users can also generate vector tiles in QGIS. We have decided to extend the scope to cover this feature. Therefore, we have updated the new goal to 10500 euro. Note that original goal for native support of reading vector tiles in QGIS will go ahead.

Vector Tiles are becoming an increasingly popular method for delivering styled web maps. It is not surprising - vector tiles bring benefits for both producers and consumers of maps. Producers need much less storage capacity and CPU power to generate vector tiles from raw data (compared to raster tiles) and consumers get high quality maps that can be styled according to the clients needs and with less data to download.

Vector Tiles - Maptiler
Vector Tiles from Maptiler (https://cloud.maptiler.com/)

About Vector Tiles

Traditional raster map tiles have a single square-shaped raster image as the content. In contrast, each vector tile contains map data encoded as a collection of vector features with attributes and geometries - all clipped to the tile extent and simplified to provide just enough detail at their zoom level. Thanks to that, all styling is done at the client side.

QGIS has full support for raster tiles, but so far it is lacking vector tiles support - there is a plugin to handle vector tiles, but there are numerous technical problems with the approach used in the plugin, leading to suboptimal performance and various bugs. The target of this crowdfunding is to have a full featured support for vector tiles built into QGIS core and allow users to use this great piece of technology.

In the early days the uptake of vector tiles was slow because web mapping libraries did not have proper capabilities to handle rendering of vector data into beautiful maps, and doing graphics in browsers was slow. This has changed in the recent years: web mapping libraries have caught up and browsers nowadays support WebGL for fast and efficient rendering of vector graphics. Now it is time for QGIS to also catch up. QGIS already has a powerful rendering engine to draw vector maps, it only needs to understand the specifics of vector tiles.

QGIS and Vector Tiles

The main goal is to have a way to load vector tiles in QGIS just like any other data source: through the browser widget, using drag'n'drop of a file to QGIS or by loading in Data Source Manager window. There are several ways how vector tiles data can be provided:

  • Remote sources (e.g. HTTPS): similar to XYZ tiles, users can define a connection to a remote Vector Tiles server and add it as a layer.
  • Local files: with XYZ template (e.g. {z}/{x}/{y}.pbf)
  • Local database: MBTiles file containing Vector Tiles
We will be initially supporting encoding of vector tiles using Mapbox Vector Tiles standard which is nowadays the most popular encoding. It will be however possible to add other encoding formats if needed.

Styling of Vector Tiles

Initially when vector tiles get loaded, they would have just some basic styling. We will use the power of QGIS rendering engine to render vector tiles.

For styling of vector tiles the most popular format seems to be Mapbox GL style, mainly due to the fact that it provides relatively rich rendering capabilities supported by the JavaScript web map client from Mapbox. We will try to provide seamless import of these existing styles to make it easier for the users.

Detailed Proposal

For more technical information about this feature see our QGIS Enhancement Proposal. You are also welcome to add your feedback there.

As we have tried to limit the scope of the project, we are not going to add tools to generate vector tiles - there are already several open source tools for doing this task. In case, there is interest from the sponsors in creation of vector tiles directly from QGIS, we may add stretch goals to implement this functionality as well.

We would like to implement this functionality in time for QGIS 3.14 which is scheduled to be released in June 2020.

Crowdfunding

By supporting this project, you will have a smooth experience in dealing with Vector Tiles in QGIS.

This project cannot go ahead without your support! We use crowdfunding to raise funds for projects like this one which benefit a wide community of users. The project will only go ahead if sufficient funding can be raised before the project crowdfunding deadline. Please see our main crowdfunding page for more information about our crowdfunding initiative and how it works.

Pledging funds is safe and easy. Simply fill in the pledge form to state how much you want to pledge - pledges only become binding if the funding target is reached before the deadline.