QGIS API Documentation  3.23.0-Master (7c4a6de034)
qgsvectortilelayer.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsvectortilelayer.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 QGSVECTORTILELAYER_H
17 #define QGSVECTORTILELAYER_H
18 
19 #include "qgis_core.h"
20 #include "qgis_sip.h"
21 
22 #include "qgsmaplayer.h"
23 
26 
27 class QgsTileXYZ;
28 
83 class CORE_EXPORT QgsVectorTileLayer : public QgsMapLayer
84 {
85  Q_OBJECT
86 
87  public:
88 
89 
95  struct LayerOptions
96  {
97 
102  : transformContext( transformContext )
103  {}
104 
107  };
108 
110  explicit QgsVectorTileLayer( const QString &path = QString(), const QString &baseName = QString(), const QgsVectorTileLayer::LayerOptions &options = QgsVectorTileLayer::LayerOptions() );
112 
113 #ifdef SIP_RUN
114  SIP_PYOBJECT __repr__();
115  % MethodCode
116  QString str = QStringLiteral( "<QgsVectorTileLayer: '%1'>" ).arg( sipCpp->name() );
117  sipRes = PyUnicode_FromString( str.toUtf8().constData() );
118  % End
119 #endif
120 
121  // implementation of virtual functions from QgsMapLayer
122 
123  QgsVectorTileLayer *clone() const override SIP_FACTORY;
124  QgsDataProvider *dataProvider() override;
125  const QgsDataProvider *dataProvider() const override SIP_SKIP;
126  QgsMapLayerRenderer *createMapRenderer( QgsRenderContext &rendererContext ) override SIP_FACTORY;
127  bool readXml( const QDomNode &layerNode, QgsReadWriteContext &context ) override;
128  bool writeXml( QDomNode &layerNode, QDomDocument &doc, const QgsReadWriteContext &context ) const override;
129  bool readSymbology( const QDomNode &node, QString &errorMessage,
130  QgsReadWriteContext &context, StyleCategories categories = AllStyleCategories ) override;
131  bool writeSymbology( QDomNode &node, QDomDocument &doc, QString &errorMessage, const QgsReadWriteContext &context,
132  StyleCategories categories = AllStyleCategories ) const override;
133  void setTransformContext( const QgsCoordinateTransformContext &transformContext ) override;
134  QString loadDefaultStyle( bool &resultFlag SIP_OUT ) override;
135 
147  bool loadDefaultStyle( QString &error, QStringList &warnings ) SIP_SKIP;
148 
149  QString loadDefaultMetadata( bool &resultFlag SIP_OUT ) override;
150 
151  QString encodedSource( const QString &source, const QgsReadWriteContext &context ) const FINAL;
152  QString decodedSource( const QString &source, const QString &provider, const QgsReadWriteContext &context ) const FINAL;
153  QString htmlMetadata() const override;
154 
155  // new methods
156 
158  QString sourceType() const { return mSourceType; }
160  QString sourcePath() const { return mSourcePath; }
161 
163  int sourceMinZoom() const { return mSourceMinZoom; }
165  int sourceMaxZoom() const { return mSourceMaxZoom; }
166 
174  QByteArray getRawTile( QgsTileXYZ tileID ) SIP_SKIP;
175 
180  void setRenderer( QgsVectorTileRenderer *r SIP_TRANSFER );
182  QgsVectorTileRenderer *renderer() const;
183 
188  void setLabeling( QgsVectorTileLabeling *labeling SIP_TRANSFER );
190  QgsVectorTileLabeling *labeling() const;
191 
193  void setTileBorderRenderingEnabled( bool enabled ) { mTileBorderRendering = enabled; }
195  bool isTileBorderRenderingEnabled() const { return mTileBorderRendering; }
196 
197  private:
198  bool loadDataSource();
199 
200  private:
202  QString mSourceType;
204  QString mSourcePath;
206  int mSourceMinZoom = -1;
208  int mSourceMaxZoom = -1;
209 
211  std::unique_ptr<QgsVectorTileRenderer> mRenderer;
213  std::unique_ptr<QgsVectorTileLabeling> mLabeling;
215  bool mTileBorderRendering = false;
216 
217  QVariantMap mArcgisLayerConfiguration;
218 
219  QgsCoordinateTransformContext mTransformContext;
220 
221  std::unique_ptr< QgsDataProvider > mDataProvider;
222 
223  bool setupArcgisVectorTileServiceConnection( const QString &uri, const QgsDataSourceUri &dataSourceUri );
224 
225  void setDataSourcePrivate( const QString &dataSource, const QString &baseName, const QString &provider,
226  const QgsDataProvider::ProviderOptions &options, QgsDataProvider::ReadFlags flags ) override;
227 
228 };
229 
230 #ifndef SIP_RUN
232 
238 class QgsVectorTileDataProvider : public QgsDataProvider
239 {
240  Q_OBJECT
241 
242  public:
243  QgsVectorTileDataProvider( const QgsDataProvider::ProviderOptions &providerOptions,
244  QgsDataProvider::ReadFlags flags );
245  QgsCoordinateReferenceSystem crs() const override;
246  QString name() const override;
247  QString description() const override;
248  QgsRectangle extent() const override;
249  bool isValid() const override;
250 
251 };
253 #endif
254 
255 
256 #endif // QGSVECTORTILELAYER_H
This class represents a coordinate reference system (CRS).
Contains information about the context in which a coordinate transform is executed.
Abstract base class for spatial data provider implementations.
virtual QString name() const =0
Returns a provider name.
virtual QgsCoordinateReferenceSystem crs() const =0
Returns the coordinate system for the data source.
virtual bool isValid() const =0
Returns true if this is a valid layer.
virtual QString description() const =0
Returns description.
virtual QgsRectangle extent() const =0
Returns the extent of the layer.
Class for storing the component parts of a RDBMS data source URI (e.g.
Base class for utility classes that encapsulate information necessary for rendering of map layers.
Base class for all map layer types.
Definition: qgsmaplayer.h:73
virtual QgsMapLayer * clone() const =0
Returns a new instance equivalent to this one except for the id which is still unique.
The class is used as a container of context for various read/write operations on other objects.
A rectangle specified with double values.
Definition: qgsrectangle.h:42
Contains information about the context of a rendering operation.
Stores coordinates of a tile in a tile matrix set.
Definition: qgstiles.h:34
Base class for labeling configuration classes for vector tile layers.
Implements a map layer that is dedicated to rendering of vector tiles.
void setTileBorderRenderingEnabled(bool enabled)
Sets whether to render also borders of tiles (useful for debugging)
~QgsVectorTileLayer() override
int sourceMinZoom() const
Returns minimum zoom level at which source has any valid tiles (negative = unconstrained)
bool isTileBorderRenderingEnabled() const
Returns whether to render also borders of tiles (useful for debugging)
int sourceMaxZoom() const
Returns maximum zoom level at which source has any valid tiles (negative = unconstrained)
QString sourcePath() const
Returns URL/path of the data source (syntax different to each data source type)
Abstract base class for all vector tile renderer implementations.
#define str(x)
Definition: qgis.cpp:37
#define SIP_SKIP
Definition: qgis_sip.h:126
#define FINAL
Definition: qgis_sip.h:228
#define SIP_TRANSFER
Definition: qgis_sip.h:36
#define SIP_OUT
Definition: qgis_sip.h:58
#define SIP_FACTORY
Definition: qgis_sip.h:76
Setting options for creating vector data providers.
Setting options for loading vector tile layers.
LayerOptions(const QgsCoordinateTransformContext &transformContext=QgsCoordinateTransformContext())
Constructor for LayerOptions with optional transformContext.
QgsCoordinateTransformContext transformContext
Coordinate transform context.