The Mapbox Vector Tile specification provides these definition for projection and bounds.
A Vector Tile represents data based on a square extent within a projection. A Vector Tile SHOULD NOT contain information about its bounds and projection. The file format assumes that the decoder knows the bounds and projection of a Vector Tile before decoding it.
Web Mercator 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 MAY be used to represent data with any projection and tile extent scheme.
It is possible to encode and write vector tiles in different CRS than EPSG:3857.
The implementation used the CRS bounds to defined the tile 0 top left coordinates and the scale denominator for 0 zoom level.
Instead of ALWAYS converting all features in a tile to QGIS representations,
now we intelligently skip over any layers which aren't required for
rendering or labeling (e.g. because the current renderer/labeling
configuration is disabling these layers or doesn't have a rule for
them).
This improves rendering speed with sources like the OS ZoomStack tiles,
which have a LOT of detail even at small map scales (e.g. building
data is present in very zoomed out tiles!!).
and set the default style and labels for the layer
Also populate the layer metadata with the available content from the
service definition (e.g. layer attribution)
The issue was that renderer/labeling were only keeping "their" required fields,
but the final fields may have been extended by the other, making the field indices
cached in expressions invalid.
The fix is to keep the final QgsFields around and avoid creating those QgsFields on-the-fly
from previously requested fields.
This adds a new tab in the layer styling dock widget for vector tile layers.
The new QgsVectorTileBasicLabelingWidget class is based on the code used for QgsVectorTileBasicRendererWidget
- filtering of input layers by expressions and min/max zoom level
- custom layer names in the output
- writing of custom metadata for MBTiles output
- auto-calculate output extent (instead of defaulting to the whole world's extent)
- passing transform context to the encoder