JTS Topology Suite version 1.12

com.vividsolutions.jts.geomgraph
Class PlanarGraph

java.lang.Object
  extended by 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, Geometrys must be self-noded before constructing their graphs.

Two fundamental operations are supported by topology graphs:

Version:
1.7

Field Summary
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

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)

JTS Topology Suite version 1.12