QGIS API Documentation 3.27.0-Master (9c08adf5ef)
qgsvectortileloader.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsvectortileloader.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 QGSVECTORTILELOADER_H
17#define QGSVECTORTILELOADER_H
18
19#define SIP_NO_FILE
20
21class QByteArray;
22
24#include "qgshttpheaders.h"
25
33{
34 public:
36 QgsVectorTileRawData( QgsTileXYZ tileID = QgsTileXYZ(), const QByteArray &raw = QByteArray() )
37 : id( tileID ), data( raw ) {}
38
42 QByteArray data;
43};
44
45
46class QNetworkReply;
47class QEventLoop;
48
49class QgsMbTiles;
50class QgsVtpkTiles;
51
53
60class QgsVectorTileLoader : public QObject
61{
62 Q_OBJECT
63 public:
64
66 static QList<QgsVectorTileRawData> blockingFetchTileRawData( const QString &sourceType,
67 const QString &sourcePath,
68 const QgsTileMatrix &tileMatrix,
69 const QPointF &viewCenter,
70 const QgsTileRange &range,
71 const QString &authid,
72 const QgsHttpHeaders &headers,
73 QgsFeedback *feedback = nullptr );
74
76 static QByteArray loadFromNetwork( const QgsTileXYZ &id,
77 const QgsTileMatrix &tileMatrix,
78 const QString &requestUrl,
79 const QString &authid,
80 const QgsHttpHeaders &headers,
81 QgsFeedback *feedback = nullptr );
83 static QByteArray loadFromMBTiles( const QgsTileXYZ &id, QgsMbTiles &mbTileReader, QgsFeedback *feedback = nullptr );
84
86 static QByteArray loadFromVtpk( const QgsTileXYZ &id, QgsVtpkTiles &vtpkTileReader );
87
88 //
89 // non-static stuff
90 //
91
93 QgsVectorTileLoader( const QString &uri, const QgsTileMatrix &tileMatrix, const QgsTileRange &range, const QPointF &viewCenter,
94 const QString &authid, const QgsHttpHeaders &headers, QgsFeedback *feedback );
96
98 void downloadBlocking();
99
101 QString error() const;
102
103 private:
104 void loadFromNetworkAsync( const QgsTileXYZ &id, const QgsTileMatrix &tileMatrix, const QString &requestUrl );
105
106 private slots:
107 void tileReplyFinished();
108 void canceled();
109
110 signals:
113
114 private:
116 std::unique_ptr<QEventLoop> mEventLoop;
118 QgsFeedback *mFeedback;
119
120 QString mAuthCfg;
121 QgsHttpHeaders mHeaders;
122
124 QList<QgsTileDownloadManagerReply *> mReplies;
125
126 QString mError;
127
128};
129
130#endif // QGSVECTORTILELOADER_H
Base class for feedback objects to be used for cancellation of something running in a worker thread.
Definition: qgsfeedback.h:45
This class implements simple http header management.
Utility class for reading and writing MBTiles files (which are SQLite3 databases).
Definition: qgsmbtiles.h:39
Reply object for tile download manager requests returned from calls to QgsTileDownloadManager::get().
Defines a matrix of tiles for a single zoom level: it is defined by its size (width *.
Definition: qgstiles.h:108
Range of tiles in a tile matrix to be rendered.
Definition: qgstiles.h:71
Stores coordinates of a tile in a tile matrix set.
Definition: qgstiles.h:38
The loader class takes care of loading raw vector tile data from a tile source.
void tileRequestFinished(const QgsVectorTileRawData &rawTile)
Emitted when a tile request has finished. If a tile request has failed, the returned raw tile byte ar...
static QList< QgsVectorTileRawData > blockingFetchTileRawData(const QString &sourceType, const QString &sourcePath, const QgsTileMatrix &tileMatrix, const QPointF &viewCenter, const QgsTileRange &range, const QString &authid, const QgsHttpHeaders &headers, QgsFeedback *feedback=nullptr)
Returns raw tile data for the specified range of tiles. Blocks the caller until all tiles are fetched...
QString error() const
Returns a eventual error that occurred during loading, void if no error.
static QByteArray loadFromNetwork(const QgsTileXYZ &id, const QgsTileMatrix &tileMatrix, const QString &requestUrl, const QString &authid, const QgsHttpHeaders &headers, QgsFeedback *feedback=nullptr)
Returns raw tile data for a single tile, doing a HTTP request. Block the caller until tile data are d...
static QByteArray loadFromMBTiles(const QgsTileXYZ &id, QgsMbTiles &mbTileReader, QgsFeedback *feedback=nullptr)
Returns raw tile data for a single tile loaded from MBTiles file.
void downloadBlocking()
Blocks the caller until all asynchronous requests are finished (with a success or a failure)
QgsVectorTileLoader(const QString &uri, const QgsTileMatrix &tileMatrix, const QgsTileRange &range, const QPointF &viewCenter, const QString &authid, const QgsHttpHeaders &headers, QgsFeedback *feedback)
Constructs tile loader for doing asynchronous requests and starts network requests.
static QByteArray loadFromVtpk(const QgsTileXYZ &id, QgsVtpkTiles &vtpkTileReader)
Returns raw tile data for a single tile loaded from VTPK file.
Keeps track of raw tile data that need to be decoded.
QgsVectorTileRawData(QgsTileXYZ tileID=QgsTileXYZ(), const QByteArray &raw=QByteArray())
Constructs a raw tile object.
QByteArray data
Raw tile data.
QgsTileXYZ id
Tile position in tile matrix set.
Utility class for reading and writing ESRI VTPK files.
Definition: qgsvtpktiles.h:38