QGIS API Documentation 3.99.0-Master (21b3aa880ba)
Loading...
Searching...
No Matches
qgscachedfeatureiterator.h
Go to the documentation of this file.
1/***************************************************************************
2 qgscachedfeatureiterator.h
3 --------------------------------------
4 Date : 12.2.2013
5 Copyright : (C) 2013 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
16#ifndef QGSCACHEDFEATUREITERATOR_H
17#define QGSCACHEDFEATUREITERATOR_H
18
19#include "qgis_core.h"
21#include "qgsfeature.h"
22#include "qgsfeatureiterator.h"
23#include "qgsvectorlayercache.h"
24
25#include <QPointer>
26
28
35{
36 public:
37
44 QgsCachedFeatureIterator( QgsVectorLayerCache *vlCache, const QgsFeatureRequest &featureRequest );
45
47
53 bool rewind() override;
54
60 bool close() override;
61
62 // QgsAbstractFeatureIterator interface
63 protected:
64
71 bool fetchFeature( QgsFeature &f ) override;
72
79 bool nextFeatureFilterFids( QgsFeature &f ) override { return fetchFeature( f ); }
80
81 private:
82#ifdef SIP_RUN
84#endif
85
86 QList< QgsFeatureId > mFeatureIds;
87 QPointer< QgsVectorLayerCache > mVectorLayerCache = nullptr;
88 QList< QgsFeatureId >::ConstIterator mFeatureIdIterator;
89 QgsCoordinateTransform mTransform;
90 QgsRectangle mFilterRect;
91
92 QgsGeometry mDistanceWithinGeom;
93 std::unique_ptr< QgsGeometryEngine > mDistanceWithinEngine;
94 double mDistanceWithin = 0;
95};
96
104{
105 public:
106
114
120 bool rewind() override;
121
127 bool close() override;
128
129 protected:
130
137 bool fetchFeature( QgsFeature &f ) override;
138
139 private:
140 QgsFeatureIterator mFeatIt;
141 QPointer< QgsVectorLayerCache > mVectorLayerCache;
142 QgsFeatureIds mFids;
143 QgsCoordinateTransform mTransform;
144 QgsRectangle mFilterRect;
145
146};
147#endif // QGSCACHEDFEATUREITERATOR_H
virtual bool rewind()=0
Resets the iterator to the starting position.
virtual bool fetchFeature(QgsFeature &f)=0
If you write a feature iterator for your provider, this is the method you need to implement!
virtual bool close()=0
Call to end the iteration.
QgsAbstractFeatureIterator(const QgsFeatureRequest &request)
base class constructor - stores the iteration parameters
Delivers features from the cache.
QgsCachedFeatureIterator(QgsVectorLayerCache *vlCache, const QgsFeatureRequest &featureRequest)
This constructor creates a feature iterator, that delivers all cached features.
~QgsCachedFeatureIterator() override
bool nextFeatureFilterFids(QgsFeature &f) override
We have a local special iterator for FilterFids, no need to run the generic.
QgsCachedFeatureWriterIterator(QgsVectorLayerCache *vlCache, const QgsFeatureRequest &featureRequest)
This constructor creates a feature iterator, which queries the backend and caches retrieved features.
Handles coordinate transforms between two coordinate systems.
Wraps a request for features to a vector layer (or directly its vector data provider).
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
Definition qgsfeature.h:58
A geometry is the spatial representation of a feature.
A rectangle specified with double values.
Caches features for a given QgsVectorLayer.
QSet< QgsFeatureId > QgsFeatureIds