Skip to content

Commit f0116b4

Browse files
committedOct 23, 2017
[Geometry checker] Use reduced tolerance when attempting to combine two geometries, and ensure that the output is a single-part geometry
1 parent fde740a commit f0116b4

File tree

2 files changed

+4
-4
lines changed

2 files changed

+4
-4
lines changed
 

‎src/analysis/vector/geometry_checker/qgsgeometryareacheck.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -179,9 +179,9 @@ bool QgsGeometryAreaCheck::mergeWithNeighbor( const QString &layerId, QgsFeature
179179
// Merge geometries
180180
QgsGeometry mergeFeatureGeom = mergeFeature.geometry();
181181
QgsAbstractGeometry *mergeGeom = mergeFeatureGeom.geometry();
182-
QSharedPointer<QgsGeometryEngine> geomEngine = QgsGeometryCheckerUtils::createGeomEngine( QgsGeometryCheckerUtils::getGeomPart( mergeGeom, mergePartIdx ), mContext->tolerance );
182+
QSharedPointer<QgsGeometryEngine> geomEngine = QgsGeometryCheckerUtils::createGeomEngine( QgsGeometryCheckerUtils::getGeomPart( mergeGeom, mergePartIdx ), mContext->reducedTolerance );
183183
QgsAbstractGeometry *combinedGeom = geomEngine->combine( QgsGeometryCheckerUtils::getGeomPart( geom, partIdx ), &errMsg );
184-
if ( !combinedGeom || combinedGeom->isEmpty() )
184+
if ( !combinedGeom || combinedGeom->isEmpty() || !QgsWkbTypes::isSingleType( combinedGeom->wkbType() ) )
185185
{
186186
return false;
187187
}

‎src/analysis/vector/geometry_checker/qgsgeometrygapcheck.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -195,10 +195,10 @@ bool QgsGeometryGapCheck::mergeWithNeighbor( QgsGeometryGapCheckError *err, Chan
195195
errLayerGeom->transform( featurePool->getLayerToMapTransform(), QgsCoordinateTransform::ReverseTransform );
196196
QgsGeometry mergeFeatureGeom = mergeFeature.geometry();
197197
QgsAbstractGeometry *mergeGeom = mergeFeatureGeom.geometry();
198-
QSharedPointer<QgsGeometryEngine> geomEngine = QgsGeometryCheckerUtils::createGeomEngine( errLayerGeom, mContext->tolerance );
198+
QSharedPointer<QgsGeometryEngine> geomEngine = QgsGeometryCheckerUtils::createGeomEngine( errLayerGeom, mContext->reducedTolerance );
199199
QgsAbstractGeometry *combinedGeom = geomEngine->combine( QgsGeometryCheckerUtils::getGeomPart( mergeGeom, mergePartIdx ), &errMsg );
200200
delete errLayerGeom;
201-
if ( !combinedGeom || combinedGeom->isEmpty() )
201+
if ( !combinedGeom || combinedGeom->isEmpty() || !QgsWkbTypes::isSingleType( combinedGeom->wkbType() ) )
202202
{
203203
delete combinedGeom;
204204
return false;

0 commit comments

Comments
 (0)
Please sign in to comment.