QGIS API Documentation 3.99.0-Master (2fe06baccd8)
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#define SIP_NO_FILE
19
20#include "qgis_core.h"
21#include "qgshttpheaders.h"
22#include "qgsrectangle.h"
23
24#include <QString>
25#include <QVariantMap>
26
27class QgsFeedback;
28class QNetworkReply;
30
37class CORE_EXPORT QgsArcGisRestQueryUtils
38{
39 public:
40
45 {
46 AllTypes,
47 Vector,
48 Raster,
49 Scene
50 };
51
55 static QVariantMap getServiceInfo( const QString &baseurl, const QString &authcfg, QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders(), const QString &urlPrefix = QString() );
56
60 static QVariantMap getLayerInfo( const QString &layerurl, const QString &authcfg, QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders(), const QString &urlPrefix = QString() );
61
65 static QVariantMap getObjectIds( const QString &layerurl, const QString &authcfg, QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders(), const QString &urlPrefix = QString(),
66 const QgsRectangle &bbox = QgsRectangle(),
67 const QString &whereClause = QString() );
68
69
75 static QgsRectangle getExtent( const QString &layerurl, const QString &whereClause, const QString &authcfg, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders(), const QString &urlPrefix = QString() );
76
99 static QVariantMap getObjects( const QString &layerurl, const QString &authcfg, const QList<quint32> &objectIds, const QString &crs,
100 bool fetchGeometry, const QStringList &fetchAttributes, bool fetchM, bool fetchZ,
101 const QgsRectangle &filterRect, QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders(), QgsFeedback *feedback = nullptr, const QString &urlPrefix = QString() );
102
106 static QList<quint32> getObjectIdsByExtent( const QString &layerurl, const QgsRectangle &filterRect, QString &errorTitle, QString &errorText, const QString &authcfg, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders(), QgsFeedback *feedback = nullptr,
107 const QString &whereClause = QString(), const QString &urlPrefix = QString() );
108
112 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() );
113
117 static QVariantMap queryServiceJSON( const QUrl &url, const QString &authcfg, QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders(), QgsFeedback *feedback = nullptr, const QString &urlPrefix = QString() );
118
122 static void visitFolderItems( const std::function<void ( const QString &folderName, const QString &url )> &visitor, const QVariantMap &serviceData, const QString &baseUrl );
123
127 static void visitServiceItems( const std::function<void ( const QString &serviceName, const QString &url, Qgis::ArcGisRestServiceType serviceType )> &visitor, const QVariantMap &serviceData, const QString &baseUrl );
128
132 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 );
133
137 static QUrl parseUrl( const QUrl &url, bool *isTestEndpoint = nullptr );
138
139 private:
140
141 static void adjustBaseUrl( QString &baseUrl, const QString &name );
142
144};
145
147class CORE_EXPORT QgsArcGisAsyncQuery : public QObject
148{
149 Q_OBJECT
150 public:
151 QgsArcGisAsyncQuery( QObject *parent = nullptr );
152 ~QgsArcGisAsyncQuery() override;
153
154 void start( const QUrl &url, const QString &authCfg, QByteArray *result, bool allowCache = false, const QgsHttpHeaders &headers = QgsHttpHeaders(), const QString &urlPrefix = QString() );
155 signals:
156 void finished();
157 void failed( QString errorTitle, QString errorName );
158 private slots:
159 void handleReply();
160
161 private:
162 QNetworkReply *mReply = nullptr;
163 QByteArray *mResult = nullptr;
164};
165
166class CORE_EXPORT QgsArcGisAsyncParallelQuery : public QObject
167{
168 Q_OBJECT
169 public:
170 QgsArcGisAsyncParallelQuery( const QString &authcfg, const QgsHttpHeaders &requestHeaders, QObject *parent = nullptr );
171 void start( const QVector<QUrl> &urls, QVector<QByteArray> *results, bool allowCache = false );
172
173 signals:
174 void finished( QStringList errors );
175 private slots:
176 void handleReply();
177
178 private:
179 QVector<QByteArray> *mResults = nullptr;
180 int mPendingRequests = 0;
181 QStringList mErrors;
182 QString mAuthCfg;
183 QgsHttpHeaders mRequestHeaders;
184};
185
187
188#endif // QGSARCGISRESTQUERY_H
ArcGisRestServiceType
Available ArcGIS REST service types.
Definition qgis.h:4371
GeometryType
The geometry types are used to group Qgis::WkbType in a coarse way.
Definition qgis.h:358
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.