Beispiel #1
0
        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!");
            }
        }
Beispiel #2
0
        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!");
            }
        }