private void CheckValid(string[] inputWKT, bool isValidExpected)
        {
            var  input      = ReadList(inputWKT);
            var  segStrings = ToSegmentStrings(input);
            var  fnv        = new FastNodingValidator(segStrings);
            bool isValid    = fnv.IsValid;

            Assert.IsTrue(isValidExpected == isValid);
        }
        public static Geometry FindOneNode(Geometry geom)
        {
            var  nv     = new FastNodingValidator(SegmentStringUtil.ExtractNodedSegmentStrings(geom));
            bool temp   = nv.IsValid;
            var  intPts = nv.Intersections;

            if (intPts.Count == 0)
            {
                return(null);
            }
            return(FunctionsUtil.GetFactoryOrDefault((Geometry)null).CreatePoint((Coordinate)intPts[0]));
        }
        private void CheckIntersection(string[] inputWKT, string expectedWKT)
        {
            var input          = ReadList(inputWKT);
            var expected       = Read(expectedWKT);
            var pts            = expected.Coordinates;
            var intPtsExpected = new CoordinateList(pts);

            var segStrings   = ToSegmentStrings(input);
            var intPtsActual = FastNodingValidator.ComputeIntersections(segStrings);

            bool isSameNumberOfIntersections = intPtsExpected.Count == intPtsActual.Count;

            Assert.True(isSameNumberOfIntersections);

            CheckIntersections(intPtsActual, intPtsExpected);
        }
Пример #4
0
        public static IGeometry CheckNoding(Geometry geom)
        {
            var segs = CreateSegmentStrings(geom);
            var nv   = new FastNodingValidator(segs);

            nv.FindAllIntersections = true;
            var res    = nv.IsValid;
            var intPts = nv.Intersections;
            var pts    = new IPoint[intPts.Count];

            for (var i = 0; i < intPts.Count; i++)
            {
                var coord = intPts[i];
                // use default factory in case intersections are not fixed
                pts[i] = FunctionsUtil.GetFactoryOrDefault(null).CreatePoint(coord);
            }
            return(FunctionsUtil.GetFactoryOrDefault(null).CreateMultiPoint(
                       pts));
        }
Пример #5
0
 /// <summary>
 /// Creates a new validator for the given collection of <see cref="Edge"/>s.
 /// </summary>
 public EdgeNodingValidator(IEnumerable <Edge> edges)
 {
     _nv = new FastNodingValidator(ToSegmentStrings(edges));
 }
        public static Geometry FindNodes(Geometry geom)
        {
            var intPts = FastNodingValidator.ComputeIntersections(SegmentStringUtil.ExtractNodedSegmentStrings(geom));

            return(FunctionsUtil.GetFactoryOrDefault((Geometry)null).CreateMultiPointFromCoords(CoordinateArrays.ToCoordinateArray(intPts)));
        }
        public static bool IsNodingValid(Geometry geom)
        {
            var nv = new FastNodingValidator(SegmentStringUtil.ExtractNodedSegmentStrings(geom));

            return(nv.IsValid);
        }
        private static void PerformTest(ICoordinateSequence sequence)
        {
            if (sequence == null)
                throw new ArgumentNullException("sequence");

            Coordinate[] coordinates = sequence.ToCoordinateArray();
            NodedSegmentString segmentString = new NodedSegmentString(coordinates, null);
            Stopwatch watch = new Stopwatch();
            NodingValidator validator = new NodingValidator(new[] { segmentString });
            validator.CheckValid();
            watch.Start();
            validator.CheckValid();
            watch.Stop();
            Console.WriteLine("NodingValidator.CheckValid => ElapsedMilliseconds: {0}", watch.ElapsedMilliseconds);

            BasicSegmentString segmentStringBasic = new BasicSegmentString(coordinates, null);
            FastNodingValidator fastValidator = new FastNodingValidator(new[] { segmentStringBasic });
            watch.Reset(); watch.Start();
            fastValidator.CheckValid();
            watch.Stop();
            Console.WriteLine("FastNodingValidator.CheckValid => ElapsedMilliseconds: {0}", watch.ElapsedMilliseconds);
        }
        public static IGeometry FindNodePoints(IGeometry geom)
        {
            IList <Coordinate> intPts = FastNodingValidator.ComputeIntersections(SegmentStringUtil.ExtractNodedSegmentStrings(geom));

            return(FunctionsUtil.GetFactoryOrDefault(null).CreateMultiPoint(CoordinateArrays.ToCoordinateArray(intPts)));
        }