From 15f3da60c03f82bbccedf5ac87f4e49832532671 Mon Sep 17 00:00:00 2001 From: Nyall Dawson Date: Fri, 25 Oct 2024 11:53:37 +1000 Subject: [PATCH] Remove redundant duplicate method --- .../geometry_checker/qgsgeometryareacheck.cpp | 2 +- .../geometry_checker/qgsgeometrycheckerutils.cpp | 5 ----- .../geometry_checker/qgsgeometrycheckerutils.h | 2 -- .../qgsgeometrycontainedcheck.cpp | 8 ++++---- .../qgsgeometryduplicatecheck.cpp | 4 ++-- .../qgsgeometryfollowboundariescheck.cpp | 4 ++-- .../geometry_checker/qgsgeometrygapcheck.cpp | 16 ++++++++-------- .../qgsgeometrymissingvertexcheck.cpp | 6 +++--- .../geometry_checker/qgsgeometryoverlapcheck.cpp | 8 ++++---- .../qgsgeometrypointinpolygoncheck.cpp | 2 +- .../qgsgeometryselfintersectioncheck.cpp | 4 ++-- 11 files changed, 27 insertions(+), 34 deletions(-) diff --git a/src/analysis/vector/geometry_checker/qgsgeometryareacheck.cpp b/src/analysis/vector/geometry_checker/qgsgeometryareacheck.cpp index 87cbb290c869..2b0346d47e1a 100644 --- a/src/analysis/vector/geometry_checker/qgsgeometryareacheck.cpp +++ b/src/analysis/vector/geometry_checker/qgsgeometryareacheck.cpp @@ -187,7 +187,7 @@ bool QgsGeometryAreaCheck::mergeWithNeighbor( const QMap geomEngine( QgsGeometryCheckerUtils::createGeomEngine( QgsGeometryCheckerUtils::getGeomPart( mergeGeom, mergePartIdx ), mContext->reducedTolerance ) ); + std::unique_ptr geomEngine( QgsGeometry::createGeometryEngine( QgsGeometryCheckerUtils::getGeomPart( mergeGeom, mergePartIdx ), mContext->reducedTolerance ) ); QgsAbstractGeometry *combinedGeom = geomEngine->combine( QgsGeometryCheckerUtils::getGeomPart( geom, partIdx ), &errMsg ); if ( !combinedGeom || combinedGeom->isEmpty() || !QgsWkbTypes::isSingleType( combinedGeom->wkbType() ) ) { diff --git a/src/analysis/vector/geometry_checker/qgsgeometrycheckerutils.cpp b/src/analysis/vector/geometry_checker/qgsgeometrycheckerutils.cpp index 016c967045e2..9e5bf1a47f5c 100644 --- a/src/analysis/vector/geometry_checker/qgsgeometrycheckerutils.cpp +++ b/src/analysis/vector/geometry_checker/qgsgeometrycheckerutils.cpp @@ -265,11 +265,6 @@ QgsGeometryCheckerUtils::LayerFeatures::iterator QgsGeometryCheckerUtils::LayerF ///////////////////////////////////////////////////////////////////////////// -std::unique_ptr QgsGeometryCheckerUtils::createGeomEngine( const QgsAbstractGeometry *geometry, double tolerance, Qgis::GeosCreationFlags flags ) -{ - return std::make_unique( geometry, tolerance, flags ); -} - QgsAbstractGeometry *QgsGeometryCheckerUtils::getGeomPart( QgsAbstractGeometry *geom, int partIdx ) { if ( QgsGeometryCollection *collection = qgsgeometry_cast( geom ) ) diff --git a/src/analysis/vector/geometry_checker/qgsgeometrycheckerutils.h b/src/analysis/vector/geometry_checker/qgsgeometrycheckerutils.h index 407dc2adbb98..1eab4435f94f 100644 --- a/src/analysis/vector/geometry_checker/qgsgeometrycheckerutils.h +++ b/src/analysis/vector/geometry_checker/qgsgeometrycheckerutils.h @@ -214,8 +214,6 @@ class ANALYSIS_EXPORT QgsGeometryCheckerUtils #ifndef SIP_RUN - static std::unique_ptr createGeomEngine( const QgsAbstractGeometry *geometry, double tolerance, Qgis::GeosCreationFlags flags = Qgis::GeosCreationFlag::SkipEmptyInteriorRings ); - static QgsAbstractGeometry *getGeomPart( QgsAbstractGeometry *geom, int partIdx ); static const QgsAbstractGeometry *getGeomPart( const QgsAbstractGeometry *geom, int partIdx ); diff --git a/src/analysis/vector/geometry_checker/qgsgeometrycontainedcheck.cpp b/src/analysis/vector/geometry_checker/qgsgeometrycontainedcheck.cpp index 786b4b1a336f..8ca11e865ed1 100644 --- a/src/analysis/vector/geometry_checker/qgsgeometrycontainedcheck.cpp +++ b/src/analysis/vector/geometry_checker/qgsgeometrycontainedcheck.cpp @@ -27,7 +27,7 @@ void QgsGeometryContainedCheck::collectErrors( const QMap geomEngineA = QgsGeometryCheckerUtils::createGeomEngine( layerFeatureA.geometry().constGet(), mContext->tolerance ); + std::unique_ptr< QgsGeometryEngine > geomEngineA( QgsGeometry::createGeometryEngine( layerFeatureA.geometry().constGet(), mContext->tolerance ) ); if ( !geomEngineA->isValid() ) { messages.append( tr( "Contained check failed for (%1): the geometry is invalid" ).arg( layerFeatureA.id() ) ); @@ -40,7 +40,7 @@ void QgsGeometryContainedCheck::collectErrors( const QMap geomEngineB = QgsGeometryCheckerUtils::createGeomEngine( layerFeatureB.geometry().constGet(), mContext->tolerance ); + std::unique_ptr< QgsGeometryEngine > geomEngineB( QgsGeometry::createGeometryEngine( layerFeatureB.geometry().constGet(), mContext->tolerance ) ); if ( !geomEngineB->isValid() ) { messages.append( tr( "Contained check failed for (%1): the geometry is invalid" ).arg( layerFeatureB.id() ) ); @@ -79,8 +79,8 @@ void QgsGeometryContainedCheck::fixError( const QMap const QgsGeometryCheckerUtils::LayerFeature layerFeatureA( featurePoolA, featureA, mContext, true ); const QgsGeometryCheckerUtils::LayerFeature layerFeatureB( featurePoolB, featureB, mContext, true ); - std::unique_ptr< QgsGeometryEngine > geomEngineA = QgsGeometryCheckerUtils::createGeomEngine( layerFeatureA.geometry().constGet(), mContext->tolerance ); - std::unique_ptr< QgsGeometryEngine > geomEngineB = QgsGeometryCheckerUtils::createGeomEngine( layerFeatureB.geometry().constGet(), mContext->tolerance ); + std::unique_ptr< QgsGeometryEngine > geomEngineA( QgsGeometry::createGeometryEngine( layerFeatureA.geometry().constGet(), mContext->tolerance ) ); + std::unique_ptr< QgsGeometryEngine > geomEngineB( QgsGeometry::createGeometryEngine( layerFeatureB.geometry().constGet(), mContext->tolerance ) ); if ( !( geomEngineB->contains( layerFeatureA.geometry().constGet() ) && !geomEngineA->contains( layerFeatureB.geometry().constGet() ) ) ) { diff --git a/src/analysis/vector/geometry_checker/qgsgeometryduplicatecheck.cpp b/src/analysis/vector/geometry_checker/qgsgeometryduplicatecheck.cpp index f887008b454e..3ae9c8c9d307 100644 --- a/src/analysis/vector/geometry_checker/qgsgeometryduplicatecheck.cpp +++ b/src/analysis/vector/geometry_checker/qgsgeometryduplicatecheck.cpp @@ -51,7 +51,7 @@ void QgsGeometryDuplicateCheck::collectErrors( const QMap geomEngineA = QgsGeometryCheckerUtils::createGeomEngine( geomA.constGet(), mContext->tolerance, Qgis::GeosCreationFlags() ); + std::unique_ptr< QgsGeometryEngine > geomEngineA( QgsGeometry::createGeometryEngine( geomA.constGet(), mContext->tolerance, Qgis::GeosCreationFlags() ) ); if ( !geomEngineA->isValid() ) { messages.append( tr( "Duplicate check failed for (%1): the geometry is invalid" ).arg( layerFeatureA.id() ) ); @@ -105,7 +105,7 @@ void QgsGeometryDuplicateCheck::fixError( const QMap else if ( method == RemoveDuplicates ) { const QgsGeometryCheckerUtils::LayerFeature layerFeatureA( featurePoolA, featureA, mContext, true ); - std::unique_ptr< QgsGeometryEngine > geomEngineA = QgsGeometryCheckerUtils::createGeomEngine( layerFeatureA.geometry().constGet(), mContext->tolerance ); + std::unique_ptr< QgsGeometryEngine > geomEngineA( QgsGeometry::createGeometryEngine( layerFeatureA.geometry().constGet(), mContext->tolerance ) ); QgsGeometryDuplicateCheckError *duplicateError = static_cast( error ); const QMap> duplicates = duplicateError->duplicates(); diff --git a/src/analysis/vector/geometry_checker/qgsgeometryfollowboundariescheck.cpp b/src/analysis/vector/geometry_checker/qgsgeometryfollowboundariescheck.cpp index 85b9896546f4..07e103256d31 100644 --- a/src/analysis/vector/geometry_checker/qgsgeometryfollowboundariescheck.cpp +++ b/src/analysis/vector/geometry_checker/qgsgeometryfollowboundariescheck.cpp @@ -57,7 +57,7 @@ void QgsGeometryFollowBoundariesCheck::collectErrors( const QMapclone() ); geomt.transform( crst ); - std::unique_ptr< QgsGeometryEngine > geomEngine = QgsGeometryCheckerUtils::createGeomEngine( geomt.constGet(), mContext->tolerance ); + std::unique_ptr< QgsGeometryEngine > geomEngine( QgsGeometry::createGeometryEngine( geomt.constGet(), mContext->tolerance ) ); // Get potential reference features QgsRectangle searchBounds = geomt.constGet()->boundingBox(); @@ -79,7 +79,7 @@ void QgsGeometryFollowBoundariesCheck::collectErrors( const QMap refgeomEngine( QgsGeometryCheckerUtils::createGeomEngine( refGeom, mContext->tolerance ) ); + std::unique_ptr refgeomEngine( QgsGeometry::createGeometryEngine( refGeom, mContext->tolerance ) ); const QgsGeometry reducedRefGeom( refgeomEngine->buffer( -mContext->tolerance, 0 ) ); if ( !( geomEngine->contains( reducedRefGeom.constGet() ) || geomEngine->disjoint( reducedRefGeom.constGet() ) ) ) { diff --git a/src/analysis/vector/geometry_checker/qgsgeometrygapcheck.cpp b/src/analysis/vector/geometry_checker/qgsgeometrygapcheck.cpp index 3ae73119960d..5e5d1cee7f41 100644 --- a/src/analysis/vector/geometry_checker/qgsgeometrygapcheck.cpp +++ b/src/analysis/vector/geometry_checker/qgsgeometrygapcheck.cpp @@ -74,12 +74,12 @@ void QgsGeometryGapCheck::collectErrors( const QMap & allowedGaps.append( gg ); } - std::unique_ptr< QgsGeometryEngine > allowedGapsEngine = QgsGeometryCheckerUtils::createGeomEngine( nullptr, mContext->tolerance ); + std::unique_ptr< QgsGeometryEngine > allowedGapsEngine( QgsGeometry::createGeometryEngine( nullptr, mContext->tolerance ) ); // Create union of allowed gaps QString errMsg; allowedGapsGeom.reset( allowedGapsEngine->combine( allowedGaps, &errMsg ) ); - allowedGapsGeomEngine = QgsGeometryCheckerUtils::createGeomEngine( allowedGapsGeom.get(), mContext->tolerance ); + allowedGapsGeomEngine.reset( QgsGeometry::createGeometryEngine( allowedGapsGeom.get(), mContext->tolerance ) ); allowedGapsGeomEngine->prepareGeometry(); } @@ -102,7 +102,7 @@ void QgsGeometryGapCheck::collectErrors( const QMap & return; } - std::unique_ptr< QgsGeometryEngine > geomEngine = QgsGeometryCheckerUtils::createGeomEngine( nullptr, mContext->tolerance ); + std::unique_ptr< QgsGeometryEngine > geomEngine( QgsGeometry::createGeometryEngine( nullptr, mContext->tolerance ) ); // Create union of geometry QString errMsg; @@ -114,7 +114,7 @@ void QgsGeometryGapCheck::collectErrors( const QMap & } // Get envelope of union - geomEngine = QgsGeometryCheckerUtils::createGeomEngine( unionGeom.get(), mContext->tolerance ); + geomEngine.reset( QgsGeometry::createGeometryEngine( unionGeom.get(), mContext->tolerance ) ); geomEngine->prepareGeometry(); std::unique_ptr envelope( geomEngine->envelope( &errMsg ) ); if ( !envelope ) @@ -124,13 +124,13 @@ void QgsGeometryGapCheck::collectErrors( const QMap & } // Buffer envelope - geomEngine = QgsGeometryCheckerUtils::createGeomEngine( envelope.get(), mContext->tolerance ); + geomEngine.reset( QgsGeometry::createGeometryEngine( envelope.get(), mContext->tolerance ) ); geomEngine->prepareGeometry(); QgsAbstractGeometry *bufEnvelope = geomEngine->buffer( 2, 0, Qgis::EndCapStyle::Square, Qgis::JoinStyle::Miter, 4. ); //#spellok //#spellok envelope.reset( bufEnvelope ); // Compute difference between envelope and union to obtain gap polygons - geomEngine = QgsGeometryCheckerUtils::createGeomEngine( envelope.get(), mContext->tolerance ); + geomEngine.reset( QgsGeometry::createGeometryEngine( envelope.get(), mContext->tolerance ) ); geomEngine->prepareGeometry(); std::unique_ptr diffGeom( geomEngine->difference( unionGeom.get(), &errMsg ) ); if ( !diffGeom ) @@ -162,7 +162,7 @@ void QgsGeometryGapCheck::collectErrors( const QMap & // Get neighboring polygons QMap neighboringIds; const QgsGeometryCheckerUtils::LayerFeatures layerFeatures( featurePools, featureIds.keys(), gapAreaBBox, compatibleGeometryTypes(), mContext ); - std::unique_ptr< QgsGeometryEngine > gapGeomEngine = QgsGeometryCheckerUtils::createGeomEngine( gapGeom, mContext->tolerance ); + std::unique_ptr< QgsGeometryEngine > gapGeomEngine( QgsGeometry::createGeometryEngine( gapGeom, mContext->tolerance ) ); gapGeomEngine->prepareGeometry(); for ( const QgsGeometryCheckerUtils::LayerFeature &layerFeature : layerFeatures ) { @@ -407,7 +407,7 @@ bool QgsGeometryGapCheck::mergeWithNeighbor( const QMaptransform( ct, Qgis::TransformDirection::Reverse ); const QgsGeometry mergeFeatureGeom = mergeFeature.geometry(); const QgsAbstractGeometry *mergeGeom = mergeFeatureGeom.constGet(); - std::unique_ptr< QgsGeometryEngine > geomEngine = QgsGeometryCheckerUtils::createGeomEngine( errLayerGeom.get(), 0 ); + std::unique_ptr< QgsGeometryEngine > geomEngine( QgsGeometry::createGeometryEngine( errLayerGeom.get(), 0 ) ); std::unique_ptr combinedGeom( geomEngine->combine( QgsGeometryCheckerUtils::getGeomPart( mergeGeom, mergePartIdx ), &errMsg ) ); if ( !combinedGeom || combinedGeom->isEmpty() || !QgsWkbTypes::isSingleType( combinedGeom->wkbType() ) ) { diff --git a/src/analysis/vector/geometry_checker/qgsgeometrymissingvertexcheck.cpp b/src/analysis/vector/geometry_checker/qgsgeometrymissingvertexcheck.cpp index 851944d52ac5..d23e81069be0 100644 --- a/src/analysis/vector/geometry_checker/qgsgeometrymissingvertexcheck.cpp +++ b/src/analysis/vector/geometry_checker/qgsgeometrymissingvertexcheck.cpp @@ -130,17 +130,17 @@ void QgsGeometryMissingVertexCheck::processPolygon( const QgsCurvePolygon *polyg const QgsFeature ¤tFeature = layerFeature.feature(); std::unique_ptr boundaries = std::make_unique(); - std::unique_ptr< QgsGeometryEngine > geomEngine = QgsGeometryCheckerUtils::createGeomEngine( polygon->exteriorRing()->clone(), mContext->tolerance ); + std::unique_ptr< QgsGeometryEngine > geomEngine( QgsGeometry::createGeometryEngine( polygon->exteriorRing()->clone(), mContext->tolerance ) ); boundaries->addGeometry( geomEngine->buffer( mContext->tolerance, 5 ) ); const int numRings = polygon->numInteriorRings(); for ( int i = 0; i < numRings; ++i ) { - geomEngine = QgsGeometryCheckerUtils::createGeomEngine( polygon->interiorRing( i ), mContext->tolerance ); + geomEngine.reset( QgsGeometry::createGeometryEngine( polygon->interiorRing( i ), mContext->tolerance ) ); boundaries->addGeometry( geomEngine->buffer( mContext->tolerance, 5 ) ); } - geomEngine = QgsGeometryCheckerUtils::createGeomEngine( boundaries.get(), mContext->tolerance ); + geomEngine.reset( QgsGeometry::createGeometryEngine( boundaries.get(), mContext->tolerance ) ); geomEngine->prepareGeometry(); const QgsFeatureIds fids = featurePool->getIntersects( boundaries->boundingBox() ); diff --git a/src/analysis/vector/geometry_checker/qgsgeometryoverlapcheck.cpp b/src/analysis/vector/geometry_checker/qgsgeometryoverlapcheck.cpp index b5504f0c07e0..055f8f4d948c 100644 --- a/src/analysis/vector/geometry_checker/qgsgeometryoverlapcheck.cpp +++ b/src/analysis/vector/geometry_checker/qgsgeometryoverlapcheck.cpp @@ -44,7 +44,7 @@ void QgsGeometryOverlapCheck::collectErrors( const QMap geomEngineA = QgsGeometryCheckerUtils::createGeomEngine( geomA.constGet(), mContext->tolerance ); + std::unique_ptr< QgsGeometryEngine > geomEngineA( QgsGeometry::createGeometryEngine( geomA.constGet(), mContext->tolerance ) ); geomEngineA->prepareGeometry(); if ( !geomEngineA->isValid() ) { @@ -112,7 +112,7 @@ void QgsGeometryOverlapCheck::fixError( const QMap &f const QgsGeometryCheckerUtils::LayerFeature layerFeatureA( featurePoolA, featureA, mContext, true ); const QgsGeometryCheckerUtils::LayerFeature layerFeatureB( featurePoolB, featureB, mContext, true ); const QgsGeometry geometryA = layerFeatureA.geometry(); - std::unique_ptr< QgsGeometryEngine > geomEngineA = QgsGeometryCheckerUtils::createGeomEngine( geometryA.constGet(), mContext->tolerance ); + std::unique_ptr< QgsGeometryEngine > geomEngineA( QgsGeometry::createGeometryEngine( geometryA.constGet(), mContext->tolerance ) ); geomEngineA->prepareGeometry(); const QgsGeometry geometryB = layerFeatureB.geometry(); @@ -153,7 +153,7 @@ void QgsGeometryOverlapCheck::fixError( const QMap &f } else if ( method == Subtract ) { - std::unique_ptr< QgsGeometryEngine > geomEngineDiffA = QgsGeometryCheckerUtils::createGeomEngine( geometryA.constGet(), 0 ); + std::unique_ptr< QgsGeometryEngine > geomEngineDiffA( QgsGeometry::createGeometryEngine( geometryA.constGet(), 0 ) ); std::unique_ptr< QgsAbstractGeometry > diff1( geomEngineDiffA->difference( interPart, &errMsg ) ); if ( !diff1 || diff1->isEmpty() ) { @@ -163,7 +163,7 @@ void QgsGeometryOverlapCheck::fixError( const QMap &f { QgsGeometryCheckerUtils::filter1DTypes( diff1.get() ); } - std::unique_ptr< QgsGeometryEngine > geomEngineDiffB = QgsGeometryCheckerUtils::createGeomEngine( geometryB.constGet(), 0 ); + std::unique_ptr< QgsGeometryEngine > geomEngineDiffB( QgsGeometry::createGeometryEngine( geometryB.constGet(), 0 ) ); std::unique_ptr< QgsAbstractGeometry > diff2( geomEngineDiffB->difference( interPart, &errMsg ) ); if ( !diff2 || diff2->isEmpty() ) { diff --git a/src/analysis/vector/geometry_checker/qgsgeometrypointinpolygoncheck.cpp b/src/analysis/vector/geometry_checker/qgsgeometrypointinpolygoncheck.cpp index 419fd7dec23e..96fcd50071e6 100644 --- a/src/analysis/vector/geometry_checker/qgsgeometrypointinpolygoncheck.cpp +++ b/src/analysis/vector/geometry_checker/qgsgeometrypointinpolygoncheck.cpp @@ -44,7 +44,7 @@ void QgsGeometryPointInPolygonCheck::collectErrors( const QMap testGeomEngine = QgsGeometryCheckerUtils::createGeomEngine( testGeom, mContext->reducedTolerance ); + std::unique_ptr< QgsGeometryEngine > testGeomEngine( QgsGeometry::createGeometryEngine( testGeom, mContext->reducedTolerance ) ); if ( !testGeomEngine->isValid() ) { messages.append( tr( "Point in polygon check failed for (%1): the geometry is invalid" ).arg( checkFeature.id() ) ); diff --git a/src/analysis/vector/geometry_checker/qgsgeometryselfintersectioncheck.cpp b/src/analysis/vector/geometry_checker/qgsgeometryselfintersectioncheck.cpp index 7483c303790f..ca1c045470ae 100644 --- a/src/analysis/vector/geometry_checker/qgsgeometryselfintersectioncheck.cpp +++ b/src/analysis/vector/geometry_checker/qgsgeometryselfintersectioncheck.cpp @@ -191,8 +191,8 @@ void QgsGeometrySelfIntersectionCheck::fixError( const QMapsetExteriorRing( ringGeom2.release() ); // Reassing interiors as necessary - std::unique_ptr< QgsGeometryEngine > geomEnginePoly1 = QgsGeometryCheckerUtils::createGeomEngine( poly, mContext->tolerance ); - std::unique_ptr< QgsGeometryEngine > geomEnginePoly2 = QgsGeometryCheckerUtils::createGeomEngine( poly2.get(), mContext->tolerance ); + std::unique_ptr< QgsGeometryEngine > geomEnginePoly1( QgsGeometry::createGeometryEngine( poly, mContext->tolerance ) ); + std::unique_ptr< QgsGeometryEngine > geomEnginePoly2( QgsGeometry::createGeometryEngine( poly2.get(), mContext->tolerance ) ); for ( int n = poly->numInteriorRings(), i = n - 1; i >= 0; --i ) { if ( !geomEnginePoly1->contains( poly->interiorRing( i ) ) )