QGIS API Documentation  3.25.0-Master (349eb7cb1e)
qgsvectortilemvtencoder.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsvectortilemvtencoder.h
3  --------------------------------------
4  Date : April 2020
5  Copyright : (C) 2020 by Martin Dobias
6  Email : wonder dot sk at gmail dot com
7  ***************************************************************************
8  * *
9  * This program is free software; you can redistribute it and/or modify *
10  * it under the terms of the GNU General Public License as published by *
11  * the Free Software Foundation; either version 2 of the License, or *
12  * (at your option) any later version. *
13  * *
14  ***************************************************************************/
15 
16 #ifndef QGSVECTORTILEMVTENCODER_H
17 #define QGSVECTORTILEMVTENCODER_H
18 
19 #define SIP_NO_FILE
20 
21 #include "qgstiles.h"
22 #include "qgsvectortilerenderer.h"
23 #include "vector_tile.pb.h"
24 #include "qgscoordinatetransform.h"
25 
40 class CORE_EXPORT QgsVectorTileMVTEncoder
41 {
42  public:
44  explicit QgsVectorTileMVTEncoder( QgsTileXYZ tileID );
45 
47  explicit QgsVectorTileMVTEncoder( QgsTileXYZ tileID, const QgsTileMatrix &tileMatrix );
48 
50  int resolution() const { return mResolution; }
52  void setResolution( int extent ) { mResolution = extent; }
53 
55  int tileBuffer() const { return mBuffer; }
57  void setTileBuffer( int buffer ) { mBuffer = buffer; }
58 
60  void setTransformContext( const QgsCoordinateTransformContext &transformContext ) { mTransformContext = transformContext; }
61 
67  void addLayer( QgsVectorLayer *layer, QgsFeedback *feedback = nullptr, QString filterExpression = QString(), QString layerName = QString() );
68 
70  QByteArray encode() const;
71 
72  private:
73  void addFeature( vector_tile::Tile_Layer *tileLayer, const QgsFeature &f );
74 
75  private:
76  QgsTileXYZ mTileID;
77  int mResolution = 4096;
78  int mBuffer = 256;
79  QgsCoordinateTransformContext mTransformContext;
80 
81  QgsRectangle mTileExtent;
83 
84  QgsVectorTileFeatures mFeatures;
85 
86  vector_tile::Tile tile;
87 
88  QMap<QVariant, int> mKnownValues;
89 
90 };
91 
92 #endif // QGSVECTORTILEMVTENCODER_H
This class represents a coordinate reference system (CRS).
Contains information about the context in which a coordinate transform is executed.
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
Definition: qgsfeature.h:56
Base class for feedback objects to be used for cancellation of something running in a worker thread.
Definition: qgsfeedback.h:45
A rectangle specified with double values.
Definition: qgsrectangle.h:42
Defines a matrix of tiles for a single zoom level: it is defined by its size (width *.
Definition: qgstiles.h:108
Stores coordinates of a tile in a tile matrix set.
Definition: qgstiles.h:38
Represents a vector layer which manages a vector based data sets.
Handles conversion of vector features to Mapbox vector tiles encoding.
int resolution() const
Returns resolution of coordinates of geometries within the tile. The default is 4096.
void setTileBuffer(int buffer)
Sets size of the buffer zone around tile edges in integer tile coordinates.
int tileBuffer() const
Returns size of the buffer zone around tile edges in integer tile coordinates. The default is 256 (~6...
void setResolution(int extent)
Sets the resolution of coordinates of geometries within the tile.
void setTransformContext(const QgsCoordinateTransformContext &transformContext)
Sets coordinate transform context for transforms between layers and tile matrix CRS.
QMap< QString, QVector< QgsFeature > > QgsVectorTileFeatures
Features of a vector tile, grouped by sub-layer names (key of the map)