QGIS API Documentation  3.20.0-Odense (decaadbb31)
qgsvectortilerenderer.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsvectortilerenderer.h
3  --------------------------------------
4  Date : March 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 QGSVECTORTILERENDERER_H
17 #define QGSVECTORTILERENDERER_H
18 
19 #include "qgis_core.h"
20 
21 #include "qgsfeature.h"
22 
23 #include "qgstiles.h"
24 
25 class QgsRenderContext;
26 
28 typedef QMap<QString, QVector<QgsFeature> > QgsVectorTileFeatures SIP_SKIP;
29 
37 class CORE_EXPORT QgsVectorTileRendererData
38 {
39  public:
41  explicit QgsVectorTileRendererData( QgsTileXYZ id ): mId( id ) {}
42 
44  QgsTileXYZ id() const { return mId; }
45 
47  void setTilePolygon( QPolygon polygon ) { mTilePolygon = polygon; }
49  QPolygon tilePolygon() const { return mTilePolygon; }
50 
52  void setFields( const QMap<QString, QgsFields> &fields ) { mFields = fields; }
54  QMap<QString, QgsFields> fields() const { return mFields; }
55 
57  void setFeatures( const QgsVectorTileFeatures &features ) SIP_SKIP { mFeatures = features; }
59  QgsVectorTileFeatures features() const SIP_SKIP { return mFeatures; }
61  QStringList layers() const { return mFeatures.keys(); }
63  QVector<QgsFeature> layerFeatures( const QString &layerName ) const { return mFeatures[layerName]; }
64 
65  private:
67  QgsTileXYZ mId;
69  QMap<QString, QgsFields> mFields;
71  QgsVectorTileFeatures mFeatures;
73  QPolygon mTilePolygon;
74 };
75 
88 class CORE_EXPORT QgsVectorTileRenderer
89 {
90 
91 #ifdef SIP_RUN
93 
94  const QString type = sipCpp->type();
95 
96  if ( type == QLatin1String( "basic" ) )
97  sipType = sipType_QgsVectorTileBasicRenderer;
98  else
99  sipType = 0;
100  SIP_END
101 #endif
102 
103  public:
104  virtual ~QgsVectorTileRenderer() = default;
105 
107  virtual QString type() const = 0;
108 
111 
113  virtual void startRender( QgsRenderContext &context, int tileZoom, const QgsTileRange &tileRange ) = 0;
114 
116  virtual QMap<QString, QSet<QString> > usedAttributes( const QgsRenderContext & ) SIP_SKIP { return QMap<QString, QSet<QString> >(); }
117 
118  //TODO QGIS 4.0 -- make pure virtual
119 
129  virtual QSet< QString > requiredLayers( QgsRenderContext &context, int tileZoom ) const { Q_UNUSED( context ); Q_UNUSED( tileZoom ); return QSet< QString >() << QString(); }
130 
132  virtual void stopRender( QgsRenderContext &context ) = 0;
133 
135  virtual void renderTile( const QgsVectorTileRendererData &tile, QgsRenderContext &context ) = 0;
136 
138  virtual void writeXml( QDomElement &elem, const QgsReadWriteContext &context ) const = 0;
140  virtual void readXml( const QDomElement &elem, const QgsReadWriteContext &context ) = 0;
142  virtual void resolveReferences( const QgsProject &project ) { Q_UNUSED( project ) }
143 
144 };
145 
146 #endif // QGSVECTORTILERENDERER_H
Encapsulates a QGIS project, including sets of map layers and their styles, layouts,...
Definition: qgsproject.h:99
The class is used as a container of context for various read/write operations on other objects.
Contains information about the context of a rendering operation.
Range of tiles in a tile matrix to be rendered.
Definition: qgstiles.h:66
Stores coordinates of a tile in a tile matrix set.
Definition: qgstiles.h:33
Contains decoded features of a single vector tile and any other data necessary for rendering of it.
void setFields(const QMap< QString, QgsFields > &fields)
Sets per-layer fields.
QPolygon tilePolygon() const
Returns polygon (made out of four corners of the tile) in screen coordinates calculated from render c...
QgsVectorTileRendererData(QgsTileXYZ id)
Constructs the object.
void setTilePolygon(QPolygon polygon)
Sets polygon of the tile.
QVector< QgsFeature > layerFeatures(const QString &layerName) const
Returns list of all features within a single sub-layer.
QgsVectorTileFeatures features() const
Returns features of the tile grouped by sub-layer names.
QStringList layers() const
Returns list of layer names present in the tile.
void setFeatures(const QgsVectorTileFeatures &features)
Sets features of the tile.
QMap< QString, QgsFields > fields() const
Returns per-layer fields.
QgsTileXYZ id() const
Returns coordinates of the tile.
Abstract base class for all vector tile renderer implementations.
virtual void readXml(const QDomElement &elem, const QgsReadWriteContext &context)=0
Reads renderer's properties from given XML element.
virtual void resolveReferences(const QgsProject &project)
Resolves references to other objects - second phase of loading - after readXml()
virtual QgsVectorTileRenderer * clone() const =0
Returns a clone of the renderer.
virtual QSet< QString > requiredLayers(QgsRenderContext &context, int tileZoom) const
Returns a list of the layers required for rendering.
virtual QMap< QString, QSet< QString > > usedAttributes(const QgsRenderContext &)
Returns field names of sub-layers that will be used for rendering. Must be called between startRender...
virtual QString type() const =0
Returns unique type name of the renderer implementation.
virtual void writeXml(QDomElement &elem, const QgsReadWriteContext &context) const =0
Writes renderer's properties to given XML element.
virtual void renderTile(const QgsVectorTileRendererData &tile, QgsRenderContext &context)=0
Renders given vector tile. Must be called between startRender/stopRender.
virtual void stopRender(QgsRenderContext &context)=0
Finishes rendering and cleans up any resources.
virtual ~QgsVectorTileRenderer()=default
virtual void startRender(QgsRenderContext &context, int tileZoom, const QgsTileRange &tileRange)=0
Initializes rendering. It should be paired with a stopRender() call.
#define SIP_CONVERT_TO_SUBCLASS_CODE(code)
Definition: qgis_sip.h:177
#define SIP_SKIP
Definition: qgis_sip.h:126
#define SIP_FACTORY
Definition: qgis_sip.h:76
#define SIP_END
Definition: qgis_sip.h:194
QMap< QString, QVector< QgsFeature > > QgsVectorTileFeatures
Features of a vector tile, grouped by sub-layer names (key of the map)