Exemplo n.º 1
0
        /// <summary>
        /// Form DirectedEdges in graph into Minimal EdgeRings.
        /// (Minimal Edgerings must be used, because only they are guaranteed to provide
        /// a correct isHole computation)
        /// </summary>
        private ArrayList BuildEdgeRings(ArrayList dirEdges)
        {
            ArrayList edgeRings = new ArrayList();

            for (IEnumerator it = dirEdges.GetEnumerator(); it.MoveNext();)
            {
                DirectedEdge de = (DirectedEdge)it.Current;
                // if this edge has not yet been processed
                if (de.InResult && de.EdgeRing == null)
                {
                    MaximalEdgeRing er = new MaximalEdgeRing(de,
                                                             geometryFactory);

                    er.LinkDirectedEdgesForMinimalEdgeRings();
                    IList minEdgeRings = er.BuildMinimalRings();

                    int nRings = minEdgeRings.Count;
                    for (int i = 0; i < nRings; i++)
                    {
                        edgeRings.Add(minEdgeRings[i]);
                    }
                }
            }

            return(edgeRings);
        }
        /// <summary>
        /// for all DirectedEdges in result, form them into EdgeRings
        /// </summary>
        /// <param name="dirEdges"></param>
        /// <returns></returns>
        private ArrayList buildEdgeRings(ArrayList dirEdges)
        {
            ArrayList edgeRings = new ArrayList();

            foreach (object obj in dirEdges)
            {
                DirectedEdge de = (DirectedEdge)obj;
                // if this edge has not yet been processed
                if (de.EdgeRing == null)
                {
                    EdgeRing er = new MaximalEdgeRing(de, _geometryFactory, _cga);
                    edgeRings.Add(er);
                }
            }
            return(edgeRings);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Form <see cref="DirectedEdge" />s in graph into Minimal EdgeRings.
        /// (Minimal Edgerings must be used, because only they are guaranteed to provide
        /// a correct isHole computation).
        /// </summary>
        /// <param name="dirEdges"></param>
        /// <returns></returns>
        private IList BuildEdgeRings(IList dirEdges)
        {
            IList edgeRings = new ArrayList();

            foreach (DirectedEdge de in dirEdges)
            {
                // if this edge has not yet been processed
                if (de.IsInResult && de.EdgeRing == null)
                {
                    MaximalEdgeRing er = new MaximalEdgeRing(de, geometryFactory);

                    er.LinkDirectedEdgesForMinimalEdgeRings();
                    IList minEdgeRings = er.BuildMinimalRings();
                    foreach (object o in minEdgeRings)
                    {
                        edgeRings.Add(o);
                    }
                }
            }
            return(edgeRings);
        }
        /// <summary>
        /// Form <see cref="DirectedEdge" />s in graph into Minimal EdgeRings.
        /// (Minimal Edgerings must be used, because only they are guaranteed to provide
        /// a correct isHole computation).
        /// </summary>
        /// <param name="dirEdges"></param>
        /// <returns></returns>
        private IList <EdgeRing> BuildEdgeRings(IEnumerable <EdgeEnd> dirEdges)
        {
            IList <EdgeRing> edgeRings = new List <EdgeRing>();

            foreach (DirectedEdge de in dirEdges)
            {
                // if this edge has not yet been processed
                if (de.IsInResult && de.EdgeRing == null)
                {
                    MaximalEdgeRing er = new MaximalEdgeRing(de, _geometryFactory);

                    er.LinkDirectedEdgesForMinimalEdgeRings();
                    IList <EdgeRing> minEdgeRings = er.BuildMinimalRings();
                    foreach (EdgeRing o in minEdgeRings)
                    {
                        edgeRings.Add(o);
                    }
                }
            }
            return(edgeRings);
        }