Class PlanarGraph

  • Direct Known Subclasses:
    GeometryGraph

    public class PlanarGraph
    extends java.lang.Object
    The computation of the IntersectionMatrix relies on the use of a structure called a "topology graph". The topology graph contains nodes and edges corresponding to the nodes and line segments of a Geometry. Each node and edge in the graph is labeled with its topological location relative to the source geometry.

    Note that there is no requirement that points of self-intersection be a vertex. Thus to obtain a correct topology graph, Geometrys must be self-noded before constructing their graphs.

    Two fundamental operations are supported by topology graphs:

    • Computing the intersections between all the edges and nodes of a single graph
    • Computing the intersections between the edges and nodes of two different graphs
    Version:
    1.7
    • Field Detail

      • edges

        protected java.util.List edges
      • edgeEndList

        protected java.util.List edgeEndList
    • Constructor Detail

      • PlanarGraph

        public PlanarGraph​(NodeFactory nodeFact)
      • PlanarGraph

        public PlanarGraph()
    • Method Detail

      • linkResultDirectedEdges

        public static void linkResultDirectedEdges​(java.util.Collection nodes)
        For nodes in the Collection, link the DirectedEdges at the node that are in the result. This allows clients to link only a subset of nodes in the graph, for efficiency (because they know that only a subset is of interest).
      • getEdgeIterator

        public java.util.Iterator getEdgeIterator()
      • getEdgeEnds

        public java.util.Collection getEdgeEnds()
      • isBoundaryNode

        public boolean isBoundaryNode​(int geomIndex,
                                      Coordinate coord)
      • insertEdge

        protected void insertEdge​(Edge e)
      • add

        public void add​(EdgeEnd e)
      • getNodeIterator

        public java.util.Iterator getNodeIterator()
      • getNodes

        public java.util.Collection getNodes()
      • addNode

        public Node addNode​(Node node)
      • find

        public Node find​(Coordinate coord)
        Returns:
        the node if found; null otherwise
      • addEdges

        public void addEdges​(java.util.List edgesToAdd)
        Add a set of edges to the graph. For each edge two DirectedEdges will be created. DirectedEdges are NOT linked by this method.
      • linkResultDirectedEdges

        public void linkResultDirectedEdges()
        Link the DirectedEdges at the nodes of the graph. This allows clients to link only a subset of nodes in the graph, for efficiency (because they know that only a subset is of interest).
      • linkAllDirectedEdges

        public void linkAllDirectedEdges()
        Link the DirectedEdges at the nodes of the graph. This allows clients to link only a subset of nodes in the graph, for efficiency (because they know that only a subset is of interest).
      • findEdgeEnd

        public EdgeEnd findEdgeEnd​(Edge e)
        Returns the EdgeEnd which has edge e as its base edge (MD 18 Feb 2002 - this should return a pair of edges)
        Returns:
        the edge, if found null if the edge was not found
      • findEdge

        public Edge findEdge​(Coordinate p0,
                             Coordinate p1)
        Returns the edge whose first two coordinates are p0 and p1
        Returns:
        the edge, if found null if the edge was not found
      • findEdgeInSameDirection

        public Edge findEdgeInSameDirection​(Coordinate p0,
                                            Coordinate p1)
        Returns the edge which starts at p0 and whose first segment is parallel to p1
        Returns:
        the edge, if found null if the edge was not found
      • matchInSameDirection

        private boolean matchInSameDirection​(Coordinate p0,
                                             Coordinate p1,
                                             Coordinate ep0,
                                             Coordinate ep1)
        The coordinate pairs match if they define line segments lying in the same direction. E.g. the segments are parallel and in the same quadrant (as opposed to parallel and opposite!).
      • printEdges

        public void printEdges​(java.io.PrintStream out)
      • debugPrint

        void debugPrint​(java.lang.Object o)
      • debugPrintln

        void debugPrintln​(java.lang.Object o)