mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-27 00:33:48 -05:00
[Geometry checker] Don't make minimal angle fix produce duplicate nodes
This commit is contained in:
parent
0e30ed8130
commit
13da9f52ff
@ -14,6 +14,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
#include "qgsgeometryanglecheck.h"
|
||||
#include "qgsgeometryutils.h"
|
||||
#include "../utils/qgsfeaturepool.h"
|
||||
|
||||
void QgsGeometryAngleCheck::collectErrors( QList<QgsGeometryCheckError*>& errors, QStringList &/*messages*/, QAtomicInt* progressCounter , const QgsFeatureIds &ids ) const
|
||||
@ -124,9 +125,15 @@ void QgsGeometryAngleCheck::fixError( QgsGeometryCheckError* error, int method,
|
||||
}
|
||||
else
|
||||
{
|
||||
changes[error->featureId()].append( Change( ChangeNode, ChangeRemoved, vidx ) );
|
||||
if ( QgsGeometryUtils::sqrDistance2D( p1, p3 ) < QgsGeometryCheckPrecision::tolerance() * QgsGeometryCheckPrecision::tolerance()
|
||||
&& QgsGeometryCheckerUtils::canDeleteVertex( geometry, vidx.part, vidx.ring ) &&
|
||||
geometry->deleteVertex( error->vidx() ) ) // error->vidx points to p3 after removing p2
|
||||
{
|
||||
changes[error->featureId()].append( Change( ChangeNode, ChangeRemoved, QgsVertexId( vidx.part, vidx.ring, ( vidx.vertex + 1 ) % n ) ) );
|
||||
}
|
||||
mFeaturePool->updateFeature( feature );
|
||||
error->setFixed( method );
|
||||
changes[error->featureId()].append( Change( ChangeNode, ChangeRemoved, vidx ) );
|
||||
}
|
||||
}
|
||||
else
|
||||
|
Loading…
x
Reference in New Issue
Block a user