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); }
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)); }
/// <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))); }