QGIS API Documentation
3.26.3-Buenos Aires (65e4edfdad)
|
Go to the documentation of this file.
41 if ( mUseCachedFeatures )
43 if ( mFeatureIterator != mCachedFeatures.constEnd() )
45 f = mFeatureIterator->mFeature;
198 Q_UNUSED( simplifyMethod )
202 void QgsAbstractFeatureIterator::setupOrderBy(
const QList<QgsFeatureRequest::OrderByClause> &orderBys )
205 if ( !orderBys.isEmpty() && !prepareOrderBy( orderBys ) )
210 QList<QgsFeatureRequest::OrderByClause> preparedOrderBys( orderBys );
211 QList<QgsFeatureRequest::OrderByClause>::iterator orderByIt( preparedOrderBys.begin() );
216 orderByIt->prepare( expressionContext );
218 while ( ++orderByIt != preparedOrderBys.end() );
222 indexedFeature.
mIndexes.resize( preparedOrderBys.size() );
226 expressionContext->setFeature( indexedFeature.
mFeature );
228 const auto constPreparedOrderBys = preparedOrderBys;
231 indexedFeature.
mIndexes.replace( i++, orderBy.expression().evaluate( expressionContext ) );
237 mCachedFeatures.append( indexedFeature );
240 std::sort( mCachedFeatures.begin(), mCachedFeatures.end(), QgsExpressionSorter( preparedOrderBys ) );
242 mFeatureIterator = mCachedFeatures.constBegin();
243 mUseCachedFeatures =
true;
251 Q_UNUSED( methodType )
255 bool QgsAbstractFeatureIterator::prepareOrderBy(
const QList<QgsFeatureRequest::OrderByClause> &orderBys )
269 if (
this != &other )
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
int refs
reference counting (to allow seamless copying of QgsFeatureIterator instances)
The OrderByClause class represents an order by clause for a QgsFeatureRequest.
RequestToSourceCrsResult
Possible results from the updateRequestToSourceCrs() method.
This class contains information about how to simplify geometries fetched from a QgsFeatureIterator.
const QgsFeatureIds & filterFids() const
Returns the feature IDs that should be fetched.
@ NoFilter
No spatial filtering of features.
QgsFeedback * feedback() const
Returns the feedback object that can be queried regularly by the iterator to check if it should be ca...
virtual void setInterruptionChecker(QgsFeedback *interruptionChecker)
Attach an object that can be queried regularly by the iterator to check if it must stopped.
Qgis::GeometryOperationResult transform(const QgsCoordinateTransform &ct, Qgis::TransformDirection direction=Qgis::TransformDirection::Forward, bool transformZ=false) SIP_THROW(QgsCsException)
Transforms this geometry as described by the coordinate transform ct.
virtual bool isValid() const
Returns if this iterator is valid.
FilterType filterType() const
Returns the attribute/ID filter type which is currently set on this request.
@ FilterFids
Filter using feature IDs.
@ DistanceWithinMustBeCheckedManually
The distance within request cannot be losslessly updated to the source CRS, and callers will need to ...
bool isCanceled() const SIP_HOLDGIL
Tells whether the operation has been canceled already.
QgsRectangle filterRect() const
Returns the rectangle from which features will be taken.
long long mFetchedCount
Number of features already fetched by iterator.
QgsFeatureRequest mRequest
A copy of the feature request.
virtual bool nextFeatureFilterExpression(QgsFeature &f)
By default, the iterator will fetch all features and check if the feature matches the expression.
virtual bool nextFeature(QgsFeature &f)
fetch next feature, return true on success
A rectangle specified with double values.
QgsExpressionContext * expressionContext()
Returns the expression context used to evaluate filter expressions.
void clearGeometry()
Removes any geometry associated with the feature.
QgsFeatureRequest & setFilterRect(const QgsRectangle &rectangle)
Sets the rectangle from which features will be taken.
QgsRectangle filterRectToSourceCrs(const QgsCoordinateTransform &transform) const SIP_THROW(QgsCsException)
Returns a rectangle representing the original request's QgsFeatureRequest::filterRect().
This class wraps a request for features to a vector layer (or directly its vector data provider).
bool mZombie
A feature iterator may be closed already but still be serving features from the cache.
Custom exception class for Coordinate Reference System related exceptions.
long long limit() const
Returns the maximum number of features to request, or -1 if no limit set.
void setGeometry(const QgsGeometry &geometry)
Set the feature's geometry.
Base class for feedback objects to be used for cancellation of something running in a worker thread.
QgsExpression * filterExpression() const
Returns the filter expression (if set).
#define BUILTIN_UNREACHABLE
@ FilterExpression
Filter using expression.
void geometryToDestinationCrs(QgsFeature &feature, const QgsCoordinateTransform &transform) const
Transforms feature's geometry according to the specified coordinate transform.
QgsAbstractFeatureIterator(const QgsFeatureRequest &request)
base class constructor - stores the iteration parameters
Qgis::SpatialFilterType spatialFilterType() const
Returns the spatial filter type which is currently set on this request.
QVariant evaluate()
Evaluate the feature and return the result.
virtual bool nextFeatureFilterFids(QgsFeature &f)
By default, the iterator will fetch all features and check if the id is in the request.
A geometry is the spatial representation of a feature.
OrderBy orderBy() const
Returns a list of order by clauses specified for this feature request.
bool hasGeometry() const
Returns true if the feature has an associated geometry.
Temporarily used structure to cache order by information.
@ BoundingBox
Filter using a bounding box.
virtual bool fetchFeature(QgsFeature &f)=0
If you write a feature iterator for your provider, this is the method you need to implement!...
void deref()
Remove reference, delete if refs == 0.
const QgsSimplifyMethod & simplifyMethod() const
Returns the simplification method for geometries that will be fetched.
QgsFeatureIterator & operator=(const QgsFeatureIterator &other)
bool compileFailed() const
Indicator if there was an error when sending the compiled query to the server.
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
RequestToSourceCrsResult updateRequestToSourceCrs(QgsFeatureRequest &request, const QgsCoordinateTransform &transform) const SIP_THROW(QgsCsException)
Update a QgsFeatureRequest so that spatial filters are transformed to the source's coordinate referen...
QVector< QVariant > mIndexes
std::function< void(const QgsFeature &) > transformErrorCallback() const
Returns the callback function to use when encountering a transform error when iterating features and ...
QgsAbstractFeatureIterator * mIter
Wrapper for iterator of features from vector data provider or vector layer.
bool isNull() const
Test if the rectangle is null (all coordinates zero or after call to setMinimal()).
bool isValid() const
Will return if this iterator is valid.
@ DistanceWithin
Filter by distance to reference geometry.
@ Success
Request was successfully updated to the source CRS, or no changes were required.
virtual bool prepareSimplification(const QgsSimplifyMethod &simplifyMethod)
Setup the simplification of geometries to fetch using the specified simplify method.
void setFeature(const QgsFeature &feature)
Convenience function for setting a feature for the context.