@@ -60,12 +60,15 @@ void QgsGeometryDuplicateCheck::collectErrors( QList<QgsGeometryCheckError *> &e
60
60
QList<QString> layerIds = featureIds.keys ();
61
61
for ( const QgsGeometryCheckerUtils::LayerFeature &layerFeatureA : layerFeaturesA )
62
62
{
63
+ // Ensure each pair of layers only gets compared once: remove the current layer from the layerIds, but add it to the layerList for layerFeaturesB
64
+ layerIds.removeOne ( layerFeatureA.layer ().id () );
65
+
63
66
QgsRectangle bboxA = layerFeatureA.geometry ()->boundingBox ();
64
67
QSharedPointer<QgsGeometryEngine> geomEngineA = QgsGeometryCheckerUtils::createGeomEngine ( layerFeatureA.geometry (), mContext ->tolerance );
65
68
QMap<QString, QList<QgsFeatureId>> duplicates;
66
69
67
70
QgsWkbTypes::GeometryType geomType = layerFeatureA.feature ().geometry ().type ();
68
- QgsGeometryCheckerUtils::LayerFeatures layerFeaturesB ( mContext ->featurePools , layerIds, bboxA, {geomType} );
71
+ QgsGeometryCheckerUtils::LayerFeatures layerFeaturesB ( mContext ->featurePools , QList<QString>() << layerFeatureA. layer (). id () << layerIds, bboxA, {geomType} );
69
72
for ( const QgsGeometryCheckerUtils::LayerFeature &layerFeatureB : layerFeaturesB )
70
73
{
71
74
// > : only report overlaps within same layer once
@@ -101,8 +104,6 @@ void QgsGeometryDuplicateCheck::collectErrors( QList<QgsGeometryCheckError *> &e
101
104
{
102
105
errors.append ( new QgsGeometryDuplicateCheckError ( this , layerFeatureA, layerFeatureA.geometry ()->centroid (), duplicates ) );
103
106
}
104
- // Don't check already checked layers
105
- layerIds.removeOne ( layerFeatureA.layer ().id () );
106
107
}
107
108
}
108
109
0 commit comments