コード例 #1
0
        public void CanGetInteriorVerticesFrom3PointLine()
        {
            var polyLine3 = GeometryFactory.CreatePolyline(
                new[]
            {
                new WKSPointZ {
                    X = 100, Y = 1000, Z = 10
                },
                new WKSPointZ {
                    X = 200, Y = 2000, Z = 20
                },
                new WKSPointZ {
                    X = 300, Y = 3000, Z = 30
                }
            }, null);

            var points =
                (IPointCollection)GeometryComponentUtils.GetGeometryComponent(
                    polyLine3, GeometryComponent.InteriorVertices);

            Assert.IsNotNull(points);
            Assert.AreEqual(1, points.PointCount);
            Assert.AreEqual(200, points.Point[0].X);
            Assert.AreEqual(2000, points.Point[0].Y);
            Assert.AreEqual(20, points.Point[0].Z);
        }
コード例 #2
0
        private static void AssertEmpty(GeometryComponent geometryComponent,
                                        IGeometry geometry)
        {
            var component = GeometryComponentUtils.GetGeometryComponent(geometry,
                                                                        geometryComponent);

            Assert.NotNull(component);
            Assert.IsTrue(component.IsEmpty);
        }
コード例 #3
0
        public static int ReportIntersections(
            [NotNull] IRow row1, int tableIndex1,
            [NotNull] IRow row2, int tableIndex2,
            [NotNull] IErrorReporting errorReporting,
            [CanBeNull] IssueCode issueCode,
            [CanBeNull] IValidRelationConstraint validRelationConstraint,
            bool reportIndividualParts,
            [CanBeNull] GeometryConstraint validIntersectionGeometryConstraint = null,
            GeometryComponent geomComponent1 = GeometryComponent.EntireGeometry,
            GeometryComponent geomComponent2 = GeometryComponent.EntireGeometry)
        {
            Assert.ArgumentNotNull(row1, nameof(row1));
            Assert.ArgumentNotNull(row2, nameof(row2));
            Assert.ArgumentNotNull(errorReporting, nameof(errorReporting));

            if (row1 == row2)
            {
                return(_noError);
            }

            string errorDescription;

            if (HasFulfilledConstraint(row1, tableIndex1,
                                       row2, tableIndex2,
                                       validRelationConstraint, "Features intersect",
                                       out errorDescription))
            {
                return(_noError);
            }

            IGeometry shape1 = ((IFeature)row1).Shape;
            IGeometry shape2 = ((IFeature)row2).Shape;

            var g1 = GeometryComponentUtils.GetGeometryComponent(shape1, geomComponent1);
            var g2 = GeometryComponentUtils.GetGeometryComponent(shape2, geomComponent2);

            var errorCount = 0;

            if (g1 != null && g2 != null)
            {
                foreach (IGeometry errorGeometry in
                         IntersectionUtils.GetAllIntersections(g1, g2))
                {
                    if (validIntersectionGeometryConstraint == null ||
                        !validIntersectionGeometryConstraint.IsFulfilled(errorGeometry))
                    {
                        errorCount += errorReporting.Report(errorDescription,
                                                            errorGeometry,
                                                            issueCode, reportIndividualParts,
                                                            row1, row2);
                    }
                }
            }

            return(errorCount);
        }
コード例 #4
0
        public void CanGetInteriorVerticesFrom2PointLine()
        {
            var polyLine3 = GeometryFactory.CreatePolyline(
                new[]
            {
                new WKSPointZ {
                    X = 100, Y = 1000, Z = 10
                },
                new WKSPointZ {
                    X = 200, Y = 2000, Z = 20
                }
            }, null);

            var points =
                GeometryComponentUtils.GetGeometryComponent(
                    polyLine3, GeometryComponent.InteriorVertices);

            Assert.IsNotNull(points);
            Assert.IsTrue(points.IsEmpty);
        }