Example #1
0
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 ) );
}
Example #2
0
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 ) );
}