QGIS API Documentation 3.99.0-Master (a8f284845db)
Loading...
Searching...
No Matches
qgsarcgisrestquery.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsarcgisrestquery.h
3 --------------------
4 begin : December 2020
5 copyright : (C) 2020 by Nyall Dawson
6 email : nyall dot dawson 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#ifndef QGSARCGISRESTQUERY_H
16#define QGSARCGISRESTQUERY_H
17
18
19#include "qgis_core.h"
20#include "qgshttpheaders.h"
21#include "qgsrectangle.h"
22
23#include <QString>
24#include <QVariantMap>
25
26#define SIP_NO_FILE
27
28class QgsFeedback;
29class QNetworkReply;
31
38class CORE_EXPORT QgsArcGisRestQueryUtils
39{
40 public:
41
46 {
47 AllTypes,
48 Vector,
49 Raster,
50 Scene
51 };
52
56 static QVariantMap getServiceInfo( const QString &baseurl, const QString &authcfg, QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders(), const QString &urlPrefix = QString() );
57
61 static QVariantMap getLayerInfo( const QString &layerurl, const QString &authcfg, QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders(), const QString &urlPrefix = QString() );
62
66 static QVariantMap getObjectIds( const QString &layerurl, const QString &authcfg, QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders(), const QString &urlPrefix = QString(),
67 const QgsRectangle &bbox = QgsRectangle(),
68 const QString &whereClause = QString() );
69
70
76 static QgsRectangle getExtent( const QString &layerurl, const QString &whereClause, const QString &authcfg, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders(), const QString &urlPrefix = QString() );
77
100 static QVariantMap getObjects( const QString &layerurl, const QString &authcfg, const QList<quint32> &objectIds, const QString &crs,
101 bool fetchGeometry, const QStringList &fetchAttributes, bool fetchM, bool fetchZ,
102 const QgsRectangle &filterRect, QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders(), QgsFeedback *feedback = nullptr, const QString &urlPrefix = QString() );
103
107 static QList<quint32> getObjectIdsByExtent( const QString &layerurl, const QgsRectangle &filterRect, QString &errorTitle, QString &errorText, const QString &authcfg, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders(), QgsFeedback *feedback = nullptr,
108 const QString &whereClause = QString(), const QString &urlPrefix = QString() );
109
113 static QByteArray queryService( const QUrl &url, const QString &authcfg, QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders(), QgsFeedback *feedback = nullptr, QString *contentType = nullptr, const QString &urlPrefix = QString() );
114
118 static QVariantMap queryServiceJSON( const QUrl &url, const QString &authcfg, QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders(), QgsFeedback *feedback = nullptr, const QString &urlPrefix = QString() );
119
123 static void visitFolderItems( const std::function<void ( const QString &folderName, const QString &url )> &visitor, const QVariantMap &serviceData, const QString &baseUrl );
124
128 static void visitServiceItems( const std::function<void ( const QString &serviceName, const QString &url, Qgis::ArcGisRestServiceType serviceType )> &visitor, const QVariantMap &serviceData, const QString &baseUrl );
129
133 static void addLayerItems( const std::function<void ( const QString &parentLayerId, ServiceTypeFilter serviceType, Qgis::GeometryType geometryType, const QString &layerId, const QString &name, const QString &description, const QString &url, bool isParentLayer, const QgsCoordinateReferenceSystem &crs, const QString &format )> &visitor, const QVariantMap &serviceData, const QString &parentUrl, const QString &parentSupportedFormats, const ServiceTypeFilter filter = ServiceTypeFilter::AllTypes );
134
138 static QUrl parseUrl( const QUrl &url, bool *isTestEndpoint = nullptr );
139
140 private:
141
142 static void adjustBaseUrl( QString &baseUrl, const QString &name );
143
145};
146
148class CORE_EXPORT QgsArcGisAsyncQuery : public QObject
149{
150 Q_OBJECT
151 public:
152 QgsArcGisAsyncQuery( QObject *parent = nullptr );
153 ~QgsArcGisAsyncQuery() override;
154
155 void start( const QUrl &url, const QString &authCfg, QByteArray *result, bool allowCache = false, const QgsHttpHeaders &headers = QgsHttpHeaders(), const QString &urlPrefix = QString() );
156 signals:
157 void finished();
158 void failed( QString errorTitle, QString errorName );
159 private slots:
160 void handleReply();
161
162 private:
163 QNetworkReply *mReply = nullptr;
164 QByteArray *mResult = nullptr;
165};
166
167class CORE_EXPORT QgsArcGisAsyncParallelQuery : public QObject
168{
169 Q_OBJECT
170 public:
171 QgsArcGisAsyncParallelQuery( const QString &authcfg, const QgsHttpHeaders &requestHeaders, QObject *parent = nullptr );
172 void start( const QVector<QUrl> &urls, QVector<QByteArray> *results, bool allowCache = false );
173
174 signals:
175 void finished( QStringList errors );
176 private slots:
177 void handleReply();
178
179 private:
180 QVector<QByteArray> *mResults = nullptr;
181 int mPendingRequests = 0;
182 QStringList mErrors;
183 QString mAuthCfg;
184 QgsHttpHeaders mRequestHeaders;
185};
186
188
189#endif // QGSARCGISRESTQUERY_H
ArcGisRestServiceType
Available ArcGIS REST service types.
Definition qgis.h:4480
GeometryType
The geometry types are used to group Qgis::WkbType in a coarse way.
Definition qgis.h:376
Utility functions for querying ArcGIS REST services.
Represents a coordinate reference system (CRS).
Base class for feedback objects to be used for cancellation of something running in a worker thread.
Definition qgsfeedback.h:44
Implements simple HTTP header management.
A rectangle specified with double values.