com.vividsolutions.jts.geomgraph
Class PlanarGraph
java.lang.Object
com.vividsolutions.jts.geomgraph.PlanarGraph
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
edgeEndList
protected List edgeEndList
edges
protected List edges
PlanarGraph
public PlanarGraph()
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.
find
public Node find(Coordinate coord)
- 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
- 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)
- 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
- 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)