QGIS API Documentation 3.37.0-Master (fdefdf9c27f)
qgsvectorlayerfeaturecounter.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsvectorlayerfeaturecounter.h
3 ---------------------
4 begin : May 2017
5 copyright : (C) 2017 by Matthias Kuhn
6 email : matthias at opengis dot ch
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 QGSVECTORLAYERFEATURECOUNTER_H
16#define QGSVECTORLAYERFEATURECOUNTER_H
17
19#include "qgsrenderer.h"
20#include "qgstaskmanager.h"
21#include "qgsfeatureid.h"
22
32class CORE_EXPORT QgsVectorLayerFeatureCounter : public QgsTask
33{
34 Q_OBJECT
35
36 public:
37
44 QgsVectorLayerFeatureCounter( QgsVectorLayer *layer, const QgsExpressionContext &context = QgsExpressionContext(), bool storeSymbolFids = false );
46
50 bool run() override;
51
52 void cancel() override;
53
60 QHash<QString, long long> symbolFeatureCountMap() const SIP_SKIP;
61
66 long long featureCount( const QString &legendKey ) const;
67
76 QHash<QString, QgsFeatureIds> symbolFeatureIdMap() const SIP_SKIP;
77
84 QgsFeatureIds featureIds( const QString &symbolkey ) const;
85
86 signals:
87
91 void symbolsCounted();
92
93 private:
95 std::unique_ptr<QgsFeatureRenderer> mRenderer;
96 QgsExpressionContext mExpressionContext;
97 QHash<QString, long long> mSymbolFeatureCountMap;
98 QHash<QString, QgsFeatureIds> mSymbolFeatureIdMap;
99 std::unique_ptr< QgsFeedback > mFeedback;
100 bool mWithFids = false;
101 long mFeatureCount = 0;
102
103};
104
105#endif // QGSVECTORLAYERFEATURECOUNTER_H
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
Base class for feedback objects to be used for cancellation of something running in a worker thread.
Definition: qgsfeedback.h:44
Abstract base class for long running background tasks.
virtual bool run()=0
Performs the task's operation.
virtual void cancel()
Notifies the task that it should terminate.
Counts the features in a QgsVectorLayer in task.
~QgsVectorLayerFeatureCounter() override
Partial snapshot of vector layer's state (only the members necessary for access to features)
Represents a vector layer which manages a vector based data sets.
std::unique_ptr< GEOSGeometry, GeosDeleter > unique_ptr
Scoped GEOS pointer.
Definition: qgsgeos.h:73
#define SIP_SKIP
Definition: qgis_sip.h:126
QSet< QgsFeatureId > QgsFeatureIds
Definition: qgsfeatureid.h:37