示例#1
0
        private EdgeString BuildEdgeStringStartingWith(LineMergeDirectedEdge start)
        {
            EdgeString            edgeString = new EdgeString(factory);
            LineMergeDirectedEdge current    = start;

            do
            {
                edgeString.Add(current);
                current.Edge.Marked = true;
                current             = current.Next;
            }while (current != null && current != start);

            return(edgeString);
        }
示例#2
0
        public void Merge()
        {
            if (mergedLineStrings != null)
            {
                return;
            }

            edgeStrings = new ArrayList();
            BuildEdgeStringsForObviousStartNodes();
            BuildEdgeStringsForIsolatedLoops();
            mergedLineStrings = new ArrayList();

            for (IEnumerator i = edgeStrings.GetEnumerator(); i.MoveNext();)
            {
                EdgeString edgeString = (EdgeString)i.Current;
                mergedLineStrings.Add(edgeString.ToLineString());
            }
        }