## com.vividsolutions.jts.geomgraph
Class PlanarGraph

    java.lang.Object
      com.vividsolutions.jts.geomgraph.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, `Geometry`s 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 Summary
`static CGAlgorithms` `cga`
`protected java.util.List` `edgeEndList`
`protected java.util.List` `edges`
`protected NodeMap` `nodes`

Constructor Summary
`PlanarGraph()`
`PlanarGraph(NodeFactory nodeFact)`

Method Summary
`void` `add(EdgeEnd e)`
`void` `addEdges(java.util.List edgesToAdd)` Add a set of edges to the graph.
`Node` `addNode(Coordinate coord)`
`Node` `addNode(Node node)`
`Node` `find(Coordinate coord)`
`Edge` `findEdge(Coordinate p0, Coordinate p1)` Returns the edge whose first two coordinates are p0 and p1
`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)
`Edge` `findEdgeInSameDirection(Coordinate p0, Coordinate p1)` Returns the edge which starts at p0 and whose first segment is parallel to p1
`java.util.Collection` `getEdgeEnds()`
`java.util.Iterator` `getEdgeIterator()`
`java.util.Iterator` `getNodeIterator()`
`java.util.Collection` `getNodes()`
`protected void` `insertEdge(Edge e)`
`boolean` `isBoundaryNode(int geomIndex, Coordinate coord)`
`void` `linkAllDirectedEdges()` Link the DirectedEdges at the nodes of the graph.
`void` `linkResultDirectedEdges()` Link the DirectedEdges at the nodes of the graph.
`static void` `linkResultDirectedEdges(java.util.Collection nodes)` For nodes in the Collection, link the DirectedEdges at the node that are in the result.
`void` `printEdges(java.io.PrintStream out)`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### cga

    public static final CGAlgorithms cga

### edges

    protected java.util.List edges

### nodes

    protected NodeMap nodes

### 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)

### addNode

    public Node addNode(Coordinate coord)

### 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

### printEdges

    public void printEdges(java.io.PrintStream out)