GeometryGraph class

A GeometryGraph is a graph that models a given Geometry @version 1.7

Inheritance

Constructors

GeometryGraph(int argIndex, Geometry parentGeom)
GeometryGraph.args3(int argIndex, Geometry? parentGeom, BoundaryNodeRule boundaryNodeRule)

Properties

areaPtLocator PointOnGeometryLocator?
getter/setter pair
argIndex int
getter/setter pair
boundaryNodeRule BoundaryNodeRule
getter/setter pair
boundaryNodes List?
getter/setter pair
edgeEndList List
getter/setter pairinherited
edges List
getter/setter pairinherited
hashCode int
The hash code for this object.
no setterinherited
invalidPoint Coordinate?
getter/setter pair
lineEdgeMap Map<LineString, Edge>
The lineEdgeMap is a map of the linestring components of the parentGeometry to the edges which are derived from them. This is used to efficiently perform findEdge queries
getter/setter pair
nodes NodeMap
getter/setter pairinherited
parentGeom Geometry?
getter/setter pair
ptLocator PointLocator
final
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
useBoundaryDeterminationRule bool
If this flag is true, the Boundary Determination Rule will used when deciding whether nodes are in the boundary or not
getter/setter pair

Methods

add(EdgeEnd e) → void
inherited
addCollection(GeometryCollection gc) → void
addEdge(Edge e) → void
Add an Edge computed externally. The label on the Edge is assumed to be correct.
addEdges(List edgesToAdd) → void
Add a set of edges to the graph. For each edge two DirectedEdges will be created. DirectedEdges are NOT linked by this method.
inherited
addGeometry(Geometry g) → void
addLineString(LineString line) → void
addNode(Node node) Node
inherited
addNodeFromCoordinate(Coordinate coord) Node
inherited
addPoint(Point p) → void
Add a Point to the graph.
addPointFromCoordinate(Coordinate pt) → void
Add a point computed externally. The point is assumed to be a Point Geometry part, which has a location of INTERIOR.
addPolygon(Polygon p) → void
addPolygonRing(LinearRing lr, int cwLeft, int cwRight) → void
Adds a polygon ring to the graph. Empty rings are ignored.
addSelfIntersectionNode(int argIndex, Coordinate coord, int loc) → void
Add a node for a self-intersection. If the node is a potential boundary node (e.g. came from an edge which is a boundary) then insert it as a potential boundary node. Otherwise, just add it as a regular node.
addSelfIntersectionNodes(int argIndex) → void
computeEdgeIntersections(GeometryGraph g, LineIntersector li, bool includeProper) SegmentIntersector
computeSelfNodes(LineIntersector li, bool computeRingSelfNodes) SegmentIntersector
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).
computeSelfNodes3(LineIntersector li, bool computeRingSelfNodes, bool isDoneIfProperInt) SegmentIntersector
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).
computeSplitEdges(List edgelist) → void
createEdgeSetIntersector() EdgeSetIntersector
debugPrint(Object o) → void
inherited
debugPrintln(Object o) → void
inherited
find(Coordinate coord) Node?
@return the node if found; null otherwise
inherited
findEdge(Coordinate p0, Coordinate p1) Edge?
Returns the edge whose first two coordinates are p0 and p1
inherited
findEdgeEnd(Edge e) EdgeEnd?
Returns the EdgeEnd which has edge e as its base edge (MD 18 Feb 2002 - this should return a pair of edges)
inherited
findEdgeFromLine(LineString line) Edge?
findEdgeInSameDirection(Coordinate p0, Coordinate p1) Edge?
Returns the edge which starts at p0 and whose first segment is parallel to p1
inherited
getBoundaryNodeRule() BoundaryNodeRule
getBoundaryNodes() List
getBoundaryPoints() List<Coordinate>
getEdgeEnds() List
inherited
getEdgeIterator() Iterator
inherited
getGeometry() Geometry?
getInvalidPoint() Coordinate?
getNodeIterator() Iterator
inherited
getNodes() List
inherited
hasTooFewPoints() bool
This constructor is used by clients that wish to add Edges explicitly, rather than adding a Geometry. (An example is BufferOp).
insertBoundaryPoint(int argIndex, Coordinate coord) → void
Adds candidate boundary points using the current {@link BoundaryNodeRule}. This is used to add the boundary points of dim-1 geometries (Curves/MultiCurves).
insertEdge(Edge e) → void
inherited
insertPoint(int argIndex, Coordinate coord, int onLocation) → void
isBoundaryNode(int geomIndex, Coordinate coord) bool
inherited
linkAllDirectedEdges() → void
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).
inherited
linkResultDirectedEdges() → void
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).
inherited
locate(Coordinate pt) int
Determines the {@link Location} of the given {@link Coordinate} in this geometry.
matchInSameDirection(Coordinate p0, Coordinate p1, Coordinate ep0, Coordinate ep1) bool
The coordinate pairs match if they define line segments lying in the same direction. E.g. the segments are parallel and in the same quadrant (as opposed to parallel and opposite!).
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toString() String
A string representation of this object.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited

Static Methods

determineBoundary(BoundaryNodeRule boundaryNodeRule, int boundaryCount) int
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)