Class GeometryGraph

java.lang.Object
org.locationtech.jts.geomgraph.PlanarGraph
org.locationtech.jts.geomgraph.GeometryGraph

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

    • GeometryGraph

      public GeometryGraph(int argIndex, Geometry parentGeom)
    • GeometryGraph

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

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