QGIS API Documentation  3.27.0-Master (0e23467727)
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 #include "qgsvectortilematrixset.h"
24 
27 
28 class QgsTileXYZ;
29 
84 class CORE_EXPORT QgsVectorTileLayer : public QgsMapLayer
85 {
86  Q_OBJECT
87 
88  public:
89 
90 
96  struct LayerOptions
97  {
98 
103  : transformContext( transformContext )
104  {}
105 
108  };
109 
111  explicit QgsVectorTileLayer( const QString &path = QString(), const QString &baseName = QString(), const QgsVectorTileLayer::LayerOptions &options = QgsVectorTileLayer::LayerOptions() );
113 
114 #ifdef SIP_RUN
115  SIP_PYOBJECT __repr__();
116  % MethodCode
117  QString str = QStringLiteral( "<QgsVectorTileLayer: '%1'>" ).arg( sipCpp->name() );
118  sipRes = PyUnicode_FromString( str.toUtf8().constData() );
119  % End
120 #endif
121 
122  // implementation of virtual functions from QgsMapLayer
123 
124  QgsVectorTileLayer *clone() const override SIP_FACTORY;
125  QgsDataProvider *dataProvider() override;
126  const QgsDataProvider *dataProvider() const override SIP_SKIP;
127  QgsMapLayerRenderer *createMapRenderer( QgsRenderContext &rendererContext ) override SIP_FACTORY;
128  bool readXml( const QDomNode &layerNode, QgsReadWriteContext &context ) override;
129  bool writeXml( QDomNode &layerNode, QDomDocument &doc, const QgsReadWriteContext &context ) const override;
130  bool readSymbology( const QDomNode &node, QString &errorMessage,
131  QgsReadWriteContext &context, StyleCategories categories = AllStyleCategories ) override;
132  bool writeSymbology( QDomNode &node, QDomDocument &doc, QString &errorMessage, const QgsReadWriteContext &context,
133  StyleCategories categories = AllStyleCategories ) const override;
134  void setTransformContext( const QgsCoordinateTransformContext &transformContext ) override;
135  QString loadDefaultStyle( bool &resultFlag SIP_OUT ) override;
136  Qgis::MapLayerProperties properties() const override;
137 
149  bool loadDefaultStyle( QString &error, QStringList &warnings ) SIP_SKIP;
150 
151  QString loadDefaultMetadata( bool &resultFlag SIP_OUT ) override;
152 
153  QString encodedSource( const QString &source, const QgsReadWriteContext &context ) const FINAL;
154  QString decodedSource( const QString &source, const QString &provider, const QgsReadWriteContext &context ) const FINAL;
155  QString htmlMetadata() const override;
156 
157  // new methods
158 
164  QgsVectorTileMatrixSet &tileMatrixSet() { return mMatrixSet; }
165 
167  QString sourceType() const { return mSourceType; }
169  QString sourcePath() const { return mSourcePath; }
170 
172  int sourceMinZoom() const { return mMatrixSet.minimumZoom(); }
174  int sourceMaxZoom() const { return mMatrixSet.maximumZoom(); }
175 
183  QByteArray getRawTile( QgsTileXYZ tileID ) SIP_SKIP;
184 
189  void setRenderer( QgsVectorTileRenderer *r SIP_TRANSFER );
191  QgsVectorTileRenderer *renderer() const;
192 
197  void setLabeling( QgsVectorTileLabeling *labeling SIP_TRANSFER );
199  QgsVectorTileLabeling *labeling() const;
200 
202  void setTileBorderRenderingEnabled( bool enabled ) { mTileBorderRendering = enabled; }
204  bool isTileBorderRenderingEnabled() const { return mTileBorderRendering; }
205 
206  private:
207  bool loadDataSource();
208 
209  private:
211  QString mSourceType;
213  QString mSourcePath;
214 
215  QgsVectorTileMatrixSet mMatrixSet;
216 
218  std::unique_ptr<QgsVectorTileRenderer> mRenderer;
220  std::unique_ptr<QgsVectorTileLabeling> mLabeling;
222  bool mTileBorderRendering = false;
223 
224  QVariantMap mArcgisLayerConfiguration;
225 
226  QgsCoordinateTransformContext mTransformContext;
227 
228  std::unique_ptr< QgsDataProvider > mDataProvider;
229 
230  bool setupArcgisVectorTileServiceConnection( const QString &uri, const QgsDataSourceUri &dataSourceUri );
231 
232  void setDataSourcePrivate( const QString &dataSource, const QString &baseName, const QString &provider,
233  const QgsDataProvider::ProviderOptions &options, QgsDataProvider::ReadFlags flags ) override;
234 
235 };
236 
237 #ifndef SIP_RUN
239 
245 class QgsVectorTileDataProvider : public QgsDataProvider
246 {
247  Q_OBJECT
248 
249  public:
250  QgsVectorTileDataProvider( const QgsDataProvider::ProviderOptions &providerOptions,
251  QgsDataProvider::ReadFlags flags );
252  QgsCoordinateReferenceSystem crs() const override;
253  QString name() const override;
254  QString description() const override;
255  QgsRectangle extent() const override;
256  bool isValid() const override;
257  bool renderInPreview( const QgsDataProvider::PreviewContext &context ) override;
258 
259 };
261 #endif
262 
263 
264 #endif // QGSVECTORTILELAYER_H
The Qgis class provides global constants for use throughout the application.
Definition: qgis.h:72
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 bool renderInPreview(const QgsDataProvider::PreviewContext &context)
Returns whether the layer must be rendered in preview jobs.
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:38
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)
QString sourceType() const
Returns type of the data source.
~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)
Encapsulates properties of a vector tile matrix set, including tile origins and scaling information.
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:237
#define SIP_TRANSFER
Definition: qgis_sip.h:36
#define SIP_OUT
Definition: qgis_sip.h:58
#define SIP_FACTORY
Definition: qgis_sip.h:76
Stores settings related to the context in which a preview job runs.
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.