29 QgsRectangle bboxA = layerFeatureA.geometry().boundingBox();
31 if ( !geomEngineA->isValid() )
33 messages.append( tr(
"Contained check failed for (%1): the geometry is invalid" ).arg( layerFeatureA.id() ) );
39 if ( layerFeatureA == layerFeatureB )
44 if ( !geomEngineB->isValid() )
46 messages.append( tr(
"Contained check failed for (%1): the geometry is invalid" ).arg( layerFeatureB.id() ) );
51 if ( geomEngineA->contains( layerFeatureB.geometry().constGet(), &errMsg ) && !geomEngineB->contains( layerFeatureA.geometry().constGet(), &errMsg ) && errMsg.isEmpty() )
55 else if ( !errMsg.isEmpty() )
57 messages.append( tr(
"Contained check failed for (%1, %2): %3" ).arg( layerFeatureB.id(), layerFeatureA.id(), errMsg ) );
96 else if ( method ==
Delete )
110 static QStringList methods = QStringList()
111 << tr(
"Delete feature" )
112 << tr(
"No action" );
A rectangle specified with double values.
const QPair< QString, QgsFeatureId > & containingFeature() const
void fixError(const QMap< QString, QgsFeaturePool *> &featurePools, QgsGeometryCheckError *error, int method, const QMap< QString, int > &mergeAttributeIndices, Changes &changes) const override
Fix the error error with the specified method.
bool getFeature(QgsFeatureId id, QgsFeature &feature, QgsFeedback *feedback=nullptr)
Retrieves the feature with the specified id into feature.
QMap< QString, QgsFeatureIds > toMap() const
Contains a set of layers and feature ids in those layers to pass to a geometry check.
QStringList resolutionMethods() const override
Returns a list of descriptions for available resolutions for errors.
void setObsolete()
Set the error status to obsolete.
The feature class encapsulates a single feature including its id, geometry and a list of field/values...
void setFixFailed(const QString &reason)
Set the error status to failed and specify the reason for failure.
Base class for feedback objects to be used for cancelation of something running in a worker thread...
Something has been removed.
A layer feature combination to uniquely identify and access a feature in a set of layers...
QList< QgsWkbTypes::GeometryType > compatibleGeometryTypes() const override
A list of geometry types for which this check can be performed.
QMap< QString, QgsFeatureIds > allLayerFeatureIds(const QMap< QString, QgsFeaturePool *> &featurePools) const
Returns all layers and feature ids.
const QString & layerId() const
The id of the layer on which this error has been detected.
const double tolerance
The tolerance to allow for in geometry checks.
const QgsGeometryCheckContext * mContext
A list of layers and feature ids for each of these layers.
const QgsAbstractGeometry * constGet() const
Returns a non-modifiable (const) reference to the underlying abstract geometry primitive.
void collectErrors(const QMap< QString, QgsFeaturePool *> &featurePools, QList< QgsGeometryCheckError *> &errors, QStringList &messages, QgsFeedback *feedback, const LayerFeatureIds &ids=LayerFeatureIds()) const override
The main worker method.
QMap< QString, QMap< QgsFeatureId, QList< QgsGeometryCheck::Change > > > Changes
A collection of changes.
A feature pool is based on a vector layer and caches features.
Descripts a change to fix a geometry.
void setFixed(int method)
Set the status to fixed and specify the method that has been used to fix the error.
virtual void deleteFeature(QgsFeatureId fid)=0
Removes a feature from this pool.
QgsFeatureId featureId() const
The id of the feature on which this error has been detected.
This represents an error reported by a geometry check.
static std::unique_ptr< QgsGeometryEngine > createGeomEngine(const QgsAbstractGeometry *geometry, double tolerance)
This change happens on feature level.
const QgsGeometry & geometry() const
Returns the geometry of this feature.