Ejemplo n.º 1
0
        public void CanAllowSingleConnectedLineShorterThanNearDistance()
        {
            const string testName = "CanAllowSingleConnectedLineShorterThanNearDistance";

            IFeatureClass lineClass = CreateFeatureClass(string.Format("{0}_lines", testName),
                                                         esriGeometryType.esriGeometryPolyline);

            IFeature longLine = lineClass.CreateFeature();

            longLine.Shape = CurveConstruction.StartLine(0, 0)
                             .LineTo(100, 0)
                             .Curve;
            longLine.Store();

            IFeature shortLine = lineClass.CreateFeature();

            shortLine.Shape = CurveConstruction.StartLine(100, 0)
                              .LineTo(101, 0)
                              .Curve;
            shortLine.Store();

            IEnvelope verificationEnvelope = GeometryFactory.CreateEnvelope(0, 0, 500, 500);

            var test = new QaNodeLineCoincidence(lineClass, new[] { lineClass }, 2, false);

            var runner = new QaContainerTestRunner(1000, test);

            runner.Execute(verificationEnvelope);

            AssertUtils.NoError(runner);
        }
Ejemplo n.º 2
0
        public void CanReportManyErrors()
        {
            const string testName = "CanReportManyErrors";

            IFeatureClass nodeClass = CreateFeatureClass(string.Format("{0}_node", testName),
                                                         esriGeometryType.esriGeometryPoint);
            IFeatureClass nearClass = CreateFeatureClass(string.Format("{0}_near", testName),
                                                         esriGeometryType.esriGeometryPolyline);

            var nearClasses = new List <IFeatureClass> {
                nearClass
            };

            IFeature nodeRow = nodeClass.CreateFeature();

            nodeRow.Shape = GeometryFactory.CreatePoint(0, 0);
            nodeRow.Store();
            IFeature nodeRow1 = nodeClass.CreateFeature();

            nodeRow1.Shape = GeometryFactory.CreatePoint(4, 4);
            nodeRow1.Store();
            IFeature nodeRow2 = nodeClass.CreateFeature();

            nodeRow2.Shape = GeometryFactory.CreatePoint(1, 4);
            nodeRow2.Store();
            IFeature nodeRow3 = nodeClass.CreateFeature();

            nodeRow3.Shape = GeometryFactory.CreatePoint(5, 3);
            nodeRow3.Store();

            IFeature nearRow = nearClass.CreateFeature();

            nearRow.Shape = CurveConstruction.StartLine(1, 1)
                            .LineTo(2, 1)
                            .LineTo(3, 3)
                            .LineTo(1, 2)
                            .LineTo(1, 3)
                            .Curve;
            nearRow.Store();

            IEnvelope verificationEnvelope = GeometryFactory.CreateEnvelope(0, 0, 500, 500);

            var test = new QaNodeLineCoincidence(nodeClass, nearClasses, 4);

            var runner = new QaContainerTestRunner(1000, test);

            runner.Execute(verificationEnvelope);

            Assert.AreEqual(4, runner.Errors.Count);
        }
Ejemplo n.º 3
0
        public void CanReportErrorUseMultipleTolerancesInTileLeft()
        {
            const string testName = "CanReportErrorUseMultipleTolerancesInTileLeft";

            IFeatureClass nodeClass = CreateFeatureClass(string.Format("{0}_node", testName),
                                                         esriGeometryType.esriGeometryPoint);
            IFeatureClass nearClass = CreateFeatureClass(string.Format("{0}_near", testName),
                                                         esriGeometryType.esriGeometryPolyline);
            IFeatureClass nearClass1 = CreateFeatureClass(string.Format("{0}_near1", testName),
                                                          esriGeometryType.esriGeometryPolyline);

            var nearClasses = new List <IFeatureClass> {
                nearClass, nearClass1
            };

            IFeature nodeRow = nodeClass.CreateFeature();

            nodeRow.Shape = GeometryFactory.CreatePoint(201, 199);
            nodeRow.Store();

            IFeature nearRow = nearClass.CreateFeature();

            nearRow.Shape = CurveConstruction.StartLine(199, 198)
                            .LineTo(100, 100)
                            .Curve;
            nearRow.Store();

            IFeature nearRow1 = nearClass1.CreateFeature();

            nearRow1.Shape = CurveConstruction.StartLine(100, 205)
                             .LineTo(199, 199)
                             .LineTo(100, 103)
                             .Curve;
            nearRow1.Store();

            IEnvelope verificationEnvelope = GeometryFactory.CreateEnvelope(0, 0, 500, 500);

            var test = new QaNodeLineCoincidence(nodeClass, nearClasses,
                                                 new List <double> {
                2.0, 3.0
            }, 0, false, false);

            var runner = new QaContainerTestRunner(200, test);

            runner.Execute(verificationEnvelope);

            AssertUtils.OneError(runner,
                                 "NodeLineCoincidence.NodeTooCloseToLine.BetweenFeatures");
        }
Ejemplo n.º 4
0
        public void CanReportVertexInLeftTileByNearDistance()
        {
            const string testName = "CanReportVertexInLeftTileByNearDistance";

            IFeatureClass nodeClass = CreateFeatureClass(string.Format("{0}_node", testName),
                                                         esriGeometryType.esriGeometryPoint);
            IFeatureClass nearClass = CreateFeatureClass(string.Format("{0}_near", testName),
                                                         esriGeometryType.esriGeometryPolyline);

            var nearClasses = new List <IFeatureClass> {
                nearClass
            };

            IFeature nodeRow = nodeClass.CreateFeature();

            nodeRow.Shape = GeometryFactory.CreatePoint(201, 100);
            nodeRow.Store();

            IFeature nearRow = nearClass.CreateFeature();

            nearRow.Shape = CurveConstruction.StartLine(100, 100)
                            .LineTo(100, 199)
                            .LineTo(199, 199)
                            .LineTo(199, 100)
                            .Curve;
            nearRow.Store();

            IEnvelope verificationEnvelope = GeometryFactory.CreateEnvelope(0, 0, 500, 500);

            var test = new QaNodeLineCoincidence(nodeClass, nearClasses, 2.1);

            var runner = new QaContainerTestRunner(200, test);

            runner.Execute(verificationEnvelope);

            AssertUtils.OneError(runner,
                                 "NodeLineCoincidence.NodeTooCloseToLine.BetweenFeatures");
        }
Ejemplo n.º 5
0
        public void CanAllowVertexWithinCoincidenceTolerance()
        {
            const string testName = "CanAllowVertexWithinCoincidenceTolerance";

            IFeatureClass nodeClass = CreateFeatureClass(string.Format("{0}_node", testName),
                                                         esriGeometryType.esriGeometryPoint);
            IFeatureClass nearClass = CreateFeatureClass(string.Format("{0}_near", testName),
                                                         esriGeometryType.esriGeometryPolyline);

            var nearClasses = new List <IFeatureClass> {
                nearClass
            };

            IFeature nodeRow = nodeClass.CreateFeature();

            nodeRow.Shape = GeometryFactory.CreatePoint(1, 0.1);
            nodeRow.Store();

            IFeature nearRow = nearClass.CreateFeature();

            nearRow.Shape = CurveConstruction.StartLine(0, 0)
                            .LineTo(2, 0)
                            .Curve;
            nearRow.Store();

            IEnvelope verificationEnvelope = GeometryFactory.CreateEnvelope(0, 0, 500, 500);

            var test = new QaNodeLineCoincidence(nodeClass, nearClasses, 2)
            {
                CoincidenceTolerance = 0.2
            };

            var runner = new QaContainerTestRunner(1000, test);

            runner.Execute(verificationEnvelope);

            AssertUtils.NoError(runner);
        }
Ejemplo n.º 6
0
        public void CanReportWithinFeature()
        {
            const string testName = "CanReportWithinFeature";

            IFeatureClass lineClass = CreateFeatureClass(string.Format("{0}_near", testName),
                                                         esriGeometryType.esriGeometryPolyline);

            var nearClasses = new List <IFeatureClass> {
                lineClass
            };

            IPolycurve multipartLine = CurveConstruction.StartLine(0, 0)
                                       .LineTo(100, 0)
                                       .LineTo(101, 0)
                                       .LineTo(100, 0)
                                       .LineTo(100, 100)
                                       .Curve;

            GeometryUtils.Simplify(multipartLine, true, true);

            IFeature nearRow = lineClass.CreateFeature();

            nearRow.Shape = multipartLine;
            nearRow.Store();

            IEnvelope verificationEnvelope = GeometryFactory.CreateEnvelope(0, 0, 500, 500);

            var test = new QaNodeLineCoincidence(lineClass, nearClasses, 2);

            var runner = new QaContainerTestRunner(200, test);

            runner.Execute(verificationEnvelope);

            AssertUtils.ExpectedErrors(2, runner.Errors,
                                       "NodeLineCoincidence.NodeTooCloseToLine.WithinFeature");
        }