private static void AssignInteriorRings([NotNull] IEnumerable <Linestring> interiorRings, [NotNull] IList <RingGroup> leftPolys, [NotNull] IList <RingGroup> rightPolys, [NotNull] IList <RingGroup> bothSidePolys, [NotNull] MultiLinestring unCutParts, double tolerance) { foreach (Linestring unCutIsland in interiorRings) { // Assuming no conflicts (island within island) between un-cut islands because // they all come from the same source. int assignmentCount = 0; assignmentCount += AssignInteriorRing(unCutIsland, rightPolys, tolerance); assignmentCount += AssignInteriorRing(unCutIsland, leftPolys, tolerance); assignmentCount += AssignInteriorRing(unCutIsland, bothSidePolys, tolerance); if (assignmentCount == 0) { unCutParts.AddLinestring(unCutIsland); } Assert.True(assignmentCount < 2, "Multiple inner ring assignments!"); } }
private static void AssignInteriorRings([NotNull] IEnumerable <Linestring> interiorRings, [NotNull] ICollection <RingGroup> polygons, [NotNull] MultiLinestring unassignedParts, double tolerance) { foreach (Linestring interiorRing in interiorRings) { // Assuming no conflicts (island within island) between un-cut islands because // they all come from the same source. int assignmentCount = AssignInteriorRing(interiorRing, polygons, tolerance); if (assignmentCount == 0) { unassignedParts.AddLinestring(interiorRing); } Assert.True(assignmentCount < 2, "Multiple inner ring assignments!"); } }