-
-
Notifications
You must be signed in to change notification settings - Fork 3k
/
qgsarcgisrestutils.h
87 lines (76 loc) · 3.64 KB
/
qgsarcgisrestutils.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
/***************************************************************************
qgsarcgisrestutils.h
--------------------
begin : Nov 25, 2015
copyright : (C) 2015 by Sandro Mani
email : manisandro@gmail.com
***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#ifndef QGSARCGISRESTUTILS_H
#define QGSARCGISRESTUTILS_H
#include <QStringList>
#include <QVariant>
#include "geometry/qgswkbtypes.h"
#include "qgsfeature.h"
class QNetworkReply;
class QgsNetworkAccessManager;
class QgsFields;
class QgsRectangle;
class QgsAbstractGeometry;
class QgsCoordinateReferenceSystem;
class QgsArcGisRestUtils
{
public:
static QVariant::Type mapEsriFieldType( const QString &esriFieldType );
static QgsWkbTypes::Type mapEsriGeometryType( const QString &esriGeometryType );
static std::unique_ptr< QgsAbstractGeometry > parseEsriGeoJSON( const QVariantMap &geometryData, const QString &esriGeometryType, bool readM, bool readZ, QgsCoordinateReferenceSystem *crs = nullptr );
static QgsCoordinateReferenceSystem parseSpatialReference( const QVariantMap &spatialReferenceMap );
static QVariantMap getServiceInfo( const QString &baseurl, QString &errorTitle, QString &errorText );
static QVariantMap getLayerInfo( const QString &layerurl, QString &errorTitle, QString &errorText );
static QVariantMap getObjectIds( const QString &layerurl, const QString &objectIdFieldName, QString &errorTitle, QString &errorText );
static QVariantMap getObjects( const QString &layerurl, const QList<quint32> &objectIds, const QString &crs,
bool fetchGeometry, const QStringList &fetchAttributes, bool fetchM, bool fetchZ,
const QgsRectangle &filterRect, QString &errorTitle, QString &errorText );
static QList<quint32> getObjectIdsByExtent( const QString &layerurl, const QgsRectangle &filterRect, QString &errorTitle, QString &errorText );
static QByteArray queryService( const QUrl &url, QString &errorTitle, QString &errorText );
static QVariantMap queryServiceJSON( const QUrl &url, QString &errorTitle, QString &errorText );
static QUrl parseUrl( const QUrl &url );
};
class QgsArcGisAsyncQuery : public QObject
{
Q_OBJECT
public:
QgsArcGisAsyncQuery( QObject *parent = nullptr );
~QgsArcGisAsyncQuery() override;
void start( const QUrl &url, QByteArray *result, bool allowCache = false );
signals:
void finished();
void failed( QString errorTitle, QString errorName );
private slots:
void handleReply();
private:
QNetworkReply *mReply = nullptr;
QByteArray *mResult = nullptr;
};
class QgsArcGisAsyncParallelQuery : public QObject
{
Q_OBJECT
public:
QgsArcGisAsyncParallelQuery( QObject *parent = nullptr );
void start( const QVector<QUrl> &urls, QVector<QByteArray> *results, bool allowCache = false );
signals:
void finished( QStringList errors );
private slots:
void handleReply();
private:
QVector<QByteArray> *mResults = nullptr;
int mPendingRequests = 0;
QStringList mErrors;
};
#endif // QGSARCGISRESTUTILS_H