com.vividsolutions.jts.geomgraph
Class GeometryGraph

java.lang.Object
  extended bycom.vividsolutions.jts.geomgraph.PlanarGraph
      extended bycom.vividsolutions.jts.geomgraph.GeometryGraph

public class GeometryGraph
extends PlanarGraph

A GeometryGraph is a graph that models a given Geometry

Version:
1.7

Field Summary
 
Fields inherited from class com.vividsolutions.jts.geomgraph.PlanarGraph
cga, edgeEndList, edges, nodes
 
Constructor Summary
GeometryGraph(int argIndex, Geometry parentGeom)
           
GeometryGraph(int argIndex, Geometry parentGeom, BoundaryNodeRule boundaryNodeRule)
           
 
Method Summary
 void addEdge(Edge e)
          Add an Edge computed externally.
 void addPoint(Coordinate pt)
          Add a point computed externally.
 SegmentIntersector computeEdgeIntersections(GeometryGraph g, LineIntersector li, boolean includeProper)
           
 SegmentIntersector computeSelfNodes(LineIntersector li, boolean computeRingSelfNodes)
          Compute self-nodes, taking advantage of the Geometry type to minimize the number of intersection tests.
 void computeSplitEdges(java.util.List edgelist)
           
static int determineBoundary(BoundaryNodeRule boundaryNodeRule, int boundaryCount)
          This method implements the Boundary Determination Rule for determining whether a component (node or edge) that appears multiple times in elements of a MultiGeometry is in the boundary or the interior of the Geometry
The SFS uses the "Mod-2 Rule", which this function implements
An alternative (and possibly more intuitive) rule would be the "At Most One Rule": isInBoundary = (componentCount == 1)
 Edge findEdge(LineString line)
           
 BoundaryNodeRule getBoundaryNodeRule()
           
 java.util.Collection getBoundaryNodes()
           
 Coordinate[] getBoundaryPoints()
           
 Geometry getGeometry()
           
 Coordinate getInvalidPoint()
           
 boolean hasTooFewPoints()
          This constructor is used by clients that wish to add Edges explicitly, rather than adding a Geometry.
 
Methods inherited from class com.vividsolutions.jts.geomgraph.PlanarGraph
add, addEdges, addNode, addNode, find, findEdge, findEdgeEnd, findEdgeInSameDirection, getEdgeEnds, getEdgeIterator, getNodeIterator, getNodes, insertEdge, isBoundaryNode, linkAllDirectedEdges, linkResultDirectedEdges, linkResultDirectedEdges, printEdges
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

GeometryGraph

public GeometryGraph(int argIndex,
                     Geometry parentGeom)

GeometryGraph

public GeometryGraph(int argIndex,
                     Geometry parentGeom,
                     BoundaryNodeRule boundaryNodeRule)
Method Detail

determineBoundary

public static int determineBoundary(BoundaryNodeRule boundaryNodeRule,
                                    int boundaryCount)
This method implements the Boundary Determination Rule for determining whether a component (node or edge) that appears multiple times in elements of a MultiGeometry is in the boundary or the interior of the Geometry
The SFS uses the "Mod-2 Rule", which this function implements
An alternative (and possibly more intuitive) rule would be the "At Most One Rule": isInBoundary = (componentCount == 1)


hasTooFewPoints

public boolean hasTooFewPoints()
This constructor is used by clients that wish to add Edges explicitly, rather than adding a Geometry. (An example is BufferOp).


getInvalidPoint

public Coordinate getInvalidPoint()

getGeometry

public Geometry getGeometry()

getBoundaryNodeRule

public BoundaryNodeRule getBoundaryNodeRule()

getBoundaryNodes

public java.util.Collection getBoundaryNodes()

getBoundaryPoints

public Coordinate[] getBoundaryPoints()

findEdge

public Edge findEdge(LineString line)

computeSplitEdges

public void computeSplitEdges(java.util.List edgelist)

addEdge

public void addEdge(Edge e)
Add an Edge computed externally. The label on the Edge is assumed to be correct.


addPoint

public void addPoint(Coordinate pt)
Add a point computed externally. The point is assumed to be a Point Geometry part, which has a location of INTERIOR.


computeSelfNodes

public SegmentIntersector computeSelfNodes(LineIntersector li,
                                           boolean computeRingSelfNodes)
Compute self-nodes, taking advantage of the Geometry type to minimize the number of intersection tests. (E.g. rings are not tested for self-intersection, since they are assumed to be valid).

Parameters:
li - the LineIntersector to use
computeRingSelfNodes - if , intersection checks are optimized to not test rings for self-intersection
Returns:
the SegmentIntersector used, containing information about the intersections found

computeEdgeIntersections

public SegmentIntersector computeEdgeIntersections(GeometryGraph g,
                                                   LineIntersector li,
                                                   boolean includeProper)