org.locationtech.jts.operation.relate

Type members

Classlikes

Computes the {link EdgeEnd}s which arise from a noded {link Edge}.

Computes the {link EdgeEnd}s which arise from a noded {link Edge}.

Version

1.7

class EdgeEndBundle(val boundaryNodeRule: BoundaryNodeRule, val e: EdgeEnd) extends EdgeEnd

A collection of {link EdgeEnd}s which obey the following invariant: They originate at the same node and have the same direction.

A collection of {link EdgeEnd}s which obey the following invariant: They originate at the same node and have the same direction.

Version

1.7

An ordered list of {link EdgeEndBundle}s around a {link RelateNode}. They are maintained in CCW order (starting with the positive x-axis) around the node for efficient lookup and topology building.

An ordered list of {link EdgeEndBundle}s around a {link RelateNode}. They are maintained in CCW order (starting with the positive x-axis) around the node for efficient lookup and topology building.

Version

1.7

class RelateComputer(var arg: Array[GeometryGraph])

Computes the topological relationship between two Geometries.

Computes the topological relationship between two Geometries.

RelateComputer does not need to build a complete graph structure to compute the IntersectionMatrix. The relationship between the geometries can be computed by simply examining the labelling of edges incident on each node.

RelateComputer does not currently support arbitrary GeometryCollections. This is because GeometryCollections can contain overlapping Polygons. In order to correct compute relate on overlapping Polygons, they would first need to be noded and merged (if not explicitly, at least implicitly).

Version

1.7

class RelateNode(val coordArg: Coordinate, val edgesArg: EdgeEndStar) extends Node

Represents a node in the topological graph used to compute spatial relationships.

Represents a node in the topological graph used to compute spatial relationships.

Version

1.7

Used by the {link NodeMap} in a {link RelateNodeGraph} to create {link RelateNode}s.

Used by the {link NodeMap} in a {link RelateNodeGraph} to create {link RelateNode}s.

Version

1.7

Implements the simple graph of Nodes and EdgeEnd which is all that is required to determine topological relationships between Geometries. Also supports building a topological graph of a single Geometry, to allow verification of valid topology.

Implements the simple graph of Nodes and EdgeEnd which is all that is required to determine topological relationships between Geometries. Also supports building a topological graph of a single Geometry, to allow verification of valid topology.

It is <b>not</b> necessary to create a fully linked PlanarGraph to determine relationships, since it is sufficient to know how the Geometries interact locally around the nodes. In fact, this is not even feasible, since it is not possible to compute exact intersection points, and hence the topology around those nodes cannot be computed robustly. The only Nodes that are created are for improper intersections; that is, nodes which occur at existing vertices of the Geometries. Proper intersections (e.g. ones which occur between the interior of line segments) have their topology determined implicitly, without creating a Node object to represent them.

Version

1.7

object RelateOp

Implements the SFS <tt>relate()</tt> generalized spatial predicate on two {link Geometry}s.

Implements the SFS <tt>relate()</tt> generalized spatial predicate on two {link Geometry}s.

The class supports specifying a custom {link BoundaryNodeRule} to be used during the relate computation.

If named spatial predicates are used on the result {link IntersectionMatrix} of the RelateOp, the result may or not be affected by the choice of <tt>BoundaryNodeRule</tt>, depending on the exact nature of the pattern. For instance, {link IntersectionMatrix#isIntersects()} is insensitive to the choice of <tt>BoundaryNodeRule</tt>, whereas {link IntersectionMatrix#isTouches(int, int)} is affected by the rule chosen.

<b>Note:</b> custom Boundary Node Rules do not (currently) affect the results of other {link Geometry} methods (such as {link Geometry#getBoundary}. The results of these methods may not be consistent with the relationship computed by a custom Boundary Node Rule.

Version

1.7

Companion
class
class RelateOp(g0: Geometry, g1: Geometry, boundaryNodeRule: BoundaryNodeRule) extends GeometryGraphOperation
Companion
object