topolTest::topolTest( QgisInterface *qgsIface ) { qgsInterface = qgsIface; mTestCanceled = false; // one layer tests mTopologyRuleMap.insert( tr( "must not have invalid geometries" ), TopologyRule( &topolTest::checkValid, false, false, QList<QgsWkbTypes::GeometryType>() << QgsWkbTypes::PointGeometry << QgsWkbTypes::PolygonGeometry << QgsWkbTypes::LineGeometry ) ); mTopologyRuleMap.insert( tr( "must not have dangles" ), TopologyRule( &topolTest::checkDanglingLines, false, false, QList<QgsWkbTypes::GeometryType>() << QgsWkbTypes::LineGeometry ) ); mTopologyRuleMap.insert( tr( "must not have duplicates" ), TopologyRule( &topolTest::checkDuplicates, false, true, QList<QgsWkbTypes::GeometryType>() << QgsWkbTypes::PointGeometry << QgsWkbTypes::PolygonGeometry << QgsWkbTypes::LineGeometry ) ); mTopologyRuleMap.insert( tr( "must not have pseudos" ), TopologyRule( &topolTest::checkPseudos, false, false, QList<QgsWkbTypes::GeometryType>() << QgsWkbTypes::LineGeometry ) ); mTopologyRuleMap.insert( tr( "must not overlap" ), TopologyRule( &topolTest::checkOverlaps, false, true, QList<QgsWkbTypes::GeometryType>() << QgsWkbTypes::PolygonGeometry ) ); mTopologyRuleMap.insert( tr( "must not have gaps" ), TopologyRule( &topolTest::checkGaps, false, false, QList<QgsWkbTypes::GeometryType>() << QgsWkbTypes::PolygonGeometry ) ); mTopologyRuleMap.insert( tr( "must not have multi-part geometries" ), TopologyRule( &topolTest::checkMultipart, false, false, QList<QgsWkbTypes::GeometryType>() << QgsWkbTypes::PointGeometry << QgsWkbTypes::PolygonGeometry << QgsWkbTypes::LineGeometry ) ); // two layer tests mTopologyRuleMap.insert( tr( "must not overlap with" ), TopologyRule( &topolTest::checkOverlapWithLayer, true, true, QList<QgsWkbTypes::GeometryType>() << QgsWkbTypes::PolygonGeometry, QList<QgsWkbTypes::GeometryType>() << QgsWkbTypes::PolygonGeometry ) ); mTopologyRuleMap.insert( tr( "must be covered by" ), TopologyRule( &topolTest::checkPointCoveredBySegment, true, true, QList<QgsWkbTypes::GeometryType>() << QgsWkbTypes::PointGeometry, QList<QgsWkbTypes::GeometryType>() << QgsWkbTypes::LineGeometry << QgsWkbTypes::PolygonGeometry ) ); mTopologyRuleMap.insert( tr( "must be covered by endpoints of" ), TopologyRule( &topolTest::checkPointCoveredByLineEnds, true, true, QList<QgsWkbTypes::GeometryType>() << QgsWkbTypes::PointGeometry, QList<QgsWkbTypes::GeometryType>() << QgsWkbTypes::LineGeometry ) ); mTopologyRuleMap.insert( tr( "end points must be covered by" ), TopologyRule( &topolTest::checkyLineEndsCoveredByPoints, true, true, QList<QgsWkbTypes::GeometryType>() << QgsWkbTypes::LineGeometry, QList<QgsWkbTypes::GeometryType>() << QgsWkbTypes::PointGeometry ) ); mTopologyRuleMap.insert( tr( "must be inside" ), TopologyRule( &topolTest::checkPointInPolygon, true, true, QList<QgsWkbTypes::GeometryType>() << QgsWkbTypes::PointGeometry, QList<QgsWkbTypes::GeometryType>() << QgsWkbTypes::PolygonGeometry ) ); mTopologyRuleMap.insert( tr( "must contain" ), TopologyRule( &topolTest::checkPolygonContainsPoint, true, true, QList<QgsWkbTypes::GeometryType>() << QgsWkbTypes::PolygonGeometry, QList<QgsWkbTypes::GeometryType>() << QgsWkbTypes::PointGeometry ) ); }
topolTest::topolTest( QgisInterface* qgsIface ) { theQgsInterface = qgsIface; mTestCancelled = false; // one layer tests mTopologyRuleMap.insert( tr( "must not have invalid geometries" ), TopologyRule( &topolTest::checkValid, false, false, false, QList<QGis::GeometryType>() << QGis::Point << QGis::Polygon << QGis::Line ) ); #if 0 mTopologyRuleMap.insert( tr( "segments must have minimum length" ), TopologyRule( &topolTest::checkSegmentLength, false, true, false ) ); #endif mTopologyRuleMap.insert( tr( "must not have dangles" ), TopologyRule( &topolTest::checkDanglingLines, false, false, false, QList<QGis::GeometryType>() << QGis::Line ) ); mTopologyRuleMap.insert( tr( "must not have duplicates" ), TopologyRule( &topolTest::checkDuplicates, false, false, true, QList<QGis::GeometryType>() << QGis::Point << QGis::Polygon << QGis::Line ) ); mTopologyRuleMap.insert( tr( "must not have pseudos" ), TopologyRule( &topolTest::checkPseudos, false, false, false, QList<QGis::GeometryType>() << QGis::Line ) ); mTopologyRuleMap.insert( tr( "must not overlap" ), TopologyRule( &topolTest::checkOverlaps, false, false, true, QList<QGis::GeometryType>() << QGis::Polygon ) ); mTopologyRuleMap.insert( tr( "must not have gaps" ), TopologyRule( &topolTest::checkGaps, false, false, false, QList<QGis::GeometryType>() << QGis::Polygon ) ); mTopologyRuleMap.insert( tr( "must not have multi-part geometries" ), TopologyRule( &topolTest::checkMultipart, false, false, false, QList<QGis::GeometryType>() << QGis::Point << QGis::Polygon << QGis::Line ) ); // two layer tests mTopologyRuleMap.insert( tr( "must not overlap with" ), TopologyRule( &topolTest::checkOverlapWithLayer, true, false, true, QList<QGis::GeometryType>() << QGis::Polygon, QList<QGis::GeometryType>() << QGis::Polygon ) ); mTopologyRuleMap.insert( tr( "must be covered by" ), TopologyRule( &topolTest::checkPointCoveredBySegment, true, false, true, QList<QGis::GeometryType>() << QGis::Point, QList<QGis::GeometryType>() << QGis::Line << QGis::Polygon ) ); #if 0 mTopologyRuleMap.insert( tr( "features must not be closer than tolerance" ), TopologyRule( &topolTest::checkCloseFeature, true, false, false ) ); #endif mTopologyRuleMap.insert( tr( "must be covered by endpoints of" ), TopologyRule( &topolTest::checkPointCoveredByLineEnds, true, false, true, QList<QGis::GeometryType>() << QGis::Point, QList<QGis::GeometryType>() << QGis::Line ) ); mTopologyRuleMap.insert( tr( "end points must be covered by" ), TopologyRule( &topolTest::checkyLineEndsCoveredByPoints, true, false, true, QList<QGis::GeometryType>() << QGis::Line, QList<QGis::GeometryType>() << QGis::Point ) ); mTopologyRuleMap.insert( tr( "must be inside" ), TopologyRule( &topolTest::checkPointInPolygon, true, false, true, QList<QGis::GeometryType>() << QGis::Point, QList<QGis::GeometryType>() << QGis::Polygon ) ); mTopologyRuleMap.insert( tr( "must contain" ), TopologyRule( &topolTest::checkPolygonContainsPoint, true, false, true, QList<QGis::GeometryType>() << QGis::Polygon, QList<QGis::GeometryType>() << QGis::Point ) ); }