16#ifndef QGSSENSORTHINGSSHAREDDATA_H
17#define QGSSENSORTHINGSSHAREDDATA_H
26#include <QReadWriteLock>
37class 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,
67 bool processFeatureRequest( QString &nextPage, QgsFeedback *feedback,
68 const std::function<
void(
const QgsFeature & ) > &fetchedFeatureCallback,
69 const std::function<
bool() > &continueFetchingCallback,
70 const std::function<
void() > &onNoMoreFeaturesCallback );
72 friend class QgsSensorThingsProvider;
73 mutable QReadWriteLock mReadWriteLock{ QReadWriteLock::Recursive };
76 QgsHttpHeaders mHeaders;
79 mutable QString mError;
81 QString mEntityBaseUri;
82 QString mSubsetString;
83 QString mExpandQueryString;
86 QList< QgsSensorThingsExpansionDefinition > mExpansions;
88 int mFeatureLimit = 0;
90 QString mGeometryField;
93 QgsRectangle mFilterExtent;
96 QgsRectangle mFetchedFeatureExtent;
98 QgsCoordinateReferenceSystem mSourceCRS;
101 mutable long long mRetrievedBaseFeatureCount = 0;
103 QHash<QString, QgsFeatureId> mIotIdToFeatureId;
104 QMap<QgsFeatureId, QgsFeature> mCachedFeatures;
105 QgsGeometry mCachedExtent;
108 bool mHasCachedAllFeatures =
false;
112 QgsSpatialIndex mSpatialIndex;
113 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