com.vividsolutions.jts.geomgraph

Class PlanarGraph

Known Direct 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:

Version:
1.7

Field Summary

static CGAlgorithms
cga
protected List
edgeEndList
protected List
edges
protected NodeMap
nodes

Constructor Summary

PlanarGraph()
PlanarGraph(NodeFactory nodeFact)

Method Summary

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()
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(Collection nodes)
For nodes in the Collection, link the DirectedEdges at the node that are in the result.
void
printEdges(PrintStream out)

Field Details

cga

public static final CGAlgorithms cga

edgeEndList

protected List edgeEndList

edges

protected List edges

nodes

protected NodeMap nodes

Constructor Details

PlanarGraph

public PlanarGraph()

PlanarGraph

public PlanarGraph(NodeFactory nodeFact)

Method Details

add

public void add(EdgeEnd e)

addEdges

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.

addNode

public Node addNode(Coordinate coord)

addNode

public Node addNode(Node node)

find

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

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

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

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

getEdgeEnds

public Collection getEdgeEnds()

getEdgeIterator

public Iterator getEdgeIterator()

getNodeIterator

public Iterator getNodeIterator()

getNodes

public Collection getNodes()

insertEdge

protected void insertEdge(Edge e)

isBoundaryNode

public boolean isBoundaryNode(int geomIndex,
                              Coordinate coord)

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

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

linkResultDirectedEdges

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

printEdges

public void printEdges(PrintStream out)