Interface Primitive

  • All Superinterfaces:
    Geometry, TransfiniteSet
    All Known Subinterfaces:
    CompositeCurve, CompositeSolid, CompositeSurface, Curve, OrientableCurve, OrientablePrimitive, OrientableSurface, Point, PolyhedralSurface, Ring, Shell, Solid, Surface, Tin, TriangulatedSurface

    @UML(identifier="GM_Primitive",
         specification=ISO_19107)
    public interface Primitive
    extends Geometry
    Abstract root class of the geometric primitives. Its main purpose is to define the basic "boundary" operation that ties the primitives in each dimension together. A geometric primitive is a geometric object that is not decomposed further into other primitives in the system. This includes curves and surfaces, even though they are composed of curve segments and surface patches, respectively. Those curve segments and surface patches cannot exist outside the context of a primitive.

    Any geometric object that is used to describe a feature is a collection of geometric primitives. A collection of geometric primitives may or may not be a geometric complex. Geometric complexes have additional properties such as closure by boundary operations and mutually exclusive component parts. Primitive and Complex share most semantics, in the meaning of operations and attributes. There is an exception in that a Primitive shall not contain its boundary (except in the trivial case of point where the boundary is empty), while a complex shall contain its boundary in all cases.

    Since:
    GeoAPI 1.0
    See Also:
    PrimitiveFactory.createPrimitive(org.opengis.geometry.Envelope)
    TODO:
    Some associations are commented out for now.
    • Method Detail

      • getContainedPrimitives

        @UML(identifier="containedPrimitive",
             obligation=MANDATORY,
             specification=ISO_19107)
        Set<Primitive> getContainedPrimitives()
        Returns the Primitives which are by definition coincident with this one. This allows applications to override the TransfiniteSet<DirectPosition> interpretation and its associated computational geometry, and declare one Primitive to be "interior to" another. This set should normally be empty when the Primitives are within a complex, since in that case the boundary information is sufficient for most cases. This association should not be used when the two Primitives are not close to one another. The intent is to allow applications to compensate for inherent and unavoidable round off, truncation, and other mathematical problems indigenous to computer calculations.
        Returns:
        the set of primitives contained into this primitive.
        See Also:
        getContainingPrimitives()
        TODO:
        Using a Set returns type allows the user to add or remove element in this set at his convenience. Is it the right interpretation of this specification?
      • getContainingPrimitives

        @UML(identifier="containingPrimitive",
             obligation=MANDATORY,
             specification=ISO_19107)
        Set<Primitive> getContainingPrimitives()
        Returns the Primitives which are by definition coincident with this one.
        Returns:
        the set of primitives which contains this primitive.
        See Also:
        getContainedPrimitives()
        TODO:
        Using a Set returns type allows the user to add or remove element in this set at his convenience. Is it the right interpretation of this specification?, Should we stretch out some relation with contained primitive? For example should we update the specification with something like the following? "Invoking B.getContainingPrimitive().add(A) is equivalent to invoking A.getContainedPrimitive().add(B)".
      • getComplexes

        @UML(identifier="complex",
             obligation=MANDATORY,
             specification=ISO_19107)
        Set<Complex> getComplexes()
        Returns the set of complexes which contains this primitive. A Primitive may be in several complexes. This association may not be navigable in this direction (from primitive to complex), depending on the implementation.
        Returns:
        the set of complexes which contains this primitive.