object BoundaryNodeRule
An interface for rules which determine whether node points which are in boundaries of {link Lineal} geometry components are in the boundary of the parent geometry collection. The SFS specifies a single kind of boundary node rule, the {link Mod2BoundaryNodeRule} rule. However, other kinds of Boundary Node Rules are appropriate in specific situations (for instance, linear network topology usually follows the {link EndPointBoundaryNodeRule}.) Some JTS operations (such as {link RelateOp}, {link BoundaryOp} and {link IsSimpleOp}) allow the BoundaryNodeRule to be specified, and respect the supplied rule when computing the results of the operation.
An example use case for a non-SFS-standard Boundary Node Rule is that of checking that a set of {link LineString}s have valid linear network topology, when turn-arounds are represented as closed rings. In this situation, the entry road to the turn-around is only valid when it touches the turn-around ring at the single (common) endpoint. This is equivalent to requiring the set of LineStrings to be simple under the {link EndPointBoundaryNodeRule}. The SFS-standard {link Mod2BoundaryNodeRule} is not sufficient to perform this test, since it states that closed rings have no boundary points.
This interface and its subclasses follow the Strategy design pattern.
- Version
1.7
- See also
RelateOp
BoundaryOp
IsSimpleOp
PointLocator
- Alphabetic
- By Inheritance
- BoundaryNodeRule
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Type Members
- class EndPointBoundaryNodeRule extends BoundaryNodeRule
A {link BoundaryNodeRule} which specifies that any points which are endpoints of lineal components are in the boundary of the parent geometry.
A {link BoundaryNodeRule} which specifies that any points which are endpoints of lineal components are in the boundary of the parent geometry. This corresponds to the "intuitive" topological definition of boundary. Under this rule {link LinearRing}s have a non-empty boundary (the common endpoint of the underlying LineString).
This rule is useful when dealing with linear networks. For example, it can be used to check whether linear networks are correctly noded. The usual network topology constraint is that linear segments may touch only at endpoints. In the case of a segment touching a closed segment (ring) at one point, the Mod2 rule cannot distinguish between the permitted case of touching at the node point and the invalid case of touching at some other interior (non-node) point. The EndPoint rule does distinguish between these cases, so is more appropriate for use.
- Version
1.7
- class Mod2BoundaryNodeRule extends BoundaryNodeRule
A {link BoundaryNodeRule} specifies that points are in the boundary of a lineal geometry iff the point lies on the boundary of an odd number of components.
A {link BoundaryNodeRule} specifies that points are in the boundary of a lineal geometry iff the point lies on the boundary of an odd number of components. Under this rule {link LinearRing}s and closed {link LineString}s have an empty boundary.
This is the rule specified by the OGC SFS, and is the default rule used in JTS.
- Version
1.7
- class MonoValentEndPointBoundaryNodeRule extends BoundaryNodeRule
A {link BoundaryNodeRule} which determines that only endpoints with valency of exactly 1 are on the boundary.
A {link BoundaryNodeRule} which determines that only endpoints with valency of exactly 1 are on the boundary. This corresponds to the boundary of a {link MultiLineString} being all the "unattached" endpoints.
- Version
1.7
- class MultiValentEndPointBoundaryNodeRule extends BoundaryNodeRule
A {link BoundaryNodeRule} which determines that only endpoints with valency greater than 1 are on the boundary.
A {link BoundaryNodeRule} which determines that only endpoints with valency greater than 1 are on the boundary. This corresponds to the boundary of a {link MultiLineString} being all the "attached" endpoints, but not the "unattached" ones.
- Version
1.7
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- val ENDPOINT_BOUNDARY_RULE: EndPointBoundaryNodeRule
The Endpoint Boundary Node Rule.
The Endpoint Boundary Node Rule.
- See also
EndPointBoundaryNodeRule
- val MOD2_BOUNDARY_RULE: Mod2BoundaryNodeRule
The Mod-2 Boundary Node Rule (which is the rule specified in the OGC SFS).
The Mod-2 Boundary Node Rule (which is the rule specified in the OGC SFS).
- See also
Mod2BoundaryNodeRule
- val MONOVALENT_ENDPOINT_BOUNDARY_RULE: MonoValentEndPointBoundaryNodeRule
The Monovalent Endpoint Boundary Node Rule.
The Monovalent Endpoint Boundary Node Rule.
- See also
MonoValentEndPointBoundaryNodeRule
- val MULTIVALENT_ENDPOINT_BOUNDARY_RULE: MultiValentEndPointBoundaryNodeRule
The MultiValent Endpoint Boundary Node Rule.
The MultiValent Endpoint Boundary Node Rule.
- See also
MultiValentEndPointBoundaryNodeRule
- val OGC_SFS_BOUNDARY_RULE: Mod2BoundaryNodeRule
The Boundary Node Rule specified by the OGC Simple Features Specification, which is the same as the Mod-2 rule.
The Boundary Node Rule specified by the OGC Simple Features Specification, which is the same as the Mod-2 rule.
- See also
Mod2BoundaryNodeRule
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()