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

## Class GeometryGraph

• ```public class GeometryGraph
extends PlanarGraph```
A GeometryGraph is a graph that models a given Geometry
Version:
1.7
• ### Constructor Summary

Constructors
Constructor and Description
```GeometryGraph(int argIndex, Geometry parentGeom)```
```GeometryGraph(int argIndex, Geometry parentGeom, BoundaryNodeRule boundaryNodeRule)```
• ### Method Summary

All Methods
Modifier and Type Method and Description
`void` `addEdge(Edge e)`
`void` `addPoint(Coordinate pt)`
`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.
`SegmentIntersector` ```computeSelfNodes(LineIntersector li, boolean computeRingSelfNodes, boolean isDoneIfProperInt)```
Compute self-nodes, taking advantage of the Geometry type to minimize the number of intersection tests.
`void` `computeSplitEdges(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()`
`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.
`int` `locate(Coordinate pt)`
Determines the `Location` of the given `Coordinate` in this geometry.
• ### Methods inherited from class org.locationtech.jts.geomgraph.PlanarGraph

`add, addEdges, addNode, addNode, find, findEdge, findEdgeEnd, findEdgeInSameDirection, getEdgeEnds, getEdgeIterator, getNodeIterator, getNodes, isBoundaryNode, linkAllDirectedEdges, linkResultDirectedEdges, linkResultDirectedEdges, printEdges`
• ### Methods inherited from class java.lang.Object

`equals, 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 Collection getBoundaryNodes()`
• #### getBoundaryPoints

`public Coordinate[] getBoundaryPoints()`
• #### findEdge

`public Edge findEdge(LineString line)`
• #### computeSplitEdges

`public void computeSplitEdges(List edgelist)`

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

`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 `false`, intersection checks are optimized to not test rings for self-intersection
Returns:
the computed SegmentIntersector containing information about the intersections found
• #### computeSelfNodes

```public SegmentIntersector computeSelfNodes(LineIntersector li,
boolean computeRingSelfNodes,
boolean isDoneIfProperInt)```
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 `false`, intersection checks are optimized to not test rings for self-intersection
`isDoneIfProperInt` - short-circuit the intersection computation if a proper intersection is found
Returns:
the computed SegmentIntersector containing information about the intersections found
• #### computeEdgeIntersections

```public SegmentIntersector computeEdgeIntersections(GeometryGraph g,
LineIntersector li,
boolean includeProper)```
• #### locate

`public int locate(Coordinate pt)`
Determines the `Location` of the given `Coordinate` in this geometry.
Parameters:
`pt` - the point to test
Returns:
the location of the point in the geometry