QGIS API Documentation 4.1.0-Master (376402f9aeb)
Loading...
Searching...
No Matches
qgsarcgisrestutils.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsarcgisrestutils.h
3 --------------------
4 begin : Nov 25, 2015
5 copyright : (C) 2015 by Sandro Mani
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 QGSARCGISRESTUTILS_H
16#define QGSARCGISRESTUTILS_H
17
18#include <functional>
19#include <memory>
20
21#include "qgis_sip.h"
23#include "qgswkbtypes.h"
24
25#include <QStringList>
26#include <QTimeZone>
27#include <QVariant>
28
29class QNetworkReply;
31class QgsField;
32class QgsGeometry;
36class QgsFeedback;
37class QgsSymbol;
38class QgsLineSymbol;
39class QgsFillSymbol;
40class QgsMarkerSymbol;
42class QgsPoint;
46class QgsMultiPoint;
47class QgsMultiSurface;
49class QgsPolygon;
50class QgsMultiCurve;
51class QgsMultiPolygon;
52class QgsCurvePolygon;
53class QgsFeature;
54class QgsLineString;
55class QgsCurve;
56
65class CORE_EXPORT QgsArcGisRestContext
66{
67 public:
73 void setTimeZone( const QTimeZone &zone ) { mTimeZone = zone; }
74
80 QTimeZone timeZone() const { return mTimeZone; }
81
87 void setObjectIdFieldName( const QString &name ) { mObjectIdFieldName = name; }
88
94 QString objectIdFieldName() const { return mObjectIdFieldName; }
95
96 private:
97 QTimeZone mTimeZone;
98
99 QString mObjectIdFieldName;
100};
101
110class CORE_EXPORT QgsArcGisRestUtils
111{
112 Q_GADGET
113
114 public:
118 static QMetaType::Type convertFieldType( const QString &type );
119
123 static Qgis::WkbType convertGeometryType( const QString &type );
124
139 static std::unique_ptr< QgsAbstractGeometry > convertGeometry(
140 const QVariantMap &geometry, const QString &esriGeometryType, bool hasM, bool hasZ, bool allowCurves = true, QgsCoordinateReferenceSystem *crs SIP_OUT = nullptr
141 );
142
146 static QgsCoordinateReferenceSystem convertSpatialReference( const QVariantMap &spatialReferenceMap );
147
153 static std::unique_ptr< QgsSymbol > convertSymbol( const QVariantMap &definition );
154
160 static std::unique_ptr< QgsFeatureRenderer > convertRenderer( const QVariantMap &rendererData );
161
167 static std::unique_ptr< QgsAbstractVectorLayerLabeling > convertLabeling( const QVariantList &data );
168
172 static QString convertLabelingExpression( const QString &string );
173
177 static QColor convertColor( const QVariant &data );
178
182 static Qt::PenStyle convertLineStyle( const QString &style );
183
187 static Qt::BrushStyle convertFillStyle( const QString &style );
188
192 static QDateTime convertDateTime( const QVariant &value );
193
201 static QVariantMap geometryToJson( const QgsGeometry &geometry, const QgsArcGisRestContext &context, const QgsCoordinateReferenceSystem &crs = QgsCoordinateReferenceSystem() );
202
210 static QVariantMap crsToJson( const QgsCoordinateReferenceSystem &crs );
211
219 static QgsRectangle convertRectangle( const QVariant &value );
220
226 enum class FeatureToJsonFlag : int SIP_ENUM_BASETYPE( IntFlag )
227 {
228 IncludeGeometry = 1 << 0,
229 IncludeNonObjectIdAttributes = 1 << 1,
230 SkipUnsetAttributes = 1 << 2,
231 };
233
240 Q_FLAG( FeatureToJsonFlags )
241
242
247 static QVariantMap featureToJson(
248 const QgsFeature &feature,
249 const QgsArcGisRestContext &context,
253 )
254 );
255
261 static QVariant variantToAttributeValue( const QVariant &variant, QMetaType::Type expectedType, const QgsArcGisRestContext &context );
262
268 static QVariantMap fieldDefinitionToJson( const QgsField &field );
269
275 static Qgis::ArcGisRestServiceType serviceTypeFromString( const QString &type );
276
282 static Qgis::ArcGisRestServiceCapabilities serviceCapabilitiesFromString( const QString &capabilities );
283
289 static Qgis::DataType dataTypeFromString( const QString &pixelType );
290
299
310 static double defaultNoDataForDataType( Qgis::DataType type, bool &ok SIP_OUT );
311
312 private:
316 static std::unique_ptr< QgsPoint > convertPoint( const QVariantList &list, Qgis::WkbType type );
317
323 static std::unique_ptr< QgsCircularString > convertCircularString( const QVariantMap &data, Qgis::WkbType type, const QgsPoint &startPoint );
324
328 static std::unique_ptr< QgsCurve > convertCompoundCurve( const QVariantList &list, Qgis::WkbType type );
329
333 static std::unique_ptr< QgsLineString > convertLineString( const QVariantList &list, Qgis::WkbType type );
334
338 static std::unique_ptr< QgsPoint > convertGeometryPoint( const QVariantMap &data, Qgis::WkbType pointType );
339
343 static std::unique_ptr< QgsMultiPoint > convertMultiPoint( const QVariantMap &geometryData, Qgis::WkbType pointType );
344
350 static std::unique_ptr< QgsMultiCurve > convertGeometryPolyline( const QVariantMap &data, Qgis::WkbType pointType, bool allowCurves );
351
357 static std::unique_ptr< QgsMultiSurface > convertGeometryPolygon( const QVariantMap &data, Qgis::WkbType pointType, bool allowCurves );
358
362 static std::unique_ptr< QgsPolygon > convertEnvelope( const QVariantMap &data );
363
364 static QVariantMap pointToJson( const QgsPoint *point );
365 static QVariantMap multiPointToJson( const QgsMultiPoint *multiPoint );
366 static QVariantList lineStringToJsonPath( const QgsLineString *line );
367 static QVariantList curveToJsonCurve( const QgsCurve *curve, bool includeStart );
368 static QVariantMap lineStringToJson( const QgsLineString *line );
369 static QVariantMap curveToJson( const QgsCurve *curve );
370 static QVariantMap multiLineStringToJson( const QgsMultiLineString *multiLine );
371 static QVariantMap multiCurveToJson( const QgsMultiCurve *multiCurve );
372 static QVariantList polygonToJsonRings( const QgsPolygon *polygon );
373 static QVariantList curvePolygonToJsonRings( const QgsCurvePolygon *polygon );
374 static QVariantMap polygonToJson( const QgsPolygon *polygon );
375 static QVariantMap curvePolygonToJson( const QgsCurvePolygon *polygon );
376 static QVariantMap multiPolygonToJson( const QgsMultiPolygon *polygon );
377 static QVariantMap multiSurfaceToJson( const QgsMultiSurface *multiSurface );
378
380};
381
383
384#endif // QGSARCGISRESTUTILS_H
ArcGisRestServiceType
Available ArcGIS REST service types.
Definition qgis.h:4643
DataType
Raster data types.
Definition qgis.h:393
QFlags< ArcGisRestServiceCapability > ArcGisRestServiceCapabilities
Available ArcGIS REST service capabilities.
Definition qgis.h:4680
RasterColorInterpretation
Raster color interpretation.
Definition qgis.h:5025
WkbType
The WKB type describes the number of dimensions a geometry has.
Definition qgis.h:294
Abstract base class for all geometries.
Abstract base class - its implementations define different approaches to the labeling of a vector lay...
Contains the context of a ArcGIS REST service operation.
void setTimeZone(const QTimeZone &zone)
Sets the time zone for datetime values.
QTimeZone timeZone() const
Returns the time zone for datetime values.
QString objectIdFieldName() const
Returns the name of the objectId field.
void setObjectIdFieldName(const QString &name)
Sets the name of the objectId field.
Utility functions for working with ArcGIS REST services.
static std::unique_ptr< QgsAbstractGeometry > convertGeometry(const QVariantMap &geometry, const QString &esriGeometryType, bool hasM, bool hasZ, bool allowCurves=true, QgsCoordinateReferenceSystem *crs=nullptr)
Converts an ESRI REST geometry JSON definition to a QgsAbstractGeometry.
static QVariantMap fieldDefinitionToJson(const QgsField &field)
Converts a field's definition to an ArcGIS REST JSON representation.
static QgsCoordinateReferenceSystem convertSpatialReference(const QVariantMap &spatialReferenceMap)
Converts a spatial reference JSON definition to a QgsCoordinateReferenceSystem value.
static QDateTime convertDateTime(const QVariant &value)
Converts a date time value to a QDateTime.
static Qgis::WkbType convertGeometryType(const QString &type)
Converts an ESRI REST geometry type to a WKB type.
static QString convertLabelingExpression(const QString &string)
Converts an ESRI labeling expression to a QGIS expression string.
static QVariantMap geometryToJson(const QgsGeometry &geometry, const QgsArcGisRestContext &context, const QgsCoordinateReferenceSystem &crs=QgsCoordinateReferenceSystem())
Converts a geometry to an ArcGIS REST JSON representation.
static double defaultNoDataForDataType(Qgis::DataType type, bool &ok)
Returns a sensible no-data value to use for the specified data type.
friend class TestQgsArcGisRestUtils
static Qgis::ArcGisRestServiceType serviceTypeFromString(const QString &type)
Converts a string value to a REST service type.
static QVariant variantToAttributeValue(const QVariant &variant, QMetaType::Type expectedType, const QgsArcGisRestContext &context)
Converts a variant to a REST attribute value.
static QVariantMap featureToJson(const QgsFeature &feature, const QgsArcGisRestContext &context, const QgsCoordinateReferenceSystem &crs=QgsCoordinateReferenceSystem(), QgsArcGisRestUtils::FeatureToJsonFlags flags=QgsArcGisRestUtils::FeatureToJsonFlags(static_cast< int >(QgsArcGisRestUtils::FeatureToJsonFlag::IncludeGeometry)|static_cast< int >(QgsArcGisRestUtils::FeatureToJsonFlag::IncludeNonObjectIdAttributes)))
Converts a feature to an ArcGIS REST JSON representation.
static Qt::PenStyle convertLineStyle(const QString &style)
Converts an ESRI line style to a Qt pen style.
Q_ENUM(FeatureToJsonFlag)
FeatureToJsonFlag
Flags which control the behavior of converting features to JSON.
@ IncludeGeometry
Whether to include the geometry definition.
@ IncludeNonObjectIdAttributes
Whether to include any non-objectId attributes.
static Qgis::ArcGisRestServiceCapabilities serviceCapabilitiesFromString(const QString &capabilities)
Parses a capabilities string to known values.
static std::unique_ptr< QgsSymbol > convertSymbol(const QVariantMap &definition)
Converts a symbol JSON definition to a QgsSymbol.
static std::unique_ptr< QgsFeatureRenderer > convertRenderer(const QVariantMap &rendererData)
Converts renderer JSON data to an equivalent QgsFeatureRenderer.
static QMetaType::Type convertFieldType(const QString &type)
Converts an ESRI REST field type to a QVariant type.
static Qt::BrushStyle convertFillStyle(const QString &style)
Converts an ESRI fill style to a Qt brush style.
static Qgis::RasterColorInterpretation colorInterpretationFromBandName(const QString &bandName)
Attempts to match arbitrary band name strings to a QGIS raster color interpretation.
static QVariantMap crsToJson(const QgsCoordinateReferenceSystem &crs)
Converts a crs to an ArcGIS REST JSON representation.
static std::unique_ptr< QgsAbstractVectorLayerLabeling > convertLabeling(const QVariantList &data)
Converts labeling JSON data to an equivalent QGIS vector labeling.
QFlags< FeatureToJsonFlag > FeatureToJsonFlags
Flags which control the behavior of converting features to JSON.
static Qgis::DataType dataTypeFromString(const QString &pixelType)
Returns the raster data type corresponding to an ESRI pixelType string.
static QColor convertColor(const QVariant &data)
Converts ESRI JSON color data to a QColor object.
static QgsRectangle convertRectangle(const QVariant &value)
Converts a rectangle value to a QgsRectangle.
Circular string geometry type.
Compound curve geometry type.
Represents a coordinate reference system (CRS).
Curve polygon geometry type.
Abstract base class for curved geometry type.
Definition qgscurve.h:36
Abstract base class for all 2D vector feature renderers.
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
Definition qgsfeature.h:60
Base class for feedback objects to be used for cancellation of something running in a worker thread.
Definition qgsfeedback.h:44
Encapsulate a field in an attribute table or data source.
Definition qgsfield.h:56
A fill symbol type, for rendering Polygon and MultiPolygon geometries.
A geometry is the spatial representation of a feature.
Line string geometry type, with support for z-dimension and m-values.
A line symbol type, for rendering LineString and MultiLineString geometries.
A marker symbol type, for rendering Point and MultiPoint geometries.
Multi curve geometry collection.
Multi line string geometry collection.
Multi point geometry collection.
Multi polygon geometry collection.
Multi surface geometry collection.
QNetworkAccessManager with additional QGIS specific logic.
Point geometry type, with support for z-dimension and m-values.
Definition qgspoint.h:53
Polygon geometry type.
Definition qgspolygon.h:37
A rectangle specified with double values.
Abstract base class for all rendered symbols.
Definition qgssymbol.h:227
#define SIP_ENUM_BASETYPE(type)
Definition qgis_sip.h:274
#define SIP_OUT
Definition qgis_sip.h:57
Q_DECLARE_OPERATORS_FOR_FLAGS(QgsProjectionSelectionWidget::CrsOptions)