16#ifndef QGSSENSORTHINGSSHAREDDATA_H
17#define QGSSENSORTHINGSSHAREDDATA_H
26#include <QReadWriteLock>
27#include <QVersionNumber>
38class QgsSensorThingsSharedData
41 QgsSensorThingsSharedData(
const QString &uri );
46 static QUrl parseUrl(
const QUrl &url,
bool *isTestEndpoint =
nullptr );
51 QString error()
const {
return mError; }
53 QgsCoordinateReferenceSystem crs()
const {
return mSourceCRS; }
54 QgsRectangle extent()
const;
55 long long featureCount( QgsFeedback *feedback =
nullptr )
const;
56 QString subsetString()
const;
58 bool hasCachedAllFeatures()
const;
59 bool getFeature(
QgsFeatureId id, QgsFeature &f, QgsFeedback *feedback =
nullptr );
60 QgsFeatureIds getFeatureIdsInExtent(
const QgsRectangle &extent, QgsFeedback *feedback,
const QString &thisPage, QString &nextPage,
const QgsFeatureIds &alreadyFetchedIds );
65 bool processFeatureRequest(
67 QgsFeedback *feedback,
68 const std::function<
void(
const QgsFeature & ) > &fetchedFeatureCallback,
69 const std::function<
bool() > &continueFetchingCallback,
70 const std::function<
void() > &onNoMoreFeaturesCallback
73 friend class QgsSensorThingsProvider;
74 mutable QReadWriteLock mReadWriteLock { QReadWriteLock::Recursive };
77 QgsHttpHeaders mHeaders;
80 mutable QString mError;
82 QVersionNumber mVersion = QVersionNumber( 1, 1 );
83 QString mEntityBaseUri;
84 QString mSubsetString;
85 QString mExpandQueryString;
88 QList< QgsSensorThingsExpansionDefinition > mExpansions;
90 int mFeatureLimit = 0;
92 QString mGeometryField;
95 QgsRectangle mFilterExtent;
98 QgsRectangle mFetchedFeatureExtent;
100 QgsCoordinateReferenceSystem mSourceCRS;
103 mutable long long mRetrievedBaseFeatureCount = 0;
105 QHash<QString, QgsFeatureId> mIotIdToFeatureId;
106 QMap<QgsFeatureId, QgsFeature> mCachedFeatures;
107 QgsGeometry mCachedExtent;
110 bool mHasCachedAllFeatures =
false;
114 QgsSpatialIndex mSpatialIndex;
115 mutable QString mNextPage;
SensorThingsEntity
OGC SensorThings API entity types.
@ Invalid
An invalid/unknown entity.
WkbType
The WKB type describes the number of dimensions a geometry has.
Base class for feedback objects to be used for cancellation of something running in a worker thread.
static constexpr int DEFAULT_PAGE_SIZE
Default page size.
@ Uncounted
Feature count not yet computed.
QSet< QgsFeatureId > QgsFeatureIds
qint64 QgsFeatureId
64 bit feature ids negative numbers are used for uncommitted/newly added features