QGIS API Documentation 3.41.0-Master (88383c3d16f)
Loading...
Searching...
No Matches
qgssensorthingsutils.h
Go to the documentation of this file.
1/***************************************************************************
2 qgssensorthingsutils.h
3 --------------------
4 begin : November 2023
5 copyright : (C) 2023 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 QGSSENSORTHINGSUTILS_H
16#define QGSSENSORTHINGSUTILS_H
17
18#include "qgis_sip.h"
19#include "qgis_core.h"
20#include "qgis.h"
21
22class QgsFields;
23class QgsFeedback;
24class QgsRectangle;
26
33class CORE_EXPORT QgsSensorThingsUtils
34{
35
36 public:
37
39 static constexpr int DEFAULT_PAGE_SIZE = 200; SIP_SKIP
40
42 static constexpr int DEFAULT_FEATURE_LIMIT = 10000; SIP_SKIP
43
45 static constexpr int DEFAULT_EXPANSION_LIMIT = 100; SIP_SKIP
46
52 static Qgis::SensorThingsEntity stringToEntity( const QString &type );
53
59 static QString displayString( Qgis::SensorThingsEntity type, bool plural = false );
60
66 static Qgis::SensorThingsEntity entitySetStringToEntity( const QString &type );
67
73 static QString entityToSetString( Qgis::SensorThingsEntity type );
74
80 static QStringList propertiesForEntityType( Qgis::SensorThingsEntity type );
81
88 static QgsFields fieldsForEntityType( Qgis::SensorThingsEntity type, bool includeRangeFieldProxies = true );
89
96 static QgsFields fieldsForExpandedEntityType( Qgis::SensorThingsEntity baseType, const QList< Qgis::SensorThingsEntity > &expandedTypes );
97
101 static QString geometryFieldForEntityType( Qgis::SensorThingsEntity type );
102
106 static bool entityTypeHasGeometry( Qgis::SensorThingsEntity type );
107
115 static Qgis::GeometryType geometryTypeForEntity( Qgis::SensorThingsEntity type );
116
121 static QString filterForWkbType( Qgis::SensorThingsEntity entityType, Qgis::WkbType wkbType );
122
131 static QString filterForExtent( const QString &geometryField, const QgsRectangle &extent );
132
140 static QString combineFilters( const QStringList &filters );
141
148 static QList< Qgis::GeometryType > availableGeometryTypes( const QString &uri, Qgis::SensorThingsEntity type, QgsFeedback *feedback = nullptr, const QString &authCfg = QString() );
149
155 static QList< Qgis::SensorThingsEntity > expandableTargets( Qgis::SensorThingsEntity type );
156
168 static Qgis::RelationshipCardinality relationshipCardinality( Qgis::SensorThingsEntity baseType, Qgis::SensorThingsEntity relatedType, bool &valid SIP_OUT );
169
177 static QString asQueryString( Qgis::SensorThingsEntity baseType, const QList< QgsSensorThingsExpansionDefinition > &expansions );
178
179};
180
181
189{
190 public:
191
196 const QString &orderBy = QString(),
197 Qt::SortOrder sortOrder = Qt::SortOrder::AscendingOrder,
199 const QString &filter = QString() );
200
205 static QgsSensorThingsExpansionDefinition defaultDefinitionForEntity( Qgis::SensorThingsEntity entity );
206
210 bool isValid() const;
211
217 Qgis::SensorThingsEntity childEntity() const;
218
224 void setChildEntity( Qgis::SensorThingsEntity entity );
225
232 QString orderBy() const;
233
240 void setOrderBy( const QString &field );
241
248 Qt::SortOrder sortOrder() const;
249
256 void setSortOrder( Qt::SortOrder order );
257
265 int limit() const;
266
274 void setLimit( int limit );
275
281 QString filter() const;
282
288 void setFilter( const QString &filter );
289
295 QString toString() const;
296
302 static QgsSensorThingsExpansionDefinition fromString( const QString &string );
303
311 QString asQueryString( Qgis::SensorThingsEntity parentEntityType, const QStringList &additionalOptions = QStringList() ) const;
312
313 bool operator==( const QgsSensorThingsExpansionDefinition &other ) const;
314 bool operator!=( const QgsSensorThingsExpansionDefinition &other ) const;
315
316#ifdef SIP_RUN
317 SIP_PYOBJECT __repr__();
318 % MethodCode
319 if ( !sipCpp->isValid() )
320 {
321 sipRes = PyUnicode_FromString( "<QgsSensorThingsExpansionDefinition: invalid>" );
322 }
323 else
324 {
325 QString innerDefinition;
326 if ( !sipCpp->orderBy().isEmpty() )
327 {
328 innerDefinition = QStringLiteral( "by %1 (%2)" ).arg( sipCpp->orderBy(), sipCpp->sortOrder() == Qt::SortOrder::AscendingOrder ? QStringLiteral( "asc" ) : QStringLiteral( "desc" ) );
329 }
330 if ( sipCpp->limit() >= 0 )
331 {
332 if ( !innerDefinition.isEmpty() )
333 innerDefinition = QStringLiteral( "%1, limit %2" ).arg( innerDefinition ).arg( sipCpp->limit() );
334 else
335 innerDefinition = QStringLiteral( "limit %1" ).arg( sipCpp->limit() );
336 }
337 if ( !sipCpp->filter().isEmpty() )
338 {
339 if ( !innerDefinition.isEmpty() )
340 innerDefinition = QStringLiteral( "%1, filter '%2'" ).arg( innerDefinition ).arg( sipCpp->filter() );
341 else
342 innerDefinition = QStringLiteral( "filter '%1'" ).arg( sipCpp->filter() );
343 }
344
345 QString str = QStringLiteral( "<QgsSensorThingsExpansionDefinition: %1%2>" ).arg( qgsEnumValueToKey( sipCpp->childEntity() ), innerDefinition.isEmpty() ? QString() : ( QStringLiteral( " " ) + innerDefinition ) );
346 sipRes = PyUnicode_FromString( str.toUtf8().constData() );
347 }
348 % End
349#endif
350
351 private:
352
354 QString mOrderBy;
355 Qt::SortOrder mSortOrder = Qt::SortOrder::AscendingOrder;
357 QString mFilter;
358
359};
361
362#endif // QGSSENSORTHINGSUTILS_H
SensorThingsEntity
OGC SensorThings API entity types.
Definition qgis.h:5647
@ Invalid
An invalid/unknown entity.
GeometryType
The geometry types are used to group Qgis::WkbType in a coarse way.
Definition qgis.h:337
RelationshipCardinality
Relationship cardinality.
Definition qgis.h:4203
WkbType
The WKB type describes the number of dimensions a geometry has.
Definition qgis.h:256
Base class for feedback objects to be used for cancellation of something running in a worker thread.
Definition qgsfeedback.h:44
Container of fields for a vector layer.
Definition qgsfields.h:46
A rectangle specified with double values.
Encapsulates information about how relationships in a SensorThings API service should be expanded.
Utility functions for working with OGC SensorThings API services.
static constexpr int DEFAULT_EXPANSION_LIMIT
Default limit on number of expanded features fetched.
QString qgsEnumValueToKey(const T &value, bool *returnOk=nullptr)
Returns the value for the given key of an enum.
Definition qgis.h:6316
#define SIP_SKIP
Definition qgis_sip.h:126
#define SIP_OUT
Definition qgis_sip.h:58
Q_DECLARE_METATYPE(QgsDatabaseQueryLogEntry)
bool operator==(const QgsFeatureIterator &fi1, const QgsFeatureIterator &fi2)
bool operator!=(const QgsFeatureIterator &fi1, const QgsFeatureIterator &fi2)