@UML(identifier="GM_OrientablePrimitive", specification=ISO_19107) public interface OrientablePrimitive extends Primitive
OrientablePrimitive
objects are essentially references to geometric primitives that
carry an "orientation" reversal flag (either "+" or "-") that determines whether this primitive
agrees or disagrees with the orientation of the referenced object.
NOTE: There are several reasons for subclassing the "positive" primitives under the orientable primitives. First is a matter of the semantics of subclassing. Subclassing is assumed to be a "is type of" hierarchy. In the view used, the "positive" primitive is simply the orientable one with the positive orientation. If the opposite view were taken, and orientable primitives were subclassed under the "positive" primitive, then by subclassing logic, the "negative" primitive would have to hold the same sort of geometric description that the "positive" primitive does. The only viable solution would be to separate "negative" primitives under the geometric root as being some sort of reference to their opposite. This adds a great deal of complexity to the subclassing tree. To minimize the number of objects and to bypass this logical complexity, positively oriented primitives are self-referential (are instances of the corresponding primitive subtype) while negatively oriented primitives are not.
Modifier and Type | Method and Description |
---|---|
int |
getOrientation()
Determines which of the two possible orientations this object represents.
|
Primitive |
getPrimitive()
Returns the primitive associated with this
OrientablePrimitive . |
getBoundary, getComplexes, getComposite, getContainedPrimitives, getContainingPrimitives, getProxy
clone, distance, getBuffer, getCentroid, getClosure, getConvexHull, getCoordinateDimension, getCoordinateReferenceSystem, getDimension, getEnvelope, getMaximalComplex, getMbRegion, getPrecision, getRepresentativePoint, isCycle, isMutable, isSimple, toImmutable, transform, transform
contains, contains, difference, equals, intersection, intersects, symmetricDifference, union
@UML(identifier="orientation", obligation=MANDATORY, specification=ISO_19107) int getOrientation()
@Association(value="Oriented") @UML(identifier="primitive", obligation=OPTIONAL, specification=ISO_19107) Primitive getPrimitive()
OrientablePrimitive
. Each primitive of dimension 1 or 2 is associated to two OrientablePrimitive
s,
one for each possible orientation. For curves and surfaces, there are exactly two orientable
primitives for each geometric object. For the positive orientation, the orientable primitive
shall be the corresponding curve or surface.
This method is optional since the association in ISO 19107 is navigable only from
Primitive
to OrientablePrimitive
, not the other way.
null
if the association is not available or not implemented
that way.Primitive.getProxy()
Copyright © 1996–2019 Geotools. All rights reserved.