: Public <<normative>> Package
Created: |
4/10/2008 12:16:11 PM |
Modified: |
4/10/2008 12:16:12 PM |
|
Project: |
|
Author: |
|
Version: |
|
Phase: |
|
Status: |
|
Complexity: |
|
Difficulty: |
|
Priority: |
|
Multiplicity: |
|
Advanced: |
|
UUID: |
{BE8F1E52-EEFC-4e85-9D08-A6DDC2E4D93A} |
Appears In: |
Main, Context Diagram: Package Suppliers of Topology, Context Diagram: Package Suppliers of Geometry, Context Diagram: Package Clients of Geometry, Context Diagram: Package Clients of Basic Types, Context Diagram: Package Clients of Primitive, Context Diagram: Package Clients of Derived, Context Diagram: Package Clients of Implementation, Context Diagram: Package Suppliers of Coverages, Context Diagram: Package Suppliers of Tracking, Context Diagram: Package Suppliers of Network, Main, Context Diagram: Package Suppliers of Geometry, Main, Land Cover Vector, Area Management, Restriction and Regulation Zones, StatisticalUnits |
The geometry packages (Figure 4) contain the various classes for coordinate geometry. All of these classes through the root class GM_Object inherit an optional association to a coordinate reference system. All direct positions exposed through the interfaces defined in this standard shall be in the coordinate reference system of the geometric object accessed. All elements of a geometric complex, composite, or aggregate shall be associated to the same coordinate reference system. When instances of GM_Object are aggregated in another GM_Object (such as a GM_Aggregate, or GM_Complex) which already has a coordinate reference system specified, then these elements are assumed to be in that same coordinate reference system unless otherwise specified. <br /></p><p>The geometry package has several internal packages that separate primitive geometric objects, aggregates and complexes, which have a more elaborate internal structure than simple aggregates. Figure 4 shows the dependencies between the geometry packages as well as a list of classes for each package<br /></p><p>Figure 5 shows the basic classes defined in the geometry packages. Any object that inherits the semantics of the GM_Object acts as a set of direct positions. Its behavior will be determined by which direct positions it contains. Objects under GM_Primitive will be open, that is, they will not contain their boundary points; curves will not contain their end points, surfaces will not contain their boundary curves, and solids will not contain their bounding surfaces. Objects under GM_Complex will be closed, that is, they will contain their boundary points. This leads to some apparent ambiguity. A representation of a line as a primitive must reference its end points, but will not contain these points as a set of direct positions. A representation of a line as a complex will also reference its end points, and will contain these points as a set of direct positions. This means that identical digital representations will have slightly different semantics depending on whether they are accessed as primitives or complexes. <br /></p><p>This difference of semantics is most striking in the GM_CompositeCurve. Composite curves are used to represent features whose geometry could also be represented as curve primitives. From a cartographic point of view, these two representations are not different. From a topological point of view, they are different. This distinction appears in the inheritance diagram (Figure 5) as an inheritance relationship between GM_CompositeCurve and GM_OrientableCurve. The primary semantics of a GM_CompositeCurve (see 6.6.5) is as a closed GM_Object, but it may also act as an open GM_Object under GM_Primitive operations (see 6.3.10). Interface protocols depending upon the topological details of this object will have to be distinguished as to whether they have been inherited from GM_Primitive or GM_Complex, where the distinction first occurs. Even though these protocols have been inherited from the same operations defined at GM_Object, they will act differently depending upon the branch of the inheritance tree from which they have inherited semantics. Creators of implementation profiles may take this into account and use a proxy mechanism for realization relationships that cause semantic dissonance. Such a procedure will be necessary in object-oriented programming and databases in systems that disallow multiple inheritance or make limiting assumptions about method binding.<br /></p>