org.locationtech.jts:jts-core 1.17.0
org.locationtech.jts.geomgraph

## Class PlanarGraph

• Direct Known Subclasses:
GeometryGraph

```public class PlanarGraph
extends 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
• ### Constructor Summary

Constructors
Constructor and Description
`PlanarGraph()`
`PlanarGraph(NodeFactory nodeFact)`
• ### Method Summary

All Methods
Modifier and Type Method and Description
`void` `add(EdgeEnd e)`
`void` `addEdges(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
`Collection` `getEdgeEnds()`
`Iterator` `getEdgeIterator()`
`Iterator` `getNodeIterator()`
`Collection` `getNodes()`
`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(Collection nodes)`
For nodes in the Collection, link the DirectedEdges at the node that are in the result.
`void` `printEdges(PrintStream out)`
• ### Methods inherited from class java.lang.Object

`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
• ### Constructor Detail

• #### PlanarGraph

`public PlanarGraph(NodeFactory nodeFact)`
• #### PlanarGraph

`public PlanarGraph()`
• ### Method Detail

`public static void linkResultDirectedEdges(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 Iterator getEdgeIterator()`
• #### getEdgeEnds

`public Collection getEdgeEnds()`
• #### isBoundaryNode

```public boolean isBoundaryNode(int geomIndex,
Coordinate coord)```

`public void add(EdgeEnd e)`
• #### getNodeIterator

`public Iterator getNodeIterator()`
• #### getNodes

`public Collection getNodes()`

`public Node addNode(Node node)`

`public Node addNode(Coordinate coord)`
• #### find

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

`public void addEdges(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.

`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).

`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(PrintStream out)`