SEDRIS Data Dictionary ------------------------------------------------------------------------------- Class Name: Absolute Time Definition: An instance of this DRM class specifies an absolute time (that is, Greenwich Mean Time (GMT), which is not relative to some other point in time). <Absolute Time> provides - a means to specify an absolute time (GMT) for metadata, and - a general-purpose mechanism for describing points in absolute (GMT) time. Primary Page in DRM Diagram: 20 Example: 1. Consider a SEDRIS transmittal constructed from a historical database, in which the time at which an event happened is recorded as Oct 3 17:56:47 GMT 1994. In the SEDRIS transmittal, this information is specified by an <Absolute Time> instance with time_significance = SE_TIME_SIGNIF_OCCURRENCE, as follows. time_significance = SE_TIME_SIGNIF_OCCURRENCE time_value.configuration = SE_TIME_CFG_DATE_YMD_AND_TIME_HMS time_value.value.ymd_hms.year = 1994 time_value.value.ymd_hms.month = SE_MONTH_OCTOBER time_value.value.ymd_hms.day = 3 time_value.value.ymd_hms.hour = 17 time_value.value.ymd_hms.minutes = 56 time_value.value.ymd_hms.seconds = 47.0 2. Consider a SEDRIS transmittal for which the data provider wishes to represent the date and time when the transmittal was created - in this example, Mar 23 15:18:33 GMT 2003. In this case, the data provider would create an <Absolute Time> instance with time_significance = SE_TIME_SIGNIF_CREATION_DATE and the other field values set appropriately, as follows. time_significance = SE_TIME_SIGNIF_CREATION_DATE time_value.configuration = SE_TIME_CFG_DATE_YMD_AND_TIME_HMS time_value.value.ymd_hms.year = 2003 time_value.value.ymd_hms.month = SE_MONTH_MARCH time_value.value.ymd_hms.day = 23 time_value.value.ymd_hms.hour = 15 time_value.value.ymd_hms.minutes = 18 time_value.value.ymd_hms.seconds = 33.0 This <Absolute Time> instance would then be attached as a component of the transmittal's <Transmittal Root>. 3. The date and time of observations. FAQS: None. Superclass: Time Point Constraints: Publishable Object Legal Time Ranges Component of (two-way) (inherited) zero or more Environment Root instances zero or more Time Constraints Data instances zero or one Transmittal Root instance Component of (two-way) zero or more Absolute Time Interval instances zero or more Citation instances zero or more Process Step instances zero or more Relative Time instances zero or more Relative Time Interval instances Inherited Field Elements: SE_Time_Significance time_significance; /* * The time_significance field specifies the significance of * the time information. */ Field Elements: SE_Time_Value time_value; /* * The time_value field specifies the time value. */ ------------------------------------------------------------------------------- Class Name: Absolute Time Interval Definition: An instance of this DRM class specifies an interval of time defined by an absolute (GMT) start time, specified by the <Absolute Time> component, and a duration, specified by the fields of the <Absolute Time Interval> instance itself. <Absolute Time Interval> provides - a means to specify a time interval in terms of absolute time (GMT) for metadata, and - a general-purpose mechanism for describing intervals specified in terms of absolute (GMT) time. Primary Page in DRM Diagram: 20 Example: 1. Consider a SEDRIS transmittal for which the data provider is to specify the time period for which that transmittal is to be considered valid. To specify this information, the <Transmittal Root> of the transmittal has an <Absolute Time Interval> component for which time_significance is set to SE_TIME_SIGNIF_PERIOD_OF_CONTENT. The stop time specified by the <Absolute Time Interval> can be considered to be an "expiration date". FAQS: None. Superclass: Time Interval Constraints: Publishable Object Legal Time Ranges Time Dependency Time Interval Calculation Composed of (two-way) one Absolute Time instance Component of (two-way) (inherited) zero or more Environment Root instances zero or more Time Constraints Data instances zero or one Transmittal Root instance zero or more Season instances zero or more Sound Instance instances zero or more Source instances Inherited Field Elements: SE_Time_Significance time_significance; /* * The time_significance field specifies the significance of * the time information. */ Field Elements: SE_Integer delta_days; /* * The delta_days field specifies the number of days since the start of * the given <Absolute Time Interval> instance. See constraints on this * class for cases where this may be negative. */ SE_Byte_Unsigned delta_hours; /* * After delta_days has been taken into account, delta_hours specifies * the number of hours since the start of the given * <Absolute Time Interval> instance. */ SE_Byte_Unsigned delta_minutes; /* * After delta_days and delta_hours have been taken into account, * delta_minutes specifies the number of minutes since the start of * the given <Absolute Time Interval> instance. */ SE_Long_Float delta_seconds; /* * After delta_days, delta_hours, and delta_minutes have been * taken into account, delta_seconds specifies the number of seconds * since the start of the given <Absolute Time Interval> instance. * Fractions provide higher accuracy if needed, such as milliseconds. */ ------------------------------------------------------------------------------- Class Name: Access Definition: An instance of this DRM class specifies the security classification and any access and/or usage constraints for its containing SEDRIS object, provided in a form compatible with ISO 19115. Primary Page in DRM Diagram: 1 Secondary Pages in DRM Diagram: 2 3 6 8 10 14 19 22 Example: 1. Given a <Transmittal Root> that has restricted access (no access by non-U.S. citizens) and is for official use only, its <Access> information might be access_constraints = SE_RESTR_CODE_RESTRICTED; use_constraints = SE_RESTR_CODE_OTHER_RESTRICTIONS; other_constraints = "For Official Use Only"; security.classification = SE_SEC_CL_CODE_SECRET; security.user_note = "No access by non-U.S. citizens"; security.classification_system = "United States Department of Defense"; security.handling_description = "Downgrade on 31 Dec 2004"; use_limitation = ""; FAQS: Q. What is the purpose of this class? A. This class supports the creation of SEDRIS transmittals that contain classified or sensitive data. Q. How is the security classification of a SEDRIS object related to the security classifications of its component objects, or to the security classification of its containing object? A. In general, the rules for security classification metadata for the SEDRIS objects within a transmittal are the same as the rules for security classification markings of the paragraphs and sections within a hierarchically structured classified document. The security classification of an object shall be at least as high as the highest of the security classifications of its components, and may be higher if the aggregation of the components allows additional information to be inferred. Therefore, the security classification of an object shall be no higher than the security classification of its containing object. Unclassified objects need not have an <Access> component, unless they are unclassified components of a classified containing object. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Mandatory Metadata Component of (two-way) zero or more Colour Table instances zero or more Colour Table Group instances zero or more Data Table instances zero or more Environment Root instances zero or more Feature Model instances zero or more Feature Representation instances zero or more Geometry Hierarchy instances zero or more Geometry Model instances zero or more Image instances zero or more Library instances zero or more Model instances zero or more Property Set instances zero or more Property Set Table instances zero or more Property Set Table Group instances zero or more Sound instances zero or more Symbol instances zero or one Transmittal Root instance Field Elements: SE_Restriction_Code access_constraints; /* * The access_constraints field expresses access constraints * applied to assure the protection of privacy or intellectual * property, and any special restrictions or limitations on * obtaining the resource being described by the given instance * of <Access>. */ SE_Restriction_Code use_constraints; /* * The use_constraints field expresses constraints applied to * assure the protection of privacy or intellectual property, * and any special restrictions or limitations or warnings on * using the resource being described by the given instance of * <Access>. */ SE_String other_constraints; /* * The other_constraints field specifies other restrictions and * legal prerequisites for accessing and using the resource * being described by the given instance of <Access>. */ SE_Security_Constraints security; /* * The security field specifies the security classification for the * given data object. */ SE_String use_limitation; /* * If non-empty, the use_limitation field specifies a limitation * affecting the fitness for use of the resource being described by the * given instance of <Access>. */ ------------------------------------------------------------------------------- Abstract Class Name: Aggregate Feature Definition: An instance of a concrete class derived from this DRM class specifies a collection of <Primitive Feature> and/or <Feature Hierarchy> instances, organized according to some organizing principle specific to the particular subclass of <Aggregate Feature> being considered. For most subclasses of <Aggregate Feature>, each individual branch of the aggregation is explicitly identified by a distinct link object. The various subclasses provide different mechanisms for organizing <Feature Representation> instances, which include: ALTERNATE HIERARCHY: Each branch is a <Feature Hierarchy> with a different <Hierarchy Data> instance, representing a different way of organizing the same underlying collection of <Feature Representation> instances. CLASSIFICATION: Each branch is a <Feature Hierarchy> with a different <Classification Data> instance, representing a different thematic layer, or a different classification of <Feature Representation> instances (e.g., roads, railroads) within a single thematic layer. LEVEL_OF_DETAIL: Each branch is a <Feature Hierarchy> with a distinct (but possibly overlapping), <Base LOD Data> instance, representing an alternative that is to be used at a specified level of detail. OCTANT: The <Aggregate Feature> represents an octant, where each branch is a <Feature Hierarchy> representing an octant, as identified by its <Octant Data> instance. PERIMETER: Each branch is a <Feature Hierarchy> that is located within a different cell of an irregular spatial index, as defined by its <Perimeter Data> instance. QUADRANT: The <Aggregate Feature> represents a quadrant, in which each branch is a <Feature Hierarchy> representing a quadrant, as identified by its <Quadrant Data> instance. SPATIAL_INDEX: The <Aggregate Feature> represents a regularly spaced spatial index grid, in which each branch is <Feature Hierarchy> instance representing a different cell within the spatial index. STATE: The <Aggregate Feature> represents something that can take on different state values for a specified EDCS Attribute Code (the state_tag, which shall have the "state-related" property). Each branch is a <Feature Hierarchy> instance with a different <State Data> instance, representing an alternative that shall be used to represent the <Aggregate Feature> when it takes on the specified state value. TIME: The <Aggregate Feature> represents something that has different representations for different time periods, so that each branch is a <Feature Hierarchy> instance with a distinct (though possibly overlapping) <Time Constraints Data> instance, representing an alternative that shall be used for the time period specified by its <Time Constraints Data>. UNION: Each branch is a <Feature Representation>, which may be either a <Primitive Feature> or a <Feature Hierarchy> instance. The reason for organizing them into separate components is only minimally specified. Primary Page in DRM Diagram: 8 Secondary Pages in DRM Diagram: 7 11 23 Example: See specific subclasses for examples. FAQS: Q. What is the purpose of this class? A. This class, through its subclasses, allows instances of <Feature Representation> to be hierarchically organized in a variety of different ways. The <Classification Related Features> subclass allows features to be organized according to their classification codes. The <Spatial Index Related Features>, <Perimeter Related Features>, <Quadrant Related Features>, and <Octant Related Features> subclasses allow features to be organized according to their locations. The <Alternate Hierarchy Related Features>, <LOD Related Features>, <State Related Features>, and <Time Related Features> subclasses allow multiple alternative representations of collections of <Feature Representation> instances to be created, with different alternatives used under different conditions. Finally, the <Union Of Features> subclass allows features to be grouped arbitrarily. Superclass: Feature Hierarchy Subclasses: Alternate Hierarchy Related Features Classification Related Features LOD Related Features Octant Related Features Perimeter Related Features Quadrant Related Features Spatial Index Related Features State Related Features Time Related Features Union Of Features Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Crossing Associations Precedence of Property Set Index Non Cyclic Aggregations Colour Mapping Restrictions Image Mapping Functions and Texture Coordinates Associated to (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or more Property Grid instances, each with a Base Association Data link object Associated by (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or more Property Grid instances, each with a Base Association Data link object zero or one Hierarchy Summary Item instance Composed of (two-way) (inherited) zero or one Classification Data instance zero or more Label instances zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or one Rendering Priority Level instance zero or one Reference Surface instance zero or more Sound Instance instances Composed of (two-way) zero or more Base LOD Data instances zero or more Colour instances zero or more Feature Topology Hierarchy instances zero or more {ordered} Image Mapping Function instances zero or one Perimeter Data instance zero or one Presentation Domain instance zero or more Property Description instances zero or one Spatial Extent instance Composed of (two-way metadata) (inherited) zero or one Access instance zero or more Cross Reference instances zero or one Data Quality instance zero or one Description instance zero or one Time Constraints Data instance Component of (two-way) (inherited) zero or more Union Of Features instances zero or more Alternate Hierarchy Related Features instances, each with a Hierarchy Data link object zero or more Classification Related Features instances, each with a Classification Data link object zero or one Environment Root instance zero or one Feature Model instance zero or more LOD Related Features instances, each with a Base LOD Data link object zero or more Octant Related Features instances, each with a Octant Data link object zero or more Perimeter Related Features instances, each with a Perimeter Data link object zero or more Quadrant Related Features instances, each with a Quadrant Data link object zero or more Spatial Index Related Features instances, each with a Spatial Index Data link object zero or more State Related Features instances, each with a State Data link object zero or more Time Related Features instances, each with a Time Constraints Data link object Field Elements: SE_Boolean unique_descendants; /* * If the value of the unique_descendants field is SE_TRUE, each * descendant, that is, each <Feature Representation> instance that * exists in the component tree rooted at the given <Aggregate Feature>, * shall be unique, in the * sense that it shall appear in only one branch of this aggregation. * If unique_descendants is SE_FALSE, at least one * <Feature Representation> instance * appears in more than one branch of the aggregation. */ SE_Boolean strict_organizing_principle; /* * If the value of the strict_organizing_principle field is SE_TRUE, * each branch of this aggregation * strictly complies with the organizing principle for its * particular subclass. If this value is SE_FALSE, at least * one branch does not strictly comply with the given * organizing principle. See the organizing principle constraint * for each specific subclass for details. */ ------------------------------------------------------------------------------- Abstract Class Name: Aggregate Geometry Definition: An instance of a concrete class derived from this DRM class specifies a collection of <Primitive Geometry> or <Geometry Hierarchy> instances, organized according to some organizing principle specific to the particular subclass of <Aggregate Geometry> being considered. For most subclasses of <Aggregate Geometry>, each individual branch of the aggregation is explicitly identified by a distinct link object. The various subclasses provide different mechanisms for organizing <Geometry Representation> instances, which include: ALTERNATE HIERARCHY: Each branch is a <Geometry Hierarchy> instance with a different <Hierarchy Data> instance, representing a different way of organizing the same underlying collection of <Geometry Representation> instances. ANIMATION: Each branch is a <Geometry Hierarchy> instance representing a different frame in an animation sequence. This organizing principle has no counterpart on the <Feature Representation> side. CLASSIFICATION: Each branch is a <Geometry Hierarchy> instance with a different <Classification Data> instance, representing either a different thematic layer, or a different classification of <Geometry Representation> instances (for example, roads, railroads) within a single thematic layer. CONTINUOUS_LEVEL_OF_DETAIL: Each branch is either a <Union Of Primitive Geometry> instance (usually a collection of <Polygon> instances), or a set of fragmented <Polygon> instances that represent the terrain at a finer level of detail at close range (or alternatively, with a coarser level of detail at long range). This mechanism is used to represent continuous terrain or continuous adaptive terrain. This organizing principle has no counterpart on the <Feature Representation> side. LEVEL_OF_DETAIL: Each branch is a <Geometry Hierarchy> instance with a different (but possibly overlapping) <Base LOD Data> instance, representing an alternative that shall be used at a specified level of detail. OCTANT: The <Aggregate Geometry> represents an octant, in which each branch is a <Geometry Hierarchy> representing an octant, as identified by its <Octant Data> instance. PERIMETER: Each branch is a <Geometry Hierarchy> that is located within a different cell of an irregular spatial index, as defined by its <Perimeter Data> instance. QUADRANT: The <Aggregate Geometry> represents a quadrant, in which each branch is a <Geometry Hierarchy> representing a quadrant, as identified by its <Quadrant Data> instance. SEPARATING_PLANE: Each branch is a <Separating Plane Relations>, each branch of which is a <Geometry Hierarchy> instance that is on either the positive or negative side of the associated <Separating Plane>, as indicated by the <Separating Plane Data> instance for that branch. This organizing principle has no counterpart on the <Feature Representation> side. SPATIAL_INDEX: The <Aggregate Geometry> represents a regularly spaced spatial index grid, in which each branch is a <Geometry Hierarchy> instance representing a different cell within the spatial index. STATE: The <Aggregate Geometry> represents something that can take on different state values for a specified EDCS Attribute Code (the state_tag, which shall have the "state-related" property). Each branch is a <Geometry Hierarchy> instance with a different <State Data> instance, representing an alternative that shall be used to represent the <Aggregate Geometry> when it takes on the specified state value. TIME: The <Aggregate Geometry> represents something that has different representations for different time periods, so that each branch is a <Geometry Hierarchy> instance with a distinct (though possibly overlapping) <Time Constraints Data> instance, representing an alternative that shall be used for the time period specified by its <Time Constraints Data>. UNION_OF_GEOMETRY_HIERARCHY: Each branch is a <Geometry Hierarchy> instance. The reason for organizing them into separate components is only minimally specified. This mechanism's counterpart on the <Feature Representation> side is <Union Of Features>. UNION_OF_PRIMITIVE_GEOMETRY: Each branch is a <Primitive Geometry> instance; <Primitive Geometry> can be included in a transmittal only by means of <Union Of Primitive Geometry> instances. This mechanism's counterpart on the <Feature Representation> side is <Union Of Features>. Primary Page in DRM Diagram: 4 Secondary Pages in DRM Diagram: 3 7 9 11 18 21 23 Example: See concrete subclasses for examples. FAQS: None. Superclass: Geometry Hierarchy Subclasses: Alternate Hierarchy Related Geometry Animation Related Geometry Classification Related Geometry Continuous LOD Related Geometry LOD Related Geometry Octant Related Geometry Perimeter Related Geometry Quadrant Related Geometry Separating Plane Related Geometry Spatial Index Related Geometry State Related Geometry Time Related Geometry Union Of Geometry Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Cyclic Aggregations Precedence of Property Set Index Non Crossing Associations Colour Mapping Restrictions Distinct Geometric Centre Image Mapping Functions and Texture Coordinates Associated to (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object Associated by (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or one Hierarchy Summary Item instance zero or more Reference Surface instances Composed of (two-way) (inherited) zero or one Classification Data instance zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or one Reference Surface instance zero or more Sound Instance instances Composed of (two-way) zero or more Base LOD Data instances zero or one Bounding Volume instance zero or more Camera Point instances zero or more Collision Volume instances zero or more Colour instances zero or one Conformal Behaviour instance a bounded set of 0..3 Geometric Centre instances zero or more Geometry Topology Hierarchy instances zero or more {ordered} Image Mapping Function instances zero or one Light Rendering Properties instance zero or more Light Source instances zero or one LSR Transformation instance zero or one Overload Priority Index instance zero or one Perimeter Data instance zero or one Presentation Domain instance zero or more Property Description instances zero or one Rendering Priority Level instance zero or one Rendering Properties instance zero or one Spatial Extent instance zero or one Stamp Behaviour instance Composed of (two-way metadata) (inherited) zero or one Time Constraints Data instance zero or one Access instance zero or more Cross Reference instances zero or one Data Quality instance zero or one Description instance Component of (two-way) (inherited) zero or more Alternate Hierarchy Related Geometry instances, each with a Hierarchy Data link object zero or more Animation Related Geometry instances zero or more Classification Related Geometry instances, each with a Classification Data link object zero or one Environment Root instance zero or one Geometry Model instance zero or more LOD Related Geometry instances, each with a Base LOD Data link object zero or more Octant Related Geometry instances, each with a Octant Data link object zero or more Perimeter Related Geometry instances, each with a Perimeter Data link object zero or more Quadrant Related Geometry instances, each with a Quadrant Data link object zero or more Separating Plane Relations instances, each with a Separating Plane Data link object zero or more Spatial Index Related Geometry instances, each with a Spatial Index Data link object zero or more State Related Geometry instances, each with a State Data link object zero or more Time Related Geometry instances, each with a Time Constraints Data link object zero or more Union Of Geometry Hierarchy instances Field Elements: SE_Boolean unique_descendants; /* * If the value of the unique_descendants field is SE_TRUE, each * descendant of this aggregation, * that is, each <Geometry Representation> instance that exists * in the component tree * rooted at the given <Aggregate Geometry>, shall be unique, in the * sense that it shall appear in only one branch of this aggregation. * If unique_descendants is SE_FALSE, at least one * <Geometry Representation> instance * appears in more than one branch of the aggregation. */ SE_Boolean strict_organizing_principle; /* * If the value of the strict_organizing_principle field is SE_TRUE, * each branch of this aggregation * strictly complies with the organizing principle for its * particular subclass. If this value is SE_FALSE, at least * one branch does not strictly comply with the given * organizing principle. See the organizing principle constraint * for each specific subclass for details. */ ------------------------------------------------------------------------------- Class Name: Alternate Hierarchy Related Features Definition: An instance of this DRM class specifies an aggregation of <Feature Hierarchy> instances, in which each component <Feature Hierarchy> is an alternate representation of the same environmental entity, and the corresponding <Hierarchy Data> instance indicates why that particular alternate representation was provided. Primary Page in DRM Diagram: 8 Example: 1. Consider a collection of <Feature Representation> instances representing a specific spatial region, for which there is a requirement that the <Feature Representation> instances shall be efficiently accessible both by location and by classification (such as ECC_ROAD, ECC_RIVER, ECC_VEGETATION). To satisfy this requirement, the data provider has chosen to use an <Alternate Hierarchy Related Features> instance with two components, in which one component (in this example, a <Quadrant Related Features> instance) organizes the <Feature Representation> instances spatially, while a second component (a <Classification Related Features> instance) organizes the <Feature Representation> instances by ECC. FAQS: Q. What is the purpose of this class? A. This class allows a single collection of <Feature Representation> instances to be hierarchically organized in two or more different ways. In one component, the <Feature Representation> instances might be organized spatially, while in another component they might be organized by classification. Each branch of an instance of this class provides a different access path to the same objects, where each branch is organized to be efficient with respect to a different access pattern. Superclass: Aggregate Feature Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Crossing Associations Precedence of Property Set Index Non Cyclic Aggregations Colour Mapping Restrictions Image Mapping Functions and Texture Coordinates Distinct Link Objects Associated to (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or more Property Grid instances, each with a Base Association Data link object Associated by (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or more Property Grid instances, each with a Base Association Data link object zero or one Hierarchy Summary Item instance Composed of (two-way) (inherited) zero or one Classification Data instance zero or more Label instances zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or one Rendering Priority Level instance zero or one Reference Surface instance zero or more Sound Instance instances zero or more Base LOD Data instances zero or more Colour instances zero or more Feature Topology Hierarchy instances zero or more {ordered} Image Mapping Function instances zero or one Perimeter Data instance zero or one Presentation Domain instance zero or more Property Description instances zero or one Spatial Extent instance Composed of (two-way) 2 or more Feature Hierarchy instances, each with a Hierarchy Data link object Composed of (two-way metadata) (inherited) zero or one Access instance zero or more Cross Reference instances zero or one Data Quality instance zero or one Description instance zero or one Time Constraints Data instance Component of (two-way) (inherited) zero or more Union Of Features instances zero or more Alternate Hierarchy Related Features instances, each with a Hierarchy Data link object zero or more Classification Related Features instances, each with a Classification Data link object zero or one Environment Root instance zero or one Feature Model instance zero or more LOD Related Features instances, each with a Base LOD Data link object zero or more Octant Related Features instances, each with a Octant Data link object zero or more Perimeter Related Features instances, each with a Perimeter Data link object zero or more Quadrant Related Features instances, each with a Quadrant Data link object zero or more Spatial Index Related Features instances, each with a Spatial Index Data link object zero or more State Related Features instances, each with a State Data link object zero or more Time Related Features instances, each with a Time Constraints Data link object Inherited Field Elements: SE_Boolean unique_descendants; /* * If the value of the unique_descendants field is SE_TRUE, each * descendant, that is, each <Feature Representation> instance that * exists in the component tree rooted at the given <Aggregate Feature>, * shall be unique, in the * sense that it shall appear in only one branch of this aggregation. * If unique_descendants is SE_FALSE, at least one * <Feature Representation> instance * appears in more than one branch of the aggregation. */ SE_Boolean strict_organizing_principle; /* * If the value of the strict_organizing_principle field is SE_TRUE, * each branch of this aggregation * strictly complies with the organizing principle for its * particular subclass. If this value is SE_FALSE, at least * one branch does not strictly comply with the given * organizing principle. See the organizing principle constraint * for each specific subclass for details. */ ------------------------------------------------------------------------------- Class Name: Alternate Hierarchy Related Geometry Definition: An instance of this DRM class specifies an aggregation of <Geometry Hierarchy> instances, in which each component <Geometry Hierarchy> is an alternate representation of the same environmental entity, and the corresponding <Hierarchy Data> instance indicates why that particular alternate representation was provided. Primary Page in DRM Diagram: 4 Example: 1. Consider a collection of <Geometry Representation> instances representing a specific spatial region, for which there is a requirement that the <Geometry Representation> instances shall be efficiently accessible both by location and by classification (such as ECC_ROAD, ECC_RIVER, ECC_VEGETATION). To satisfy this requirement, the data provider has chosen to use an <Alternate Hierarchy Related Geometry> instance with two components, in which one component (in this example, a <Spatial Index Related Geometry> instance) organizes the <Geometry Representation> instances spatially, while a second component (a <Classification Related Geometry> instance) organizes the <Geometry Representation> instances by ECC. FAQS: Q. What is the purpose of this class? A. This class allows a single collection of <Geometry Representation> instances to be hierarchically organized in two or more different ways. In one branch, the <Geometry Representation> instances might be organized spatially, while in another, they might be organized by classification. This provides two (or more) different access paths to the same objects, each organized to be efficient with respect to a different access pattern. Superclass: Aggregate Geometry Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Cyclic Aggregations Precedence of Property Set Index Non Crossing Associations Colour Mapping Restrictions Distinct Geometric Centre Image Mapping Functions and Texture Coordinates Distinct Link Objects Associated to (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object Associated by (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or one Hierarchy Summary Item instance zero or more Reference Surface instances Composed of (two-way) (inherited) zero or one Classification Data instance zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or one Reference Surface instance zero or more Sound Instance instances zero or more Base LOD Data instances zero or one Bounding Volume instance zero or more Camera Point instances zero or more Collision Volume instances zero or more Colour instances zero or one Conformal Behaviour instance a bounded set of 0..3 Geometric Centre instances zero or more Geometry Topology Hierarchy instances zero or more {ordered} Image Mapping Function instances zero or one Light Rendering Properties instance zero or more Light Source instances zero or one LSR Transformation instance zero or one Overload Priority Index instance zero or one Perimeter Data instance zero or one Presentation Domain instance zero or more Property Description instances zero or one Rendering Priority Level instance zero or one Rendering Properties instance zero or one Spatial Extent instance zero or one Stamp Behaviour instance Composed of (two-way) 2 or more Geometry Hierarchy instances, each with a Hierarchy Data link object Composed of (two-way metadata) (inherited) zero or one Time Constraints Data instance zero or one Access instance zero or more Cross Reference instances zero or one Data Quality instance zero or one Description instance Component of (two-way) (inherited) zero or more Alternate Hierarchy Related Geometry instances, each with a Hierarchy Data link object zero or more Animation Related Geometry instances zero or more Classification Related Geometry instances, each with a Classification Data link object zero or one Environment Root instance zero or one Geometry Model instance zero or more LOD Related Geometry instances, each with a Base LOD Data link object zero or more Octant Related Geometry instances, each with a Octant Data link object zero or more Perimeter Related Geometry instances, each with a Perimeter Data link object zero or more Quadrant Related Geometry instances, each with a Quadrant Data link object zero or more Separating Plane Relations instances, each with a Separating Plane Data link object zero or more Spatial Index Related Geometry instances, each with a Spatial Index Data link object zero or more State Related Geometry instances, each with a State Data link object zero or more Time Related Geometry instances, each with a Time Constraints Data link object zero or more Union Of Geometry Hierarchy instances Inherited Field Elements: SE_Boolean unique_descendants; /* * If the value of the unique_descendants field is SE_TRUE, each * descendant of this aggregation, * that is, each <Geometry Representation> instance that exists * in the component tree * rooted at the given <Aggregate Geometry>, shall be unique, in the * sense that it shall appear in only one branch of this aggregation. * If unique_descendants is SE_FALSE, at least one * <Geometry Representation> instance * appears in more than one branch of the aggregation. */ SE_Boolean strict_organizing_principle; /* * If the value of the strict_organizing_principle field is SE_TRUE, * each branch of this aggregation * strictly complies with the organizing principle for its * particular subclass. If this value is SE_FALSE, at least * one branch does not strictly comply with the given * organizing principle. See the organizing principle constraint * for each specific subclass for details. */ ------------------------------------------------------------------------------- Class Name: Ambient Colour Definition: An instance of this DRM class specifies the ambient reflectance component of a <Primitive Colour> or <Light Source>, providing the base colour to the lighting equation for the object being lit or the light itself, respectively. Ambient light is the result of bouncing light rays around the environment until the light has been diffused so much that its source and direction cannot be determined. Consequently, <Ambient Colour> is - independent of the angle of the lit object to the light source - independent of the angle of the lit object to the observer The <Ambient Colour> of an object is combined with the ambient component of each incoming light source to determine the colour due to the ambient light. Primary Page in DRM Diagram: 14 Secondary Pages in DRM Diagram: 21 Example: See <Primitive Colour>. FAQS: Q. Does SEDRIS use the OpenGL lighting model? A. No, although the terminology is similar. SEDRIS handles transparency somewhat differently than OpenGL does, among other things. For a description of the OpenGL lighting model, see [OPENGL], Chapter 5 "Lighting". Superclass: SEDRIS Abstract Base Constraints: Publishable Object Composed of (two-way) one Colour Data instance Component of (two-way) zero or one Light Source instance zero or one Primitive Colour instance ------------------------------------------------------------------------------- Class Name: Animation Behaviour Definition: An instance of this DRM class specifies, for its aggregate <Animation Related Geometry> instance(s), all the information necessary to define one animation sequence among the "frames" defined by that <Animation Related Geometry>. Primary Page in DRM Diagram: 4 Example: 1. An animation of an explosion could have many different sections. One section could represent the explosion, another section the fire, and another section smoke. The fields of this class give the duration of each frame and the beginning and ending frame sequence. 2. The <Animation Related Geometry> instance would have 60 ordered <Geometry Hierarchy> components. The first <Animation Behaviour> (explosion) would define frames 1 through 20 in its animation sequence. The second <Animation Behaviour> (fire) would define frames 21 through 40 in its animation sequence. The third <Animation Behaviour> (smoke) would define frames 41 through 60 as its sequence, with count set to 0. The effect would be to see the animation of the explosion followed by the fire, followed by the smoke. The smoke would last forever, since its count field was set to 0. FAQS: Q. Can animation sequences be chained together? A. Yes. An instance of the <Animation Related Geometry> class can have one or more ordered instances of <Animation Behaviour> as components. In the example (below) of an explosion, each one of the sections (that is, explosion, fire, and smoke) can be its own <Animation Behaviour>. Because the <Animation Behaviour> components are ordered, they behave as though they are chained together, one following the other. Q. Can the frames in different animation sequences overlap? A. Yes. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Component of (two-way) one or more Animation Related Geometry instances Field Elements: SE_Long_Float period; /* * The period field specifies the duration (in seconds) of each frame. */ SE_Short_Integer_Unsigned count; /* * The count field specifies the number of times that the animation * sequence will repeat, where 0 indicates that it repeats endlessly. */ SE_Boolean forward_sequence_mode; /* * If the value of the forward_sequence_mode field is SE_TRUE, * the animation sequence cycles from * beginning to end, beginning to end, beginning to end, for the * number of iterations specified by count; this is referred to * as *standard cycling*. If forward_sequence_mode is SE_FALSE, * the animation sequence cycles from beginning to end, end * to beginning, beginning to end, end to beginning, as specified * by count; this is referred to as *swing mode*. */ SE_Short_Integer_Positive beginning_frame; /* * The beginning_frame field specifies the index of the beginning * frame among the ordered <Geometry Hierarchy> components of the * <Animation Related Geometry> instance under consideration. */ SE_Short_Integer_Positive ending_frame; /* * The ending_frame field specifies the index of the ending * frame among the ordered <Geometry Hierarchy> components of the * <Animation Related Geometry> instance under consideration. */ SE_Boolean random_beginning_frame; /* * The random_beginning_frame field specifies whether the beginning * frame is chosen randomly. * If random_beginning_frame = SE_FALSE, the beginning frame is ignored, * and the sequence cycles towards the ending frame. */ ------------------------------------------------------------------------------- Class Name: Animation Related Geometry Definition: An instance of this DRM class specifies an aggregation of <Geometry Hierarchy> instances, in which each component <Geometry Hierarchy> acts as a frame in one or more animation sequence(s). Primary Page in DRM Diagram: 4 Example: 1. An aircraft that is modeled with landing gear. The landing gear is modeled in different positions, each representing a frame. These frames can be run in sequence, giving it an animated or moving effect. FAQS: Q. How complex can an animation frame be? A. Animation frames can be nothing more than a single <Polygon> changing an <Image>. They can also be much more complex, which may involve many attributes and aggregations. Superclass: Aggregate Geometry Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Cyclic Aggregations Precedence of Property Set Index Non Crossing Associations Colour Mapping Restrictions Distinct Geometric Centre Image Mapping Functions and Texture Coordinates Associated to (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object Associated by (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or one Hierarchy Summary Item instance zero or more Reference Surface instances Composed of (two-way) (inherited) zero or one Classification Data instance zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or one Reference Surface instance zero or more Sound Instance instances zero or more Base LOD Data instances zero or one Bounding Volume instance zero or more Camera Point instances zero or more Collision Volume instances zero or more Colour instances zero or one Conformal Behaviour instance a bounded set of 0..3 Geometric Centre instances zero or more Geometry Topology Hierarchy instances zero or more {ordered} Image Mapping Function instances zero or one Light Rendering Properties instance zero or more Light Source instances zero or one LSR Transformation instance zero or one Overload Priority Index instance zero or one Perimeter Data instance zero or one Presentation Domain instance zero or more Property Description instances zero or one Rendering Priority Level instance zero or one Rendering Properties instance zero or one Spatial Extent instance zero or one Stamp Behaviour instance Composed of (two-way) one or more {ordered} Animation Behaviour instances one or more {ordered} Geometry Hierarchy instances Composed of (two-way metadata) (inherited) zero or one Time Constraints Data instance zero or one Access instance zero or more Cross Reference instances zero or one Data Quality instance zero or one Description instance Component of (two-way) (inherited) zero or more Alternate Hierarchy Related Geometry instances, each with a Hierarchy Data link object zero or more Animation Related Geometry instances zero or more Classification Related Geometry instances, each with a Classification Data link object zero or one Environment Root instance zero or one Geometry Model instance zero or more LOD Related Geometry instances, each with a Base LOD Data link object zero or more Octant Related Geometry instances, each with a Octant Data link object zero or more Perimeter Related Geometry instances, each with a Perimeter Data link object zero or more Quadrant Related Geometry instances, each with a Quadrant Data link object zero or more Separating Plane Relations instances, each with a Separating Plane Data link object zero or more Spatial Index Related Geometry instances, each with a Spatial Index Data link object zero or more State Related Geometry instances, each with a State Data link object zero or more Time Related Geometry instances, each with a Time Constraints Data link object zero or more Union Of Geometry Hierarchy instances Inherited Field Elements: SE_Boolean unique_descendants; /* * If the value of the unique_descendants field is SE_TRUE, each * descendant of this aggregation, * that is, each <Geometry Representation> instance that exists * in the component tree * rooted at the given <Aggregate Geometry>, shall be unique, in the * sense that it shall appear in only one branch of this aggregation. * If unique_descendants is SE_FALSE, at least one * <Geometry Representation> instance * appears in more than one branch of the aggregation. */ SE_Boolean strict_organizing_principle; /* * If the value of the strict_organizing_principle field is SE_TRUE, * each branch of this aggregation * strictly complies with the organizing principle for its * particular subclass. If this value is SE_FALSE, at least * one branch does not strictly comply with the given * organizing principle. See the organizing principle constraint * for each specific subclass for details. */ ------------------------------------------------------------------------------- Class Name: Arc Definition: An instance of this DRM class specifies a circular arc, the endpoints of which are specified by the <Vertex> components, and the centre point is specified by the <Location> component. Primary Page in DRM Diagram: 5 Example: 1. A geometric representation of a treeline, or a string of lights that follow the path of the <Arc>. FAQS: Q. An <Arc> can be defined in different ways. Rather than using SEDRIS' method of three points that define the beginning, mid, and ending points on an <Arc>, I define an <Arc> with a centre point, radius, beginning angle, and ending angle. How can I implement this in SEDRIS? A. The following formulas show how centre point, radius, beginning and ending angles can be derived from the first set of information (beginning, mid, and ending points on the <Arc>). double x1, y1, /* beginning point */ x2, y2, /* mid point */ x3, y3, /* ending point */ sx1, sx2, sx3, /* squared x values */ sy1, sy2, sy3, /* squared y values */ ad, D, E, F, /* determinate values */ dc, ec, fc, /* coefficient values */ centrex, centrey, /* centre point of arc */ r, /* radius of arc */ ab, ae; /* beginning & ending angles */ /* get squared values */ sx1 = x1*x1; sx2 = x2*x2; sx3 = x3*x3; sy1 = y1*y1; sy2 = y2*y2; sy3 = y3*y3; /* get "a" determinate */ ad = x1*(y2 - y3) - y1*(x2-x3) + x2*y3 - x3*y2; /* get "D" determinate */ D = (sx1 + sy1)*(y2 - y3) - y1*((sx2 + sy2) - (sx3 + sy3)) + y3*(sx2 + sy2) - y2*(sx3 + sy3); /* get "E" determinate */ E = (sx1 + sy1)*(x2 - x3) - x1*((sx2 + sy2) - (sx3 + sy3)) + x3*(sx2 + sy2) - x2*(sx3 + sy3); /* get "F" determinate */ F = (sx1 + sy1)*(x2*y3 - x3*y2) - x1*(y3*(sx2 + sy2) - y2(sx3 + sy3)) + y1*(x3*(sx2 + sy2) - x2*(sx3 + sy3)); D = -D; F = -F; /* check for colinear point */ if (ad == 0.0) { fprintf(stderr, "ERROR! colinear point\n"); fflush(stderr); exit(-1); } /* get coefficients */ dc = D/(2.0*ad); ec = E/(2.0*ad); fc = F/ad; /* get centre point */ centrex = -dc; centrey = -ec; /* get radius */ r = sqrt((dc*dc + ec*ec - fc)); /* get beginning and ending angles */ ab = atan2(y1 - centrey, x1 - centrex); ae = atan2(y3 - centrey, x3 - centrex); Superclass: Linear Geometry Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Cyclic Aggregations Precedence of Property Set Index Colour Mapping Restrictions Continuous LOD Restrictions Image Mapping Functions and Texture Coordinates Nested Primitive Geometry Linear Geometry Structure Associated with (two-way) (inherited) zero or more {ordered} Geometry Edge instances, each with a Edge Directions link object Composed of (two-way) (inherited) zero or one Classification Data instance zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or more Colour instances zero or more {ordered} Image Mapping Function instances zero or one Light Rendering Properties instance zero or one Presentation Domain instance zero or one Rendering Priority Level instance zero or one Rendering Properties instance zero or more Tack Point instances zero or one Union Of Primitive Geometry instance Composed of (two-way) one Location instance exactly 2 {ordered} Vertex instances Composed of (two-way metadata) (inherited) zero or one Time Constraints Data instance Component of (two-way) (inherited) zero or more Union Of Primitive Geometry instances Inherited Field Elements: SE_Short_Integer_Unsigned count; /* * A value of zero (0) for the count field indicates that the given * <Linear Geometry> instance is to be rendered as solid. * * Otherwise, the interpretation of the count depends on whether * a <Light Rendering Properties> component is present for * the given <Linear Geometry> instance. * * - If a <Light Rendering Properties> component is present, then * count is the number of evenly spaced light points to be * rendered along the <Linear Geometry>. * * - If no <Light Rendering Properties> component is present, then * count is the number of evenly spaced line segments to be * rendered along the <Linear Geometry>. */ SE_Boolean suppress_last; /* * If count is greater than zero, the suppress_last field specifies * whether the last segment / point in the sequence is suppressed * or rendered. */ ------------------------------------------------------------------------------- Class Name: Areal Feature Definition: An instance of this DRM class specifies a <Primitive Feature> that encloses a bounded region, such as a forest or a built-up area. Primary Page in DRM Diagram: 8 Secondary Pages in DRM Diagram: 12 Example: 1. Consider an <Areal Feature> representing a lake. It has a <Feature Face>, which defines its size, shape, and topological relationships; <Classification Data> that identifies it as a lake, <Property Value> components that describe its characteristics, such as bottom composition, and a <Label> that identifies it as "Duck Lake". FAQS: Q. Is Level 3 feature topology required in order for <Areal Feature> instances to exist? A. No. Although in VPF, for example, the mere presence of Faces implies Level 3 topology, this is not the case in SEDRIS. <Areal Feature> instances may exist at any level of topology. Q. Can an <Areal Feature>'s topology consist of multiple <Feature Face> instances? If so, are these <Feature Face> instances required to be adjacent or connected to one another? A. An <Areal Feature> can consist of multiple <Feature Face> instances. There is no requirement that the <Feature Face> instances be connected to one another. For example, a forest that has a stream and a road passing through it commonly would be represented as a single <Areal Feature>, but might require multiple <Feature Face> instances. Superclass: Primitive Feature Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Crossing Associations Precedence of Property Set Index Colour Mapping Restrictions Image Mapping Functions and Texture Coordinates Associated to (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or more Property Grid instances, each with a Base Association Data link object Associated by (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or more Property Grid instances, each with a Base Association Data link object Associated with (two-way) one or more Feature Face instances, each with a Face Directions link object Composed of (two-way) (inherited) zero or one Classification Data instance zero or more Label instances zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or one Rendering Priority Level instance zero or more Colour instances zero or more {ordered} Image Mapping Function instances zero or one Presentation Domain instance zero or one Spatial Extent instance Composed of (two-way metadata) (inherited) zero or one Access instance zero or more Cross Reference instances zero or one Data Quality instance zero or one Description instance zero or one Time Constraints Data instance Component of (two-way) (inherited) zero or more Union Of Features instances ------------------------------------------------------------------------------- Class Name: Attachment Point Definition: An instance of this DRM class specifies a <Location 3D> where a consuming application may attach other <Model> instances. Primary Page in DRM Diagram: 2 Example: 1. Consider an aircraft <Model>, the hard points of which are represented as <Attachment Point> instances. Consider a second <Model>, representing a missile. One missile hangs below the wing, and another missile hangs from the tip of the wing. In this case, the matrix formed by the <Attachment Point> instances would convey the appropriate rotation. The missile, on the other hand, would use an <LSR Transformation> to move the missile's origin (which would probably be its <Geometric Centre> SE_GEOM_CTR_CODE_CENTRE_OF_MASS) to the point on or near the surface where it attaches to the airplane's <Attachment Point> instances. FAQS: None. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Composed of (two-way) one Location 3D instance Component of (two-way) one Geometry Model instance ------------------------------------------------------------------------------- Abstract Class Name: Axis Definition: An instance of a concrete class derived from this DRM class specifies a set of values of an independent variable to be used to organize the dependent values in an instance of <Data Table>. Primary Page in DRM Diagram: 6 Secondary Pages in DRM Diagram: 23 Example: 1. A table of Digital Terrain Elevation Data (DTED) contains terrain elevation data sampled in a grid of regularly spaced longitude and latitude points. The <Axis> components of such a table are longitude and latitude. 2. A table of ocean temperature and salinity data taken at varying depths by an expendable bathythermograph can be captured in a table. Such a table would have depth as an <Axis>, and temperature and pressure would be <Table Property Description> components. If these data were taken at intervals along a path, the locations on that path (say longitudes) would form a second <Axis> of the now two-dimensional table. FAQS: Q. How are the values on an <Axis> related? A. The values on a single axis shall be distinct values of a single variable specified by the axis_type. If the axis is numeric, then the values shall be arranged monotonically. Q. Can an <Axis> have no values or a single value? A. An <Axis> shall have at least one value; an axis with no values is a violation of SEDRIS' constraints. If the <Axis> has a single value, this implies that all of the data in the table shares that value. There may be better ways to associate a single value with all the table entries. Q. Given 2 variables, where certain combinations of values for these 2 variables are impossible or meaningless, can a data provider combine these 2 variables on a single <Axis> in order to exclude the meaningless cells? A. No. A data provider should include the meaningless cells, and set a value for EVC_NOT_APPLICABLE, and use it for those cells. Superclass: SEDRIS Abstract Base Subclasses: Enumeration Axis Interval Axis Irregular Axis Regular Axis Constraints: Publishable Object Axis Type Restrictions Component of (two-way) one or more Data Table instances Field Elements: EDCS_Attribute_Code axis_type; /* * The axis_type field specifies the property being described by the * given <Axis> instance. */ SE_Short_Integer_Positive axis_value_count; /* * The axis_value_count field specifies the number of "hash marks" * along the given <Axis> instance. */ ------------------------------------------------------------------------------- Class Name: AZ 2D Location Definition: An instance of this DRM class specifies a coordinate within the Azimuthal spherical (Az) 2D SRF. See [I18026] for a complete definition. Primary Page in DRM Diagram: 15 Example: None. FAQS: None. Superclass: Location 2D Constraints: Publishable Object Environment Root Spatial Reference Frame Image Anchor Spatial Reference Frame Model Spatial Reference Frame Component of (two-way) (inherited) zero or more Arc instances zero or more Camera Point instances zero or more Directional Light Behaviour instances zero or one Distance LOD Data instance zero or more Ellipse instances zero or more Feature Edge instances zero or more Feature Face instances zero or one Feature Node instance zero or more Image Anchor instances zero or more Label instances zero or more Perimeter Data instances zero or more Point instances zero or more Property Grid Hook Point instances zero or one Reference Origin instance zero or more Reference Vector instances zero or more Spatial Extent instances zero or more Spatial Index Related Feature Topology instances zero or more Spatial Index Related Features instances zero or more Spatial Index Related Geometry instances zero or more Spatial Index Related Geometry Topology instances zero or more Tack Point instances zero or more Vertex instances zero or more World 3x3 instances zero or more World Transformation instances Field Elements: SRM_AZ_2D_Coordinate coordinate; /* * The coordinate field specifies the coordinate values. */ ------------------------------------------------------------------------------- Abstract Class Name: Base Association Data Definition: An instance of a concrete class derived from this DRM class specifies the semantic meaning of the association relationship with which it is bound. Primary Page in DRM Diagram: 9 Secondary Pages in DRM Diagram: 3 6 8 23 Example: See concrete subclasses for examples. FAQS: None. Superclass: SEDRIS Abstract Base Subclasses: Base Spatial Association Data Functional Association Data Constraints: Publishable Object ------------------------------------------------------------------------------- Abstract Class Name: Base LOD Data Definition: An instance of a concrete class derived from this DRM class specifies the rules and data that govern the replacement of objects based upon a predefined function. The specific function is specific to the particular subclass used. Primary Page in DRM Diagram: 9 Secondary Pages in DRM Diagram: 4 6 8 23 Example: See individual subclasses for examples. FAQS: None. Superclass: SEDRIS Abstract Base Subclasses: Distance LOD Data Index LOD Data Map Scale LOD Data Spatial Resolution LOD Data Volume LOD Data Constraints: Publishable Object LOD Related Organizing Principle Component of (two-way) zero or more Aggregate Feature instances zero or more Aggregate Geometry instances zero or more Property Grid Hook Point instances ------------------------------------------------------------------------------- Abstract Class Name: Base Positional Light Definition: An instance of a concrete class derived from this DRM class is a <Light Source> that radiates in all directions from a specified point in 3D space with a sphere of influence centred at that point, the radius of which is specified by the value of the radius field. Only objects that are within the sphere of influence of a <Base Positional Light> instance (that is, an instance of one of its concrete subclasses) can be affected by that <Base Positional Light>. Specific subclasses may further restrict the zone of influence to only a portion of the sphere. The degree to which an object is affected in the zone of influence depends on the attenuation of the <Base Positional Light>, which depends on the values of its attenuation factor fields. If attenuation is not specified - that is, when constant_attenuation_factor = 1.0, linear_attenuation_factor = 0.0, and quadratic_attenuation_factor = 0.0 - the light ends abruptly at the edge of the sphere of influence. Otherwise, the light intensity components (ambient, diffuse, and specular) are attenuated by the reciprocal of the attenuation quadratic (a + bd + cd**2), where a, b, c are the attenuation factor field values as noted in their footnotes, and d is the distance from the position of the <Base Positional Light>. Consequently, the formula for the final attenuation factor is: 1 -------------------------------------------------------------- [ constant_attenuation_factor + (distance * linear_attenuation_factor) + ((distance squared) * quadratic_attenuation_factor) ] Primary Page in DRM Diagram: 21 Secondary Pages in DRM Diagram: 23 Example: See subclasses for examples. FAQS: None. Superclass: Light Source Subclasses: Positional Light Spot Light Constraints: Publishable Object Composed of (two-way) (inherited) one Ambient Colour instance one Diffuse Colour instance zero or one Light Source Control Link instance one Specular Colour instance Composed of (two-way) one Location 3D instance Component of (two-way) (inherited) one or more Aggregate Geometry instances Inherited Field Elements: SE_Boolean apply_to_children; /* * For a <Light Source> instance (that is, an instance of one of the * concrete classes descended from the class) that is a component of * some <Aggregate Geometry>, apply_to_children provides a mechanism * for limiting the scope of the <Light Source>. If apply_to_children * is SE_TRUE, only <Primitive Geometry> in the component tree of those * <Aggregate Geometry> instances are affected by the given * <Light Source>. If apply_to_children is SE_FALSE, the <Light Source> * is not limited to the scope of those <Aggregate Geometry> instances * and thus applies globally. */ SE_Boolean override_positional_lights; /* * For a <Light Source> instance that is a component of some * <Aggregate Geometry>, override_positional_lights provides a * mechanism to indicate with a value of SE_TRUE that the effect of the * given <Light Source> overrides that of any <Base Positional Light> * instances that would have otherwise applied to that * <Aggregate Geometry> - for example, if the given <Light Source> is * so close to the affected <Geometry Representation> that the * <Base Positional Light> effects would be negligible. If * override_positional_lights = SE_FALSE, the effect of the * given <Light Source> is combined with that * of any <Base Positional Light> instances that are already in effect. */ SE_Boolean override_infinite_lights; /* * For a <Light Source> instance (that is, an instance of one of the * concrete classes descended from the class) that is a component of * some <Aggregate Geometry>, override_infinite_lights provides a * mechanism to indicate with a value of SE_TRUE that the effect of the * given <Light Source> overrides that of any <Infinite Light> * instances that would have otherwise applied to that * <Aggregate Geometry>. If override_infinite_lights = SE_FALSE, * the effect of the given <Light Source> is combined with that * of any <Infinite Light> instances that are already in effect. */ SE_Boolean active_light_value; /* * A value of SE_TRUE for the active_light_value field indicates * that the light is on, while a value of * SE_FALSE indicates that the light is off. For a <Light Source> * with a <Light Source Control Link> instance as a component, * this is the default state of the light. */ Field Elements: SE_Float radius; /* * The radius field, which is specified in metres, together with * the <Location 3D> component specifies the zone of influence * of the given <Base Positional Light> instance. */ SE_Long_Float constant_attenuation_factor; /* * The constant_attenuation_factor field is the constant "a" * in the attenuation quadratic (a + bd + cd**2). */ SE_Long_Float linear_attenuation_factor; /* * The linear_attenuation_factor field is the constant "b" * in the attenuation quadratic (a + bd + cd**2). */ SE_Long_Float quadratic_attenuation_factor; /* * The quadratic_attenuation_factor field is the constant "c" * in the attenuation quadratic (a + bd + cd**2). */ ------------------------------------------------------------------------------- Abstract Class Name: Base Spatial Association Data Definition: An instance of a concrete class derived from this DRM class specifies the semantic meaning of the association relationship with which it is bound, which will represent a spatial relationship. Primary Page in DRM Diagram: 9 Secondary Pages in DRM Diagram: 23 Example: See concrete subclasses for examples. FAQS: None. Superclass: Base Association Data Subclasses: Proximity Data Spatial Association Data Constraints: Publishable Object Field Elements: SE_Spatial_Association_Meaning_Type meaning; /* * The meaning field specifies the semantic meaning of the association * relationship with which the given instance of * <Base Spatial Association Data> is bound. */ ------------------------------------------------------------------------------- Abstract Class Name: Base Summary Item Definition: An instance of a concrete class derived from this DRM class represents an instance (or group of instances) of the specified class that exist within the scope being summarized; the specific aspect of the class' usage that is being summarized depends on the concrete subclass of <Base Summary Item> being instanced. Primary Page in DRM Diagram: 20 Secondary Pages in DRM Diagram: 23 Example: See specific subclasses for examples. FAQS: Q. Can the same classes be represented by <DRM Class Summary Item>, <Hierarchy Summary Item> and / or <Primitive Summary Item> instances in the same transmittal? A. Yes. Superclass: SEDRIS Abstract Base Subclasses: DRM Class Summary Item Hierarchy Summary Item Primitive Summary Item Constraints: Publishable Object Composed of (two-way metadata) zero or more EDCS Use Summary Item instances Field Elements: SE_DRM_Class drm_class; /* * The drm_class field indicates the DRM class of the object(s) * represented by the given <Base Summary Item> instance. */ ------------------------------------------------------------------------------- Abstract Class Name: Base Time Data Definition: An instance of a concrete class derived from this DRM class specifies a time period. Primary Page in DRM Diagram: 20 Secondary Pages in DRM Diagram: 1 23 Example: See specific subclasses for examples. FAQS: None. Superclass: SEDRIS Abstract Base Subclasses: Season Time Interval Time Of Day Time Point Constraints: Publishable Object Component of (two-way) zero or more Environment Root instances zero or more Time Constraints Data instances zero or one Transmittal Root instance Field Elements: SE_Time_Significance time_significance; /* * The time_significance field specifies the significance of * the time information. */ ------------------------------------------------------------------------------- Class Name: Blend Directional Light Definition: An instance of this DRM class specifies a <Directional Light Behaviour>, the intensity of which varies depending on the observer's position relative to the light's location, direction, and shape. This light takes the shape of a pyramid, subdivided by two planes. These planes are based at the pyramid's apex and extend towards the base. They subdivide the pyramid into upper and lower sections with a blend section in between. The upper section receives the primary colour, while the lower section receives the secondary colour. The blend section blends between the primary and secondary colours depending on the viewing position. Primary Page in DRM Diagram: 21 Example: 1. Consider a <Blend Directional Light> instance with both a primary and a secondary colour. <Blend Directional Light> upper_plane_angular_offset = 1.5 pi / 180.0 lower_plane_angular_offset = -2.5 pi / 180.0 <> | <Lobe Data> horizontal_width = pi / 2.0 vertical_width = pi / 2.0 At 10 pi / 180.0 radians from the SE_REF_VEC_TYP_LIGHT_DIRECTION vector in the vertical direction, towards the positive end of the SE_REF_VEC_TYP_VERTICAL_AXIS vector, the primary colour is visible, because the position lies in the upper section of the pyramid, inside the lobe. At 10 pi / 180.0 radians from the SE_REF_VEC_TYP_LIGHT_DIRECTION vector in the vertical direction, towards the positive end of the SE_REF_VEC_TYP_VERTICAL_AXIS vector, the primary colour is visible, because the position lies at the upper edge of the blend section. Moving from this position along the SE_REF_VEC_TYP_VERTICAL_AXIS vector toward the negative end, the amount of primary colour decreases as it is blended with proportionally increasing amounts of the secondary colour, because this lies within the blend section of the pyramid, from the upper edge to the lower edge. At -0.5 pi / 180.0 radians from the SE_REF_VEC_TYP_LIGHT_DIRECTION vector in the vertical direction (that is, towards the negative direction of the vertical axis), the primary and secondary colours are blended in equal amounts, since this position is in the middle of the blend section. Moving in the same direction, the amount of primary colour continues to decrease proportionally as the amount of secondary colour increases. At -2.5 pi / 180.0 radians from the light direction, only the secondary colour is visible, as this is the lower edge of the blend section. At -10 pi / 180.0 radians from the SE_REF_VEC_TYP_LIGHT_DIRECTION vector in the vertical direction, that is, towards the negative end of the SE_REF_VEC_TYP_VERTICAL_AXIS vector, the secondary colour is visible, as this lies in the lower section of the pyramid. At -50 pi / 180.0 radians from the SE_REF_VEC_TYP_LIGHT_DIRECTION vector in the vertical direction, that is, towards the negative end of the vertical axis vector, nothing is visible, since this lies outside the pyramid. FAQS: None. Superclass: Directional Light Behaviour Constraints: Publishable Object Composed of (two-way) (inherited) one Lobe Data instance one Location instance Component of (two-way) (inherited) one or more Light Rendering Properties instances Field Elements: SE_Long_Float upper_plane_angular_offset; /* * The upper_plane_angular_offset field specifies the angular offset * of the plane separating the upper and blend sections, in radians, * from the given <Lobe Data> instance's SE_REF_VEC_TYP_LIGHT_DIRECTION * vector, measured along its SE_REF_VEC_TYP_VERTICAL_AXIS vector. * The resulting upper section of the light is taken to be * between the plane and the positive end of the vertical axis * SE_REF_VEC_TYP_VERTICAL_AXIS vector. */ SE_Long_Float lower_plane_angular_offset; /* * The lower_plane_angular_offset field specifies the angular offset * of the plane separating the lower and blend sections, in radians, * from the given <Lobe Data> instance's * SE_REF_VEC_TYP_LIGHT_DIRECTION vector, measured along its * SE_REF_VEC_TYP_VERTICAL_AXIS vector. * * The resulting lower section of the light is taken to be between * the plane and the negative end of the * SE_REF_VEC_TYP_VERTICAL_AXIS vector. */ ------------------------------------------------------------------------------- Class Name: Bounding Volume Definition: An instance of this DRM class specifies a volume that encompasses the <Aggregate Geometry> of which it is a component. Primary Page in DRM Diagram: 9 Secondary Pages in DRM Diagram: 4 Example: 1. The rectangular <Bounding Volume> of a house that is used to show the maximum extents of the house in three dimensions. This may be used to calculate first level ray-volume intersections. FAQS: Q. Can an <Aggregate Geometry>'s <Bounding Volume> and <Collision Volume> be the same? A. Yes. Q. Is the <Bounding Volume> the convex hull of the <Aggregate Geometry>? A. Not necessarily. The convex hull could be considerably more complex than the <Volume Extent> (see). Q. Does the <Bounding Volume> exactly contain the <Aggregate Geometry>? A. In special cases, the <Bounding Volume> may fail to contain all of the geometry due to "warping" introduced by coordinate conversion or transformation. Superclass: Volume Constraints: Publishable Object Composed of (two-way) (inherited) one Location 3D instance one Volume Extent instance Component of (two-way) one Aggregate Geometry instance ------------------------------------------------------------------------------- Class Name: Browse Media Definition: An instance of this DRM class specifies a graphic or multimedia resource that provides a preview of the content of its containing SEDRIS object. Primary Page in DRM Diagram: 20 Example: 1. A map of the area covered by a <Transmittal Root> or <Environment Root> instance. 2. A rotating image of a <Model> of an M1A2 tank. 3. A thumbnail version of an <Image> in the <Image Library>. 4. A graphic visualization of a function defined by a <Data Table>. 5. A graphic depiction of the contents of a <Colour Table>. 6. As a component of <Transmittal Root>, a movie clip of a fly-through of the transmittal. FAQS: Q. What is the purpose of this class? A. This class provides ISO 19115-compliant metadata in the form of a graphical or multi-media representation that previews the content of its containing SEDRIS object. Its purpose is to allow a potential user of the attributed object to easily assess the utility of the attributed object. Q. How is the graphic or multi-media resource encoded? What format(s) can be used? A. The resource is identified by a SEDRIS media URN which can be resolved to a URL for the resource. The URN contains a "media format tag" field. These tags are registered by the SEDRIS Organization to denote specific media formats. The resource may be encoded in any one of these registered formats. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Mandatory Metadata Component of (two-way) zero or more Description instances Field Elements: SE_String name; /* * The name field specifies the title of the resource. */ SE_Media_Format media_format; /* * The media_format field specifies the media format of the resource. */ SE_URN media_urn; /* * The media_urn field specifies a SEDRIS media URN, in the form * urn:x-sedris:<DNAS>:media=<MN> * where: * <DNAS> is domain name authority name string, and * <MN> is a scoped browse media resource name string. */ SE_String description; /* * The description field, if not empty, provides a description of * the resource. */ ------------------------------------------------------------------------------- Class Name: Camera Point Definition: An instance of this DRM class specifies an eye point to view from, specifying a location, an orientation, and either an orthographic or perspective viewing volume. A viewing volume is defined, oriented along the axis defined to start at the camera <Location 3D> and oriented as specified by the components of the <Camera Point>. This orientation defines the coordinate space of the camera, where the camera is at (0, 0, 0) and is oriented to look down the +Y axis (assuming the XY plane defines the horizontal plane and the right-hand rule applies). The viewing volume of a given <Camera Point> instance is defined based on two planes specified by two parallel rectangles in space, the near clipping plane and the far clipping plane. The near clipping plane is the plane perpendicular to the camera axis and located camera_near metres from the <Location> of the <Camera Point>. The far clipping plane is parallel to the near clipping plane, but is located camera_far metres from the <Location> of the <Camera Point>. If projection = SE_CAM_PROJ_TYP_ORTHOGRAPHIC, then the viewing volume is the parallelepiped volume between the two clipping planes, bounded by the rectangle specified by (left, bottom) as its lower left corner and (right, top) as its upper right corner. If the camera defines a perspective view point, then the viewing volume is a frustum that can be described by in one of two ways. The perspective viewing volume can be defined as the volume starting at the near clipping plane rectangle and expanding to the far clipping plane. Alternatively, the perspective viewing volume can be described by a field-of-view angle, an aspect ratio that is the width of the frustum divided by its height, and the distance to the near and far clipping planes. Primary Page in DRM Diagram: 18 Secondary Pages in DRM Diagram: 4 7 22 Example: 1. A perspective viewing point defined at the beginning of a runway, oriented to look down the runway. 2. An orthographic viewing point defined high above the transmittal, in the centre of the transmittal, to give a "God's eye view" of the entire transmittal. FAQS: Q. What are <Camera Point> instances used for? A. Typically, <Camera Point> instances are used for pre-set views into a transmittal. They can also be used for eye point attachments for own-ship <Model> instances. Superclass: SEDRIS Abstract Base Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Associated to (one-way) zero or one Image instance Composed of (two-way) zero or one Classification Data instance one Location instance zero or more Property Value instances exactly 2 Reference Vector instances Component of (two-way) one or more Aggregate Geometry instances Field Elements: SE_Camera_Projection_Type projection; /* * The projection_field specifies the type of perspective projection * in use by the given <Camera Point> instance. */ SE_Long_Float camera_near; /* * The camera_near field specifies the distance from camera position * to near clipping plane, in metres. */ SE_Long_Float camera_far; /* * The camera_far field specifies the distance from camera position * to far clipping plane, in metres. */ SE_Boolean use_left_right_bottom_top; /* * If the value of the use_left_right_bottom_top field is SE_TRUE, * use the parameters from the left, right, bottom, and top fields. * These fields are always used for orthographic viewing, but * perspective viewing can either use these fields or the * field-of-view and aspect ratio fields. */ SE_Long_Float left; /* * The left field specifies the X coordinate of the lower left corner * of the rectangle in the near clipping plane. */ SE_Long_Float bottom; /* * The bottom field specifies the Y coordinate of the lower left corner * of the rectangle in the near clipping plane. */ SE_Long_Float top; /* * The top field specifies the Y coordinate of the upper right corner * of the rectangle in the near clipping plane. */ SE_Long_Float right; /* * The right field specifies the X coordinate of the upper right corner * of the rectangle in the near clipping plane. */ SE_Long_Float horizontal_field_of_view; /* * The horizontal_field_of_view field specifies the angle, in radians, * of the horizontal field of view. This value is used for perspective * viewing if the use_left_right_bottom_top flag is SE_FALSE, assuming * a on-axis symmetric viewing volume. Off axis viewing volumes are * not supported. */ SE_Long_Float aspect_ratio; /* * The aspect_ratio field specifies the width of the frustum divided * by its height. This value is used for perspective viewing if the * use_left_right_bottom_top flag is SE_FALSE. */ ------------------------------------------------------------------------------- Class Name: CC 3D Location Definition: An instance of this DRM class specifies a coordinate within the Celestiocentric (CC) 3D SRF. See [I18026] for a complete definition. Primary Page in DRM Diagram: 15 Example: 1. CC is used in Distributed Interactive Simulation (DIS) to define the position of all simulated entities. 2. CC provides a convenient system for relating the SRF of a rotating Earth to a variety of Earth mass-centred inertial SRFs. FAQS: Q. Where can users obtain further information on CC? A. See the SRM for additional details. Superclass: Location 3D Constraints: Publishable Object Environment Root Spatial Reference Frame Image Anchor Spatial Reference Frame Model Spatial Reference Frame Component of (two-way) (inherited) zero or more Arc instances zero or more Camera Point instances zero or more Directional Light Behaviour instances zero or one Distance LOD Data instance zero or more Ellipse instances zero or more Feature Edge instances zero or more Feature Face instances zero or one Feature Node instance zero or more Image Anchor instances zero or more Label instances zero or more Perimeter Data instances zero or more Point instances zero or more Property Grid Hook Point instances zero or one Reference Origin instance zero or more Reference Vector instances zero or more Spatial Extent instances zero or more Spatial Index Related Feature Topology instances zero or more Spatial Index Related Features instances zero or more Spatial Index Related Geometry instances zero or more Spatial Index Related Geometry Topology instances zero or more Tack Point instances zero or more Vertex instances zero or more World 3x3 instances zero or more World Transformation instances zero or one Attachment Point instance zero or more Base Positional Light instances zero or one Contact Point instance zero or more Geometric Centre instances zero or more Separating Plane instances zero or more Sound Instance instances zero or more Stamp Behaviour instances zero or more Volume instances zero or more Volume Light Behaviour instances zero or more Volume LOD Data instances zero or more Volume Object instances Field Elements: SRM_Euclidean_3D_Coordinate coordinate; /* * The coordinate field specifies the coordinate values. */ ------------------------------------------------------------------------------- Class Name: CD 3D Location Definition: An instance of this DRM class specifies a coordinate within the Celestiodetic (CD) 3D SRF. See [I18026] for a complete definition. Primary Page in DRM Diagram: 15 Example: 1. A <Feature Node> instance representing Cinderella Castle at Walt Disney World in Orlando, Florida might have a <CD 3D Location> instance with coordinate.latitude = 28.25, coordinate.longitude = 81.35, and coordinate.ellipsoidal_height = 0.0. FAQS: Q. Where can users obtain further information on CD? A. See the SRM for additional details. Superclass: Location 3D Constraints: Publishable Object Environment Root Spatial Reference Frame Image Anchor Spatial Reference Frame Model Spatial Reference Frame Component of (two-way) (inherited) zero or more Arc instances zero or more Camera Point instances zero or more Directional Light Behaviour instances zero or one Distance LOD Data instance zero or more Ellipse instances zero or more Feature Edge instances zero or more Feature Face instances zero or one Feature Node instance zero or more Image Anchor instances zero or more Label instances zero or more Perimeter Data instances zero or more Point instances zero or more Property Grid Hook Point instances zero or one Reference Origin instance zero or more Reference Vector instances zero or more Spatial Extent instances zero or more Spatial Index Related Feature Topology instances zero or more Spatial Index Related Features instances zero or more Spatial Index Related Geometry instances zero or more Spatial Index Related Geometry Topology instances zero or more Tack Point instances zero or more Vertex instances zero or more World 3x3 instances zero or more World Transformation instances zero or one Attachment Point instance zero or more Base Positional Light instances zero or one Contact Point instance zero or more Geometric Centre instances zero or more Separating Plane instances zero or more Sound Instance instances zero or more Stamp Behaviour instances zero or more Volume instances zero or more Volume Light Behaviour instances zero or more Volume LOD Data instances zero or more Volume Object instances Field Elements: SRM_CD_3D_Coordinate coordinate; /* * The coordinate field specifies the coordinate values. */ ------------------------------------------------------------------------------- Class Name: CD Surface Location Definition: An instance of this DRM class specifies a coordinate within the Celestiodetic Surface SRF. See [I18026] for a complete definition. Primary Page in DRM Diagram: 15 Example: 1. A <Feature Node> instance representing Cinderella Castle at Walt Disney World in Orlando, Florida might have a <CD Surface Location> instance with coordinate.latitude = 28.25 and coordinate.longitude = 81.35. FAQS: Q. Where can users obtain further information on CD? A. See the SRM for additional details. Superclass: Location Surface Constraints: Publishable Object Environment Root Spatial Reference Frame Image Anchor Spatial Reference Frame Model Spatial Reference Frame Component of (two-way) (inherited) zero or more Arc instances zero or more Camera Point instances zero or more Directional Light Behaviour instances zero or one Distance LOD Data instance zero or more Ellipse instances zero or more Feature Edge instances zero or more Feature Face instances zero or one Feature Node instance zero or more Image Anchor instances zero or more Label instances zero or more Perimeter Data instances zero or more Point instances zero or more Property Grid Hook Point instances zero or one Reference Origin instance zero or more Reference Vector instances zero or more Spatial Extent instances zero or more Spatial Index Related Feature Topology instances zero or more Spatial Index Related Features instances zero or more Spatial Index Related Geometry instances zero or more Spatial Index Related Geometry Topology instances zero or more Tack Point instances zero or more Vertex instances zero or more World 3x3 instances zero or more World Transformation instances Field Elements: SRM_CD_Surface_Coordinate coordinate; /* * The coordinate field specifies the coordinate values. */ ------------------------------------------------------------------------------- Class Name: Citation Definition: An instance of this DRM class specifies the recommended bibliographic reference information to be used for the data set being described, such that the information is provided in an ISO 19115 compatible form. In the documentation for this class, the phrase "the data set" refers to "the data set being described by the given <Citation> instance". This, in turn, refers to the object tree rooted at the aggregate of the <Citation> instance. If a <Citation> instance is shared by multiple aggregate objects, "the data set" refers to the collection of object trees rooted at its various aggregates. Primary Page in DRM Diagram: 20 Secondary Pages in DRM Diagram: 1 2 6 10 14 19 22 Example: 1. Consider a SEDRIS transmittal produced from Vector Product Format (VPF) source data, where the source data is not part of a series, and where this is its first edition as a SEDRIS transmittal. In this case, the transmittal was produced by Sterling Logicon, via their VPF-SEDRIS conversion software. The citation information for the transmittal's <Transmittal Root> is as follows. title = "dtopn/t007us01"; edition = "1.0"; series_name = "N/A"; issue_identification = "N/A"; other_citation_details = "Created using VPF-SEDRIS Converter"; The <Absolute Time> instance's fields are set to the following. time_significance = SE_TIME_SIGNIF_PUBLICATION_DATE time_value.configuration = SE_TIME_CFG_DATE_YMD_AND_TIME_H time_value.value.ymd_hms.year = 2002; time_value.value.ymd_hms.month = SE_MONTH_JUNE; time_value.value.ymd_hms.day = 22; time_value.value.ymd_hms.hour = 14; time_value.value.ymd_hms.minutes = 56; time_value.value.ymd_hms.seconds = 30.0; FAQS: Q. What is the purpose of this class? A. This class provides ISO 19115-compliant metadata that allows a <Transmittal Root> or a high-level component of a <Transmittal Root> (e.g., a <Model>, <Image>, etc.) to be referenced in external documents. <Citation> identifies the object by name and edition/version, and specifies who created and/or released the object, and when it was created/released. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Mandatory Metadata Composed of (two-way) one Absolute Time instance Composed of (two-way metadata) one Responsible Party instance Component of (two-way) zero or more Colour Table instances zero or more Colour Table Group instances zero or more Cross Reference instances zero or more Data Table instances zero or more Environment Root instances zero or more Image instances zero or more Keywords instances zero or more Library instances zero or more Model instances zero or more Property Set instances zero or more Property Set Table instances zero or more Property Set Table Group instances zero or more Sound instances zero or more Source instances zero or more Symbol instances zero or one Transmittal Root instance Field Elements: SE_String title; /* * The title field specifies the name by which the data object is known. */ SE_String edition; /* * If provided, the edition field specifies the version of the * data object. */ SE_String series_name; /* * The series_name field specifies the name of the series, or * aggregate data set, of which the given data set is a part. */ SE_String issue_identification; /* * The issue_identification field identifies the issue of the series. */ SE_String other_citation_details; /* * The other_citation_details field supplies any other information * required to complete the citation that is not recorded elsewhere. */ ------------------------------------------------------------------------------- Class Name: Classification Data Definition: An instance of this DRM class specifies an ECC indicating what the object to which the <Classification Data> is being applied represents. If the ECC requires elaboration by EACs, then the <Classification Data> may have elaborating <Property Value> components. <Classification Data> is used in three different contexts. 1. A <Classification Data> instance can be a component of an <EDCS Use Summary Item>; see that class for an explanation of its usage. 2. If X is an instance of a DRM class other than <EDCS Use Summary Item>, and X has a <Classification Data> instance as a component, then the <Classification Data> specifies what X represents. 3. If X, Y are SEDRIS objects such that X has Y as a component with a <Classification Data> instance as a link object on the relationship, then the <Classification Data> specifies what Y represents. For this case, see <Classification Related Features> and <Classification Related Geometry> for a more detailed discussion. Primary Page in DRM Diagram: 20 Secondary Pages in DRM Diagram: 2 3 4 6 8 9 10 18 19 22 Example: 1. An ECC such as ECC_DRIVE_IN_THEATRE or ECC_ROAD. 2. A <Classification Data> with tag = ECC_BUILDING, elaborated with a <Property Value> component with attribute code EAC_BUILDING_FUNCTION and value EEC_BLDGFN_CASTLE: <Point Feature> <> | | <Classification Data> tag = ECC_BUILDING <> | | <Property Value> meaning = { SE_PROP_CODE_TYP_ATTRIBUTE, {EAC_BUILDING_FUNCTION}} value = { EDCS_AVT_ENUMERATION, {EEC_BLDGFN_CASTLE}} FAQS: Q. Where can users find a list of EDCS' classification codes? A. See the EDCS Classification Codes section of Part 4, volume 17 of the SEDRIS Documentation Set. Q. Why not just attach an elaborating <Property Value> component to the classified object? A. Because that would represent an attribute of the object instead of an elaboration of the classifying concept. Q. How can a data consumer determine which version of EDCS was used to produce a given transmittal? A. The Level 0 API has a function that provides this information: SE_GetTransmittalVersionInformation() Superclass: SEDRIS Abstract Base Constraints: Publishable Object Composed of (two-way) zero or more Property Value instances Component of (two-way) zero or more Camera Point instances zero or more Data Table instances zero or more EDCS Use Summary Item instances zero or more Feature Representation instances zero or more Geometry Representation instances zero or more Image instances zero or more Model instances zero or more Property Set instances zero or more Sound instances zero or more Symbol instances Field Elements: EDCS_Classification_Code tag; /* * The tag field specifies the ECC. */ ------------------------------------------------------------------------------- Class Name: Classification Related Features Definition: An instance of this DRM class specifies an aggregation of <Feature Hierarchy> instances, organized according to their ECCs, such that each component <Feature Hierarchy> instance represents 1) a different thematic layer, or 2) a different classification of <Feature Representation> instances within a single thematic layer. Each branch of a <Classification Related Features> instance therefore has a <Classification Data> instance associated with it as a link object, specifying its (possibly elaborated) classification. Primary Page in DRM Diagram: 8 Example: 1. Several thematic layers of features might be grouped using a <Classification Related Features> instance, with each of its components representing a separate thematic layer (such as culture or vegetation). In such a case, the unique_descendants and strict_organizing_principle flags of the <Classification Related Features> instance should be set to SE_TRUE. The <Classification Data> link object associated with each of its components identifies the contents of each thematic layer, and each of the components is an independent topological complex and has a <Feature Topology Hierarchy>. A region consisting of forest and water is represented as a <Classification Related Features> with strict_organizing_principle set to SE_TRUE, containing two <Union Of Features> components. The first, containing the forest features, has a <Classification Data> link object with tag = ECC_FOREST, while the second, containing the water features, has a <Classification Data> link object with tag = ECC_WATER. 2. Considering the first example, suppose that roads run through the forest. The forest <Union Of Features> can then be replaced with another <Classification Related Features> having 2 branches, one classified as ECC_ROAD and the other as ECC_FOREST, and the strict_organizing_principle flag in example 1's <Classification Related Features> would set to SE_FALSE, because the forest branch at the coarse level contains non-forest (in this case, road) features. 3. A large collection of features might be organized using a <Classification Related Features> instance, with multiple component <Union Of Features> instances, containing cultural, vegetation, and surface drainage features, respectively. FAQS: Q. What is the purpose of this class? A. <Classification Related Features> exists to provide a mechanism for hierarchically organizing <Feature Representation> instances according to their (possibly elaborated) classification. Superclass: Aggregate Feature Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Crossing Associations Precedence of Property Set Index Non Cyclic Aggregations Colour Mapping Restrictions Image Mapping Functions and Texture Coordinates Distinct Link Objects Associated to (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or more Property Grid instances, each with a Base Association Data link object Associated by (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or more Property Grid instances, each with a Base Association Data link object zero or one Hierarchy Summary Item instance Composed of (two-way) (inherited) zero or one Classification Data instance zero or more Label instances zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or one Rendering Priority Level instance zero or one Reference Surface instance zero or more Sound Instance instances zero or more Base LOD Data instances zero or more Colour instances zero or more Feature Topology Hierarchy instances zero or more {ordered} Image Mapping Function instances zero or one Perimeter Data instance zero or one Presentation Domain instance zero or more Property Description instances zero or one Spatial Extent instance Composed of (two-way) one or more Feature Hierarchy instances, each with a Classification Data link object Composed of (two-way metadata) (inherited) zero or one Access instance zero or more Cross Reference instances zero or one Data Quality instance zero or one Description instance zero or one Time Constraints Data instance Component of (two-way) (inherited) zero or more Union Of Features instances zero or more Alternate Hierarchy Related Features instances, each with a Hierarchy Data link object zero or more Classification Related Features instances, each with a Classification Data link object zero or one Environment Root instance zero or one Feature Model instance zero or more LOD Related Features instances, each with a Base LOD Data link object zero or more Octant Related Features instances, each with a Octant Data link object zero or more Perimeter Related Features instances, each with a Perimeter Data link object zero or more Quadrant Related Features instances, each with a Quadrant Data link object zero or more Spatial Index Related Features instances, each with a Spatial Index Data link object zero or more State Related Features instances, each with a State Data link object zero or more Time Related Features instances, each with a Time Constraints Data link object Inherited Field Elements: SE_Boolean unique_descendants; /* * If the value of the unique_descendants field is SE_TRUE, each * descendant, that is, each <Feature Representation> instance that * exists in the component tree rooted at the given <Aggregate Feature>, * shall be unique, in the * sense that it shall appear in only one branch of this aggregation. * If unique_descendants is SE_FALSE, at least one * <Feature Representation> instance * appears in more than one branch of the aggregation. */ SE_Boolean strict_organizing_principle; /* * If the value of the strict_organizing_principle field is SE_TRUE, * each branch of this aggregation * strictly complies with the organizing principle for its * particular subclass. If this value is SE_FALSE, at least * one branch does not strictly comply with the given * organizing principle. See the organizing principle constraint * for each specific subclass for details. */ ------------------------------------------------------------------------------- Class Name: Classification Related Geometry Definition: An instance of this DRM class specifies an aggregation of <Geometry Hierarchy> instances, organized according to their ECCs, such that each component <Geometry Hierarchy> instance represents 1) a different thematic layer, or 2) a different classification of <Geometry Representation> instances within a single thematic layer. Each branch of a <Classification Related Geometry> instance therefore has a <Classification Data> instance associated with it as a link object, specifying its (possibly elaborated) classification. Primary Page in DRM Diagram: 4 Example: 1. A surface area consisting of forest and water is represented as a <Classification Related Geometry> with strict_organizing_principle set to SE_TRUE, containing two <Union Of Primitive Geometry> components. The first, containing the forest polygons, has a <Classification Data> link object with a tag value of ECC_FOREST, while the second, containing the water polygons, has a <Classification Data> link object with a tag value of ECC_WATER. 2. In the first example, suppose a road runs through the forest. Then the forest <Union Of Primitive Geometry> can be replaced with another <Classification Related Geometry> having 2 branches, one classified as ECC_ROAD and the other as ECC_FOREST, and the strict_organizing_principle flag mentioned in example 1 is set to SE_FALSE, because the forest branch at the coarse level contains non-forest (that is, road) geometry. FAQS: Q. What is the purpose of this class? A. <Classification Related Geometry> exists to provide a mechanism for hierarchically organizing <Geometry Representation> instances according to their (possibly elaborated) classification. Superclass: Aggregate Geometry Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Cyclic Aggregations Precedence of Property Set Index Non Crossing Associations Colour Mapping Restrictions Distinct Geometric Centre Image Mapping Functions and Texture Coordinates Distinct Link Objects Associated to (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object Associated by (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or one Hierarchy Summary Item instance zero or more Reference Surface instances Composed of (two-way) (inherited) zero or one Classification Data instance zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or one Reference Surface instance zero or more Sound Instance instances zero or more Base LOD Data instances zero or one Bounding Volume instance zero or more Camera Point instances zero or more Collision Volume instances zero or more Colour instances zero or one Conformal Behaviour instance a bounded set of 0..3 Geometric Centre instances zero or more Geometry Topology Hierarchy instances zero or more {ordered} Image Mapping Function instances zero or one Light Rendering Properties instance zero or more Light Source instances zero or one LSR Transformation instance zero or one Overload Priority Index instance zero or one Perimeter Data instance zero or one Presentation Domain instance zero or more Property Description instances zero or one Rendering Priority Level instance zero or one Rendering Properties instance zero or one Spatial Extent instance zero or one Stamp Behaviour instance Composed of (two-way) one or more Geometry Hierarchy instances, each with a Classification Data link object Composed of (two-way metadata) (inherited) zero or one Time Constraints Data instance zero or one Access instance zero or more Cross Reference instances zero or one Data Quality instance zero or one Description instance Component of (two-way) (inherited) zero or more Alternate Hierarchy Related Geometry instances, each with a Hierarchy Data link object zero or more Animation Related Geometry instances zero or more Classification Related Geometry instances, each with a Classification Data link object zero or one Environment Root instance zero or one Geometry Model instance zero or more LOD Related Geometry instances, each with a Base LOD Data link object zero or more Octant Related Geometry instances, each with a Octant Data link object zero or more Perimeter Related Geometry instances, each with a Perimeter Data link object zero or more Quadrant Related Geometry instances, each with a Quadrant Data link object zero or more Separating Plane Relations instances, each with a Separating Plane Data link object zero or more Spatial Index Related Geometry instances, each with a Spatial Index Data link object zero or more State Related Geometry instances, each with a State Data link object zero or more Time Related Geometry instances, each with a Time Constraints Data link object zero or more Union Of Geometry Hierarchy instances Inherited Field Elements: SE_Boolean unique_descendants; /* * If the value of the unique_descendants field is SE_TRUE, each * descendant of this aggregation, * that is, each <Geometry Representation> instance that exists * in the component tree * rooted at the given <Aggregate Geometry>, shall be unique, in the * sense that it shall appear in only one branch of this aggregation. * If unique_descendants is SE_FALSE, at least one * <Geometry Representation> instance * appears in more than one branch of the aggregation. */ SE_Boolean strict_organizing_principle; /* * If the value of the strict_organizing_principle field is SE_TRUE, * each branch of this aggregation * strictly complies with the organizing principle for its * particular subclass. If this value is SE_FALSE, at least * one branch does not strictly comply with the given * organizing principle. See the organizing principle constraint * for each specific subclass for details. */ ------------------------------------------------------------------------------- Class Name: CM 3D Location Definition: An instance of this DRM class specifies a coordinate within the Celestiomagnetic 3D SRF. See [I18026] for a complete definition. Primary Page in DRM Diagram: 15 Example: 1. The positions of magnetic observatories are often expressed in celestiomagnetic coordinates. 2. Positions of charged particles affected by the Earth's magnetic fields, as well as the magnetic fields themselves, can be expressed conveniently in celestiomagnetic coordinates. FAQS: Q. How is the dipole position determined? A. The International Association of Geomagnetism and Aeronomy (IAGA) updates the dipole position every 5 years, and 1995 is the epoch for the current location. The U.S. representative to the IAGA working group is John Quinn at the USGS in Golden, CO: 303-273-8475, jquinn@usgs.gov The U.S. Air Force's AFRL/VSB maintains the value of the standard radius of the Earth; this value is currently set at 6378145.0 metres. Q. When the ORM represents the Earth, how is the centre of Earth defined, and what is the shape of the surface of Earth that is being assumed? A. The references that discuss the celestiomagnetic coordinate system (e.g., Handbook of Geophysics and the Space Environment, Airforce Geophysics Laboratory) do not define the centre of the Earth and the shape of the Earth, because the applications for ionospheric and near-Earth space analysis that use this SRF do not require a formal or precise standard defining the centre or the shape of the Earth. If a model were to apply a more precise measure, the output of the model would be essentially unchanged because the inaccuracy inherent in the model is large compared to the differences between the assumption of a spherical earth and another, more accurate ellipsoid. The SRM defines the CM SRF consistent with the World Geodetic System 1984 (WGS-84) ORM definition of the Earth's centre and surface ellipsoidal shape. This allows unambiguous interconversion of CM and other SRF locations (e.g. CD). The matrix transformation outlined above assumes that the user has already converted the celestiodetic (CD) { latitude, longitude, altitude} to a geocentric (GC) vector. This conversion is where the shape of the Earth is important. Likewise, once the CM vector is obtained, the shape of the Earth is important in the conversion from the CM vector to a CM { latitude, longitude, radius}. Q. Where can users obtain further information on CM? A. See the SRM for additional details. Superclass: Location 3D Constraints: Publishable Object Environment Root Spatial Reference Frame Image Anchor Spatial Reference Frame Model Spatial Reference Frame Component of (two-way) (inherited) zero or more Arc instances zero or more Camera Point instances zero or more Directional Light Behaviour instances zero or one Distance LOD Data instance zero or more Ellipse instances zero or more Feature Edge instances zero or more Feature Face instances zero or one Feature Node instance zero or more Image Anchor instances zero or more Label instances zero or more Perimeter Data instances zero or more Point instances zero or more Property Grid Hook Point instances zero or one Reference Origin instance zero or more Reference Vector instances zero or more Spatial Extent instances zero or more Spatial Index Related Feature Topology instances zero or more Spatial Index Related Features instances zero or more Spatial Index Related Geometry instances zero or more Spatial Index Related Geometry Topology instances zero or more Tack Point instances zero or more Vertex instances zero or more World 3x3 instances zero or more World Transformation instances zero or one Attachment Point instance zero or more Base Positional Light instances zero or one Contact Point instance zero or more Geometric Centre instances zero or more Separating Plane instances zero or more Sound Instance instances zero or more Stamp Behaviour instances zero or more Volume instances zero or more Volume Light Behaviour instances zero or more Volume LOD Data instances zero or more Volume Object instances Field Elements: SRM_Spherical_3D_Coordinate coordinate; /* * The coordinate field specifies the coordinate values. */ ------------------------------------------------------------------------------- Class Name: CMY Colour Definition: An instance of this DRM class specifies the actual cyan, magenta, and yellow data values for a colour defined within the CMY colour model. These values shall be between 0.0 and 1.0, inclusive. Note that the CMY colour model is closely related to the RGB colour model. Cyan is the complement of Red (Cyan = 1.0 - Red); Magenta, of Green (Magenta = 1.0 - Green); and Yellow, of Blue (Yellow = 1.0 - Blue) Primary Page in DRM Diagram: 14 Example: 1. A CMY colour for pure black (cmy_data.cyan = 1.0, cmy_data.magenta = 1.0, cmy_data.yellow = 1.0) 2. A CMY colour for bright red (cmy_data.cyan = 0.0, cmy_data.magenta = 1.0, cmy_data.yellow = 1.0) FAQS: Q. How can a data consumer who uses RGB rather than CMY get RGB from a CMY transmittal? A. This is very easy to do. After opening the transmittal, before retrieving any <Colour Data>, (or even before opening the transmittal), call the SE_SetColourModel() function, like so: "SE_SetColourModel(SE_CLR_MDL_RGB);" and for the rest of the execution of that program, would never get back a <CMY Colour> instance, because each <Colour Data> instance retrieved from there on out would be an <RGB Colour> instance. Also, if a user has colour data to be converted from one colour model to another (such as from CMY to RGB), standard utility functions are provided in the DRM API to carry out these data conversions. Q. How can a user who needs CMYK convert data into or out of CMYK? A. CMYK can be simply derived from CMY. If the user does not care to perform the derivation personally, the DRM API provides colour conversion functions that convert between CMY and CMYK. The derivation is quite simple. Given a CMY colour, e.g. one with data values of (cyan = 0.7, magenta = 0.5, yellow = 0.2), find the minimum value. In this example, yellow is the minimum value. To convert any CMY colour to a CMYK colour, set the black value equal to the minimum CMY value, then subtract the minimum value from each CMY value. In this example, the CMY colour of (cyan = 0.7, magenta = 0.5, yellow = 0.2) is converted to the CMYK values (cyan = 0.5, magenta = 0.3, yellow = 0.0, black = 0.2) Superclass: Colour Data Constraints: Publishable Object Composed of (two-way) zero or one CMY Colour Control Link instance Component of (two-way) (inherited) zero or more Ambient Colour instances zero or more Diffuse Colour instances zero or more Emissive Colour instances zero or more Specular Colour instances Field Elements: SE_CMY_Data cmy_data; /* * The cmy_data field specifies the CMY colour coordinate. */ ------------------------------------------------------------------------------- Class Name: CMY Colour Control Link Definition: An instance of this DRM class specifies a specialized <Control Link> instance providing the connection between an ordered aggregation of <Expression> instances and the target fields of one or more <CMY Colour> instances. Primary Page in DRM Diagram: 17 Secondary Pages in DRM Diagram: 14 Example: 1. Consider a transmittal, produced with CMY colours, the <Model Library> of which contains a <Model> representing a car with a <Geometry Model>, the geometry of which consists of <Polygon> instances with <Inline Colour> components. This car model is instanced in many places throughout the transmittal, and the data provider wishes to vary its appearance depending on the <Geometry Model Instance>. Consequently, each <CMY Colour> instance in the <Model> has a <CMY Colour Control Link> instance, supplying the value of the yellow field of the <CMY Colour> with a <Variable>. <Model> <> |------------------------------------ | | | | <Geometry Model> <Interface Template> <> | | | <Union Of Primitive Geometry> | <> | | | <Polygon> | <> | | | <Inline Colour> | <> | | | <Primitive Colour> | <> | | | <Ambient Colour> | <> | | | <CMY Colour> | <> | | | <CMY Colour Control Link> | cyan_expr_index = 0 | magenta_expr_index = 0 | yellow_expr_index = 1 | <> | | | <Variable> -------------------------------- meaning = { SE_PROP_CODE_TYP_VARIABLE, { SE_VAR_CODE_COLOUR_COORDINATE_3 }} value_unit = EUC_UNITLESS value_scale = ESC_UNI value_type = EDCS_AVT_REAL Each <Geometry Model Instance> of this <Model> can then provide, via the <Model>'s <Interface Template>, a different value for the yellow field of the <CMY Colour>, thus allowing each <Geometry Model Instance> to look different. FAQS: None. Superclass: Control Link Constraints: Publishable Object Composed of (two-way) (inherited) one or more {ordered} Expression instances Component of (two-way) one or more CMY Colour instances Inherited Field Elements: SE_String description; /* * The description field specifies a text description of the given * <Control Link> instance's purpose. */ Field Elements: SE_Integer_Unsigned cyan_expr_index; /* * The value of the cyan_expr_index field specifies * which <Expression> component, if any, controls the * cmy_data.cyan field value of the affected * <CMY Colour> instances. If the value is zero, the * cmy_data.cyan field of those instances is not controlled; * otherwise, the value is a 1-based index into the ordered * aggregation of <Expression> instances. */ SE_Integer_Unsigned magenta_expr_index; /* * The value of the magenta_expr_index field specifies which * <Expression> component, if any, controls the cmy_data.magenta * field value of the affected <CMY Colour> instances. If the * value is zero, the cmy_data.magenta field of those instances * is not controlled; * otherwise, the value is a 1-based index into the ordered * aggregation of <Expression> instances. */ SE_Integer_Unsigned yellow_expr_index; /* * The value of the yellow_expr_index field specifies which * <Expression> component, if any, * controls the cmy_data.yellow field value of the affected * <CMY Colour> instances. If the value is zero, the * cmy_data.yellow field of those instances is not controlled; * otherwise, the value is a 1-based index into the ordered * aggregation of <Expression> instances. */ ------------------------------------------------------------------------------- Class Name: Collision Volume Definition: An instance of this DRM class specifies a <Volume> that encompasses part (possibly all) of the <Aggregate Geometry> of which it is a component, and is used in collision detection. Primary Page in DRM Diagram: 9 Secondary Pages in DRM Diagram: 4 Example: 1. The cylinder that describes the gun tube of a weapon system. 2. Consider a geometric representation of a car, for which it will be necessary to compute intersections of the front of the car with other objects. In this example, the data provider constructs a perpendicular volume projecting from the front bumper of the car representation, and uses the resulting <Parallelelpiped Volume Extent> to specify a <Collision Volume> for the car representation. FAQS: Q. May an <Aggregate Geometry> specify the same volume of space for both its <Bounding Volume> and its <Collision Volume>? A. Yes. Q. If an <Aggregate Geometry> instance has multiple <Collision Volume> components, how are they to be interpreted? A. The complete volume specified by the union of all the individual <Collision Volume> components is that which is used for collision detection. This capability is provided to allow <Collision Volume> information to be provided for complex shapes. Superclass: Volume Constraints: Publishable Object Composed of (two-way) (inherited) one Location 3D instance one Volume Extent instance Component of (two-way) one Aggregate Geometry instance ------------------------------------------------------------------------------- Abstract Class Name: Colour Definition: An instance of a concrete class derived from this DRM class is either an instance of <Inline Colour> (which will be directly attached to representations of coloured objects) or an instance of <Colour Index> (referring to colours stored in a <Colour Table> instance). Primary Page in DRM Diagram: 14 Secondary Pages in DRM Diagram: 4 5 8 18 19 23 Example: See concrete subclasses for examples. FAQS: Q. Where can one find more information on colour in SEDRIS? A. See Part 4, Volume 8 Images and Colour Models Technical Guide of the SEDRIS Documentation Set for further information. Q. Where do RGB values go in all this? How is a single, simple colour represented? A. The actual colour values are represented by a single <Primitive Colour> for each <Colour> instance. The location of this <Primitive Colour> depends on whether the <Colour> in question is an <Inline Colour> or a <Colour Index>. See those classes for details. A single, simple colour is represented as an <Inline Colour>, the colour_mapping of which is set to some variation of PRIMARY_COLOUR, and the <Primitive Colour> of which has only an <Ambient Colour> component specified. See <Primitive Colour> for further discussion. Q. How can a data provider represent a colour (such as RGB) that has a coefficient (such as K)? A. The data provider in this example has two options. 1) The coefficient can be factored into the colour to create an <Inline Colour> instance. 2) The colour can be placed in a <Colour Table> instance, then referenced by a <Colour Index> instance, the intensity of which is set to the value of the coefficient. Q. How does one determine how to apply a <Colour> instance to the object using it? What is the colour_mapping field for? A. The colour_mapping field indicates how to apply a <Colour> instance to the object using it -- which side of the object it applies to, whether it is used for the primary colour, for distance or image blending, or something else. (See SE_Colour_Mapping for the details of specific colour mappings). Incidentally, the colour_mapping field is a set rather than a simple enumeration, in order to simplify the consumer's task of identifying what a colour applies to. Its members are taken from the SE_Colour_Mapping enumeration. Q. Is a <Primitive Geometry> instance required to have a PRIMARY_COLOUR as a component (whether direct or inherited)? A. No. Some texture mapping techniques don't require colour to be present on <Polygon> instances, so some data providers have no PRIMARY_COLOUR to supply. If a consumer cannot handle the texture mapping technique used in a transmittal, then the consumer will have to choose some appropriate default colour. Q. Are all combinations of PRIMARY_COLOUR, DISTANCE_BLEND_COLOUR, and IMAGE_BLEND_COLOUR colour mapping valid for a single polygon's OTW front face? A. Yes. Superclass: SEDRIS Abstract Base Subclasses: Colour Index Inline Colour Constraints: Publishable Object Colour Mapping Restrictions Composed of (two-way) zero or one Presentation Domain instance zero or one Translucency instance Component of (two-way) zero or more Aggregate Feature instances zero or more Aggregate Geometry instances zero or more Primitive Feature instances zero or more Primitive Geometry instances zero or more Property Set instances zero or more Vertex instances Field Elements: SE_Colour_Mapping colour_mapping; /* * The colour_mapping field specifies the set of SE_Colour_Mapping * tokens applicable to the given <Colour> instance. */ ------------------------------------------------------------------------------- Abstract Class Name: Colour Data Definition: An instance of a concrete class derived from this DRM class specifies a 3-tuple representing a colour value, that is, the actual colour coordinate values for a colour in the given colour model. Primary Page in DRM Diagram: 14 Secondary Pages in DRM Diagram: 23 Example: See concrete subclasses for examples. FAQS: Q. Consider a data consumer who does not use the colour model that the data provider used. How can the data consumer get the colour values in the consumer's colour model? A. If the consumer's colour model is one of the SEDRIS defined colour models (RGB, CMY, or HSV), the SEDRIS Level 0 API, if directed to do so, will change all <Primitive Colour> instances into whichever directly supported colour model the data consumer wishes to specify. If the data consumer's colour model is not directly supported, the consumer should retrieve the data in an appropriate colour model for use with one of the utility functions provided in the DRM API. Q. Where can users find more information on colour in SEDRIS? A. See Part 4, Volume 8 Images and Colour Models Technical Guide of the SEDRIS Documentation Set for further information. Superclass: SEDRIS Abstract Base Subclasses: CMY Colour HSV Colour RGB Colour Constraints: Publishable Object Component of (two-way) zero or more Ambient Colour instances zero or more Diffuse Colour instances zero or more Emissive Colour instances zero or more Specular Colour instances ------------------------------------------------------------------------------- Class Name: Colour Index Definition: An instance of this DRM class specifies the means of referencing a <Primitive Colour> that is contained in a <Colour Table>. A <Colour Index> instance contains an index into the primary <Colour Table> of the <Colour Table Group> to which it is associated. The <Colour Table Group> specifies which of its component <Colour Table> instances is being used, while the <Colour Index> specifies which <Primitive Colour> within that primary <Colour Table> is being referenced. Primary Page in DRM Diagram: 14 Example: 1. Consider a <Colour Table Group>, the primary <Colour Table> of which consists of <Primitive Colour> instances for Out-the-Window (OTW) viewing conditions. A <Polygon> that references the kth <Primitive Colour> in this table will do so by having a <Colour Index> component that is associated to the <Colour Table Group> and the index value of which is set to k. If the <Colour Index> is solely responsible for the <Polygon>'s colour, its intensity_level will be 100.0. FAQS: Q. I am attempting to consume an object, e.g. a <Polygon>, the <Colour> of which is specified by a <Colour Index>. What can I do to get access to the actual <Primitive Colour> being referred to? A. A consumer can access the actual <Primitive Colour> instances contained within a <Colour Table>, just as though <Inline Colour> instances had been used, via the Level 0 API. See SE_InitializeComponentIterator()'s directly_attach_table_components parameter, and SE_GetComponent()'s directly_attach_table_components parameter. Q. How can I, as a data provider, specify that a <Colour> contributes x percent (e.g. 25%) of the total effect on a coloured object, while an <Image Mapping Function> provides the remaining 100%-x (e.g. 75%)? A. See <Colour Index>'s intensity_level field and <Image Mapping Function>'s intensity_level field. Superclass: Colour Constraints: Publishable Object Colour Mapping Restrictions Associated to (one-way) one Colour Table Group instance Composed of (two-way) (inherited) zero or one Presentation Domain instance zero or one Translucency instance Composed of (two-way) zero or one Colour Index Control Link instance Component of (two-way) (inherited) zero or more Aggregate Feature instances zero or more Aggregate Geometry instances zero or more Primitive Feature instances zero or more Primitive Geometry instances zero or more Property Set instances zero or more Vertex instances Inherited Field Elements: SE_Colour_Mapping colour_mapping; /* * The colour_mapping field specifies the set of SE_Colour_Mapping * tokens applicable to the given <Colour> instance. */ Field Elements: SE_Integer_Positive index; /* * The index field specifies which <Primitive Colour> instance within the * referenced <Colour Table Group> instance's primary <Colour Table> * instance is being referred to. */ SE_Long_Float intensity_level; /* * The intensity_level field specifies the percent contribution of the * colour to the total effect on the coloured object(s). Multiply the * colour data values within the referenced <Primitive Colour> instance * by this value to obtain their contribution to the total colour of * the affected coloured object(s). */ ------------------------------------------------------------------------------- Class Name: Colour Index Control Link Definition: An instance of this DRM class specifies an <Expression> instance that determines the index field value and / or an <Expression> instance that determines the intensity_level field value of all target <Colour Index> instances, thus controlling which <Primitive Colour> instance is referenced by each such <Colour Index> instance and / or its intensity. Note that since each controlled <Colour Index> instance may be bound to a different <Colour Table Group> instance, and thus to a different primary <Colour Table> instance, the fact that their index values are the same does not mean that the set of <Colour Index> instances controlled by a given <Colour Index Control Link> instance reference the same <Primitive Colour> instance. Primary Page in DRM Diagram: 17 Secondary Pages in DRM Diagram: 14 Example: 1. Consider a <Geometry Model> within a <Model> representing a tree, where the geometry consists of a single <Polygon> defined with <Stamp Behaviour>. <Geometry Model> <> | <Union Of Primitive Geometry> <> ----------------- | | | | <Polygon> <Stamp Behaviour> <> ------------- | | <Colour Index> <Image Mapping Function> <> | <Colour Index Control Link> <> | <Variable> The <Polygon>'s appearance is determined by a <Colour Index> and an <Image Mapping Function>. However, for every <Geometry Model Instance> of this tree, the data provider wants to be able to vary the intensity_level of the <Colour Index>, so that its contribution to the overall colour of the tree changes from instance to instance. Consequently, the <Colour Index> has a <Colour Index Control Link>, which specifies a <Variable> that controls the intensity_level of the <Colour Index>, so that each <Geometry Model Instance> can supply its own <Literal> to determine the percent contribution of the <Colour Index> to the appearance of the <Polygon>. FAQS: Q. What does a <Colour Index Control Link> instance control? A. A <Colour Index Control Link> controls the value of the index stored in a <Colour Index>, the value of the intensity_level stored in the <Colour Index>, or both. Q. Can a <Colour Index Control Link> instance be used to change which <Colour Table> is accessed within a <Colour Table Group>? A. No. The index always refers to the primary <Colour Table>. Q. Can a <Colour Index Control Link> instance be used to switch a <Colour Index> from one <Colour Table Group> to a different <Colour Table Group>? A. No. The link to the <Colour Table Group> is an association within the given transmittal, and associations cannot be changed dynamically. Superclass: Control Link Constraints: Publishable Object Composed of (two-way) (inherited) one or more {ordered} Expression instances Component of (two-way) one or more Colour Index instances Inherited Field Elements: SE_String description; /* * The description field specifies a text description of the given * <Control Link> instance's purpose. */ Field Elements: SE_Integer_Unsigned colour_index; /* * The colour_index field specifies which <Expression> component, * if any, specifies the index field value of the affected * <Colour Index> instances. * If this value is zero, the index field values of the * <Colour Index> instances are not controlled. */ SE_Integer_Unsigned intensity_level_index; /* * The intensity_level_index field specifies which <Expression> * component, if any, specifies the intensity_level field value * of the affected <Colour Index> instances. If this value is * zero, the intensity_level field values of the <Colour Index> * instances are not controlled. */ ------------------------------------------------------------------------------- Class Name: Colour Shininess Definition: An instance of this DRM class specifies the specular coefficient that specifies how shiny a colour is to appear, based on the angle between lines from the observer to the coloured object to the light source. Primary Page in DRM Diagram: 14 Example: 1. Consider a <Colour Table> instance with a <Presentation Domain> component having presentation_domain = { OTW }, the entries of which are intended for use in representing metallic surfaces in the Out-the-Window (OTW) visual domain. Each <Primitive Colour> instance in the table is defined by a <Specular Colour> component and an <Ambient Colour> component. Depending on the angles between the observer, the metallic surface, and the light source, the shininess of each <Specular Colour> will vary. Hence, each <Specular Colour> instance in the table is given a <Colour Shininess> component, if the corresponding metal is sufficiently reflective. FAQS: None. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Component of (two-way) one or more Specular Colour instances Field Elements: SE_Long_Float shininess; /* * The shininess field specifies the specular coefficient. */ ------------------------------------------------------------------------------- Class Name: Colour Table Definition: An instance T of this DRM class specifies an ordered collection of <Primitive Colour> instances such that for the <Colour Table Group> instance G of which T is itself a component, the index value of any <Colour Index> instance associated to G unambiguously specifies one of the <Primitive Colour> components of T. Primary Page in DRM Diagram: 14 Example: 1. Consider a data provider whose format specifies colours using palettes. To convey exactly the colour information used, each palette is represented in SEDRIS as the primary <Colour Table> in a <Colour Table Group>. FAQS: Q. Why do <Colour Table> instances have <Primitive Colour> rather than <Inline Colour> components? A. A <Colour Table> instance does not contain <Inline Colour> components, because a <Colour Table> exists to store "just the colour", without any additional <Translucency>. 1. The interpretation of a <Colour Index> is clearer if the referenced <Colour Table> entry cannot have additional <Translucency>. 2. Storing <Primitive Colour> instances in a <Colour Table> allows greater re-use, since the same <Primitive Colour> can be referenced by different <Colour Index> instances with different <Translucency> components. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Colour Table Size Composed of (two-way) zero or one Presentation Domain instance one or more {ordered} Primitive Colour instances Composed of (two-way metadata) zero or one Access instance zero or one Citation instance zero or more Cross Reference instances zero or one Description instance Component of (two-way) one Colour Table Group instance ------------------------------------------------------------------------------- Class Name: Colour Table Group Definition: An instance of this DRM class specifies an interchangeable group of one or more <Colour Table> instances. The primary <Colour Table> in the group is indicated by the primary_table_index. When a reference is made to a <Colour Table> (for example, from an <Colour Index> component of a <Polygon>), the reference identifies the <Colour Table Group> and the index within the <Colour Table>, but not the specific <Colour Table> within the <Colour Table Group>. By definition, a <Colour Index> refers to a <Primitive Colour> from the primary <Colour Table> of the indicated <Colour Table Group>. An alternate <Colour Table> from within the <Colour Table Group> can be chosen at the discretion of the data consumer. Primary Page in DRM Diagram: 14 Secondary Pages in DRM Diagram: 10 Example: 1. One <Colour Table Group> in the transmittal, and that group has only one <Colour Table> within the group. That <Colour Table> is the one and only <Colour Table> for the entire transmittal. 2. A <Colour Table Group> with two <Colour Table> components, where one <Colour Table> is for normal, Out the Window (OTW) viewing, and the other <Colour Table> exists to change the appearance of the view to represent a view as seen through Night Vision Goggles (NVG). 3. A <Colour Table Group> with 3 <Colour Table> components with the same usage of OTW. Why 3 tables? One <Colour Table> defines the colours as originally created by the data modellers. The second <Colour Table> has different shades of blue for the lakes and skies because a company VIP came through and didn't like the blues that were there. The third <Colour Table> contains yet another set of blues for the lakes, and different shades of green for the trees and tanks, because the customer in charge of the program came through and didn't think the colours were realistic. In this particular example, it's left as an exercise to the data provider to determine which <Colour Table> should be the primary <Colour Table> for the group. FAQS: Q. Can a transmittal in any way refer to a <Colour Table> in a <Colour Table Group> other than the primary <Colour Table>? A. No. The only <Colour Table> that can be referenced in any <Colour Table Group> is the primary <Colour Table>. Q. Since they cannot be referenced, why bother to have alternate <Colour Table> instances within a <Colour Table Group>? A. Because in real life, many run-time systems do have multiple colour tables they can switch between for various reasons, and these tables should be shared to promote interoperability. See the example section, below. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Colour Table Size Associated by (one-way) zero or more Colour Index instances Composed of (two-way) one or more {ordered} Colour Table instances Composed of (two-way metadata) zero or one Access instance zero or one Citation instance zero or more Cross Reference instances zero or one Description instance Component of (two-way) one Colour Table Library instance Field Elements: SE_Integer_Positive primary_table_index; /* * The primary_table_index field specifies the primary * <Colour Table> component of * the given <Colour Table Group> instance from its * ordered <Colour Table> components. */ SE_Integer_Positive table_size; /* * The table_size field specifies the size of any and all <Colour Table> * components of the given <Colour Table Group> instance. */ ------------------------------------------------------------------------------- Class Name: Colour Table Library Definition: An instance of this DRM class specifies a <Library> of <Colour Table Group> instances. Primary Page in DRM Diagram: 10 Secondary Pages in DRM Diagram: 1 14 Example: 1. Consider a data provider whose format specifies colours using palettes. To convey exactly the colour information used, each palette is represented in SEDRIS as the primary <Colour Table> in a <Colour Table Group>. The collection of these <Colour Table Group> instances is the <Colour Table Library> of the transmittal being produced. FAQS: None. Superclass: Library Constraints: Publishable Object Composed of (two-way) one or more {ordered} Colour Table Group instances Composed of (two-way metadata) (inherited) zero or one Access instance zero or one Citation instance zero or one Description instance Component of (two-way) one Transmittal Root instance ------------------------------------------------------------------------------- Class Name: Cone Directional Light Definition: An instance of this DRM class specifies a <Directional Light Behaviour>, the intensity of which varies depending on the observer's position relative to the light's location, direction, and shape. This light takes the shape of a cone, which can be elliptical. A <Cone Directional Light> instance can specify a plane that divides the light cone into an upper and a lower section along the body of the cone. The upper section receives the primary colour while the lower section receives the secondary colour, if one is used. Primary Page in DRM Diagram: 21 Example: 1. A 100 kilometre highway has regularly spaced lampposts. Each lamp has <Cone Directional Light> with <Lobe Data> pointing down. If all the lamps use the same <Cone Directional Light> instance, then all the directions will be parallel. Due to the curvature of the Earth, very few of the lights will shine directly down; the others will be slightly skewed. If, instead, the set of lamps is divided into smaller contiguous groups, each with its own <Cone Directional Light> instance using a <Location> near the centre of the group, the skewing effect will be greatly minimized. 2. Consider a <Cone Directional Light> instance with a primary colour that is a <Colour Index> with intensity_level = 0.8. <Cone Directional Light> has_plane = SE_FALSE plane_angular_offset = 0.0 use_full_intensity = SE_FALSE minimum_colour_intensity = 0.2 invisible_behind = SE_FALSE <> | <Lobe Data> horizontal_width = 40.0 pi / 180.0 radians vertical_width = 40.0 pi / 180.0 radians equation: final_intensity = minimum_colour_intensity + ((((width / 2.0) - degrees_away_from_direction_vector) / (width / 2.0)) * (full_intensity - minimum_colour_intensity)) At 15 pi / 180.0 radians from the SE_REF_VEC_TYP_LIGHT_DIRECTION vector in the horizontal direction, the final intensity is 0.35. At 25 pi / 180.0 radians from the SE_REF_VEC_TYP_LIGHT_DIRECTION vector in the horizontal direction, the final intensity is 0.2, because that position lies outside the horizontal width of the lobe. 3. Consider the following <Cone Directional Light> instance, with its primary colour specified by an <Inline Colour>, so that the full intensity is 1.0. <Cone Directional Light> has_plane = SE_FALSE plane_angular_offset = 0.0 use_full_intensity = SE_TRUE minimum_colour_intensity = 0.5 invisible_behind = SE_FALSE <> | <Lobe Data> horizontal_width = pi / 2.0 radians vertical_width = pi / 2.0 radians At 40 pi / 180.0 radians from the SE_REF_VEC_TYP_LIGHT_DIRECTION vector in the horizontal direction, the final_intensity is 1.0, because use_full_intensity is SE_TRUE and the position lies inside the horizontal width of the lobe. At 50 pi / 180.0 radians from the SE_REF_VEC_TYP_LIGHT_DIRECTION vector in the horizontal direction, the final_intensity is 0.5, because the position is outside the horizontal width. 4. Consider a <Cone Directional Light> instance with both a primary and a secondary colour, each of which is a <Colour Index> instance with intensity 0.8 <Cone Directional Light> has_plane = SE_FALSE plane_angular_offset = 0.0 use_full_intensity = SE_TRUE minimum_colour_intensity = 0.0 invisible_behind = SE_FALSE <> | <Lobe Data> horizontal_width = 70.0 pi / 180.0 radians vertical_width = pi / 2.0 radians At 40 pi / 180.0 radians from the SE_REF_VEC_TYP_LIGHT_DIRECTION vector in the vertical direction, the primary colour is in effect with intensity 0.8, because the position is inside the vertical width and use_full_intensity is SE_TRUE. At 40 pi / 180.0 radians from the SE_REF_VEC_TYP_LIGHT_DIRECTION vector in the horizontal direction, the secondary colour is in effect with intensity 0.8, because the position is outside the horizontal width and minimum_colour_intensity = 0.0. 5. Consider a <Cone Directional Light> instance with both a primary and a secondary colour, each of which is a <Colour Index> instance with intensity 0.8 <Cone Directional Light> has_plane = SE_TRUE plane_angular_offset = 20.0 use_full_intensity = SE_FALSE minimum_colour_intensity = 0.0 invisible_behind = SE_FALSE <> | <Lobe Data> horizontal_width = 70.0 pi / 180.0 radians vertical_width = pi / 2.0 radians At 25 pi / 180.0 radians from the SE_REF_VEC_TYP_LIGHT_DIRECTION vector in the vertical direction, towards the positive end of the SE_REF_VEC_TYP_VERTICAL_AXIS vector, the full intensity of the primary colour is 0.8, because this position lies in the upper section of the cone and the minimum_colour_intensity value is 0.0. At 15 pi / 180.0 radians from the SE_REF_VEC_TYP_LIGHT_DIRECTION vector in the vertical direction, towards the positive end of the SE_REF_VEC_TYP_VERTICAL_AXIS vector, the full intensity of the secondary colour is 0.8, because this position lies in the lower section of the cone and the minimum_colour_intensity value is 0.0. FAQS: None. Superclass: Directional Light Behaviour Constraints: Publishable Object Composed of (two-way) (inherited) one Lobe Data instance one Location instance Component of (two-way) (inherited) one or more Light Rendering Properties instances Field Elements: SE_Boolean has_plane; /* * If the value of the has_plane field is SE_TRUE, a plane, based at * the cone apex and extending along the body of the cone, divides * the light cone into an upper and a lower section. The upper section * receives the primary colour. If a secondary colour is used, the * lower section receives it. */ SE_Long_Float plane_angular_offset; /* * If has_plane is SE_TRUE, the value of the plane_angular_offset field * defines the angular offset of the plane measured in radians from the * <Lobe Data> instance's SE_REF_VEC_TYP_LIGHT_DIRECTION vector and * along its SE_REF_VEC_TYP_VERTICAL_AXIS vector. The resulting upper * section of the light is taken to be between the plane and the * positive end of the SE_REF_VEC_TYP_VERTICAL_AXIS vector. * * The value of the plane_angular_offset field is ignored if * has_plane is SE_FALSE. */ SE_Boolean use_full_intensity; /* * If the value of the use_full_intensity field is SE_TRUE, it indicates * that the full intensity of the light is shown in the cone shaped area. * Otherwise, the intensity of the light decreases (towards the * minimum_colour_intensity value) as one moves away from the * SE_REF_VEC_TYP_LIGHT_DIRECTION vector. */ SE_Long_Float minimum_colour_intensity; /* * The value of the minimum_colour_intensity field is used in * conjunction with the primary colour's intensity value. If * the primary colour is represented by a <Colour Index> instance, * the full intensity is specified by its intensity_level field. * If the primary colour is represented by an <Inline Colour> * instance, the full intensity is 1.0. * * A location in the direct path of the <Lobe Data> instance's * SE_REF_VEC_TYP_LIGHT_DIRECTION vector receives the full intensity * value. If use_full_intensity is SE_FALSE, the intensity decreases * with increasing distance from the SE_REF_VEC_TYP_LIGHT_DIRECTION * vector, until the boundary specified by the horizontal and * vertical <Lobe Data> widths is reached. Outside the lobe, the * intensity is minimum_colour_intensity. * * If the minimum_colour_intensity value is 0.0, the secondary colour * (if present) will be seen outside the lobe. If no secondary colour * is present, nothing is visible outside the lobe. */ SE_Boolean invisible_behind; /* * If the value of the invisible_behind field is SE_TRUE, the * directional light is invisible when viewed from behind the * plane of the directional light. */ ------------------------------------------------------------------------------- Class Name: Conformal Behaviour Definition: The <Geometry Hierarchy> to which a <Conformal Behaviour> is attached conforms to the terrain skin automatically, either "parallel to gravity" (for example, ensuring that the base of a building touches the ground without warping the walls) or orthogonally to the terrain skin (for example, as in the case of a fence). Primary Page in DRM Diagram: 3 Secondary Pages in DRM Diagram: 4 5 7 18 Example: 1. A <Model> instanced to terrain. A <Geometry Model Instance> may specify that the location component of its <Transformation> is <Conformal Behaviour> to the terrain skin. The terrain skin may use a <Classification Related Geometry> aggregation to separate the surface that <Model> conforms to from the rest of the <Geometry Representation>. If so, the <Conformal Behaviour> instance can associate with the terrain skin. This would help the consumer resolve ambiguities when deriving the actual 3D location. The surface to be conformed to can be further qualified by the <Property Value>. 2. Consider a tree canopy that conforms to multiple, or continuous LOD terrain. The entire collection of tree canopy <Polygon> instances and the tree wall <Polygon> instances around the canopy is aggregated into a <Classification Related Geometry>, which is associated with an <Areal Feature>. Each <Vertex> of the <Polygon> instances representing the tree wall around the canopy uses <Conformal Behaviour>. The <Conformal Behaviour> of each <Vertex> on the ground has parallel_gravity = SE_FALSE and offset_distance = 0, while the <Conformal Behaviour> of the <Vertex> instances at the top has parallel_gravity = SE_TRUE and a positive offset_distance indicating the height of the tree wall. Each <Vertex> of the <Polygon> instances representing the tree canopy has a <Conformal Behaviour> with parallel_gravity = SE_TRUE and offset_distance indicating the height of the tree canopy. 3. An airplane <Model> might have <Geometry Representation> that represents the projected shadow. The <Geometry Hierarchy> containing the shadow could be given <Conformal Behaviour> so that it will hug the nominal terrain surface. FAQS: Q. Why has <Conformal Behaviour> been made into a class of its own and not implemented as a kind of <Control Link>? A. <Conformal Behaviour> could be achieved via a <Translation Control Link> instance with a <Variable> component that represents a Zenith (HAT) test. We have chosen to represent this kind of behaviour as a class of its own because it is a well-understood (abstracted) self-contained behaviour. This is also the case with <Stamp Behaviour> and level of detail. SEDRIS has generally been designed to allow for high-level abstraction as well as lower-level descriptions to exist in the same <Model>. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Component of (two-way) zero or more Aggregate Geometry instances zero or more Geometry Model Instance instances zero or more Point instances zero or more Vertex instances Field Elements: SE_Boolean parallel_gravity; /* * If the value of the parallel_gravity field is SE_TRUE, the * direction of conformance is parallel to gravity; otherwise, * the direction of conformance is orthogonal to the terrain skin. */ SE_Float offset_distance; /* * The offset_distance field specifies the distance above the * given surface, in metres. */ ------------------------------------------------------------------------------- Class Name: Contact Point Definition: An instance of this DRM class specifies an identified location and orientation that run-time systems can identify as a place where intersection tests should occur. Primary Page in DRM Diagram: 2 Example: 1. Consider a <Model> specifying a geometric representation of an airplane, which is to be used for an application in which it is useful to know the position of the bottom of the wheels when the landing gear is fully extended. In this case, the landing gear is represented as a separate <Model>, and the <Geometry Model> of the landing gear <Model> specifies a <Contact Point> to identify this location. 2. The hitch point on a train or pickup truck. 3. The endpoint of a loading ramp on a roll-on-roll-off ship. FAQS: None. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Composed of (two-way) one Location 3D instance Component of (two-way) one Geometry Model instance ------------------------------------------------------------------------------- Class Name: Continuous LOD Related Geometry Definition: An instance of this DRM class is used to represent continuous terrain or continuous adaptive terrain, by replacing a <Polygon> instance with a set of fragmented <Polygon> instances that represent the terrain at a finer level of detail at close range (or alternatively, with a coarser level of detail at long range). Primary Page in DRM Diagram: 4 Example: 1. A Continuous LOD node can be fragmented into one or more <Polygon> instances and will then have zero or more Continuous LOD nodes as subnodes. Any Continuous LOD node that contains Continuous LOD nodes under it will have the terminating_node flag set to SE_FALSE. The <Union Of Primitive Geometry> node will contain <Polygon> data. If a Continuous LOD node is encountered with the terminating_node flag set to SE_TRUE, that means it only has a <Union Of Primitive Geometry> node under it. Continuous LOD Related Geometry (terminating_node=0) <> ____|___________________________________________ | | | | | UoPG CLOD CLOD CLOD CLOD <> term_node=1 term_node=0 term_node=1 term_node=1 | <> <> <> <> | | ___|___ | | Poly UoPG | | UoPG UoPG <> | | <> <> | | | | | Poly | | Poly Poly | | | |---------------|---------------|---------------| UoPG CLOD(t_n=1) CLOD(t_n=1) CLOD(t_n=1) CLOD(t_n=1) <> <> <> <> <> | | | | | Poly UoPG UoPG UoPG UoPG <> <> <> <> | | | | Poly Poly Poly Poly (NOTE that this example only shows two levels of polygon fragmentation. Each <Continuous LOD Related Geometry> could contain component <Continuous LOD Related Geometry> instances, but that would make a huge picture. Only the idea is represented here.) FAQS: Q. How can a consumer find the finest fragmentation of polygons? A. Follow all Continuous LOD chains. Wherever a Continuous LOD node with terminating_node set to SE_TRUE is encountered, that identifies the finest fragmentation of <Polygon> instances under the <Union Of Primitive Geometry> at that Continuous LOD. Q. What do the "terminating" <Polygon> instances represent? A. The combination of polygons from the Continuous LOD nodes with terminating_node set to SE_TRUE make up the <Polygon> identified under the <Union Of Primitive Geometry> from the Continuous LOD node with terminating_node set to SE_FALSE. Q. Since <Continuous LOD Related Geometry> is not organized with link class instances, such as <Base LOD Data>, how can consumers determine the range between fine and coarse data? A. The uniqueness of Continuous LOD data is that it is not based on range data for an entire area to blend in. Rather, the blending of data is performed typically at the IG. In source data, all potential polygon fragmentations have been identified. Therefore, it is not necessary to have range data stored in a link class. Superclass: Aggregate Geometry Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Cyclic Aggregations Precedence of Property Set Index Non Crossing Associations Colour Mapping Restrictions Distinct Geometric Centre Image Mapping Functions and Texture Coordinates Continuous LOD Restrictions Associated to (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object Associated by (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or one Hierarchy Summary Item instance zero or more Reference Surface instances Composed of (two-way) (inherited) zero or one Classification Data instance zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or one Reference Surface instance zero or more Sound Instance instances zero or more Base LOD Data instances zero or one Bounding Volume instance zero or more Camera Point instances zero or more Collision Volume instances zero or more Colour instances zero or one Conformal Behaviour instance a bounded set of 0..3 Geometric Centre instances zero or more Geometry Topology Hierarchy instances zero or more {ordered} Image Mapping Function instances zero or one Light Rendering Properties instance zero or more Light Source instances zero or one LSR Transformation instance zero or one Overload Priority Index instance zero or one Perimeter Data instance zero or one Presentation Domain instance zero or more Property Description instances zero or one Rendering Priority Level instance zero or one Rendering Properties instance zero or one Spatial Extent instance zero or one Stamp Behaviour instance Composed of (two-way) zero or more Continuous LOD Related Geometry instances one Union Of Primitive Geometry instance Composed of (two-way metadata) (inherited) zero or one Time Constraints Data instance zero or one Access instance zero or more Cross Reference instances zero or one Data Quality instance zero or one Description instance Component of (two-way) (inherited) zero or more Alternate Hierarchy Related Geometry instances, each with a Hierarchy Data link object zero or more Animation Related Geometry instances zero or more Classification Related Geometry instances, each with a Classification Data link object zero or one Environment Root instance zero or one Geometry Model instance zero or more LOD Related Geometry instances, each with a Base LOD Data link object zero or more Octant Related Geometry instances, each with a Octant Data link object zero or more Perimeter Related Geometry instances, each with a Perimeter Data link object zero or more Quadrant Related Geometry instances, each with a Quadrant Data link object zero or more Separating Plane Relations instances, each with a Separating Plane Data link object zero or more Spatial Index Related Geometry instances, each with a Spatial Index Data link object zero or more State Related Geometry instances, each with a State Data link object zero or more Time Related Geometry instances, each with a Time Constraints Data link object zero or more Union Of Geometry Hierarchy instances Component of (two-way) zero or one Continuous LOD Related Geometry instance Inherited Field Elements: SE_Boolean unique_descendants; /* * If the value of the unique_descendants field is SE_TRUE, each * descendant of this aggregation, * that is, each <Geometry Representation> instance that exists * in the component tree * rooted at the given <Aggregate Geometry>, shall be unique, in the * sense that it shall appear in only one branch of this aggregation. * If unique_descendants is SE_FALSE, at least one * <Geometry Representation> instance * appears in more than one branch of the aggregation. */ SE_Boolean strict_organizing_principle; /* * If the value of the strict_organizing_principle field is SE_TRUE, * each branch of this aggregation * strictly complies with the organizing principle for its * particular subclass. If this value is SE_FALSE, at least * one branch does not strictly comply with the given * organizing principle. See the organizing principle constraint * for each specific subclass for details. */ Field Elements: SE_Boolean terminating_node; /* * The terminating_node field specifies whether the current level of * fragmentation is the lowest level of fragmentation for a specific * chain. This flag is set to SE_TRUE if no other * <Continuous LOD Related Geometry> instances are * found below this chain's current level. */ ------------------------------------------------------------------------------- Abstract Class Name: Control Link Definition: An instance of a concrete class derived from this DRM class specifies the connection between <Expression> instances and the fields of other SEDRIS objects (called target objects). For each class of target object, there shall be a specialization of this class to match it. Objects of the specialized subclass shall be aggregated by the target object. The definition of each subclass shall specify how the ordered list of <Expression> instances is used to determine the values of the fields of the target object (called target fields). In general, a specialized <Control Link> will contain at least one field (called a link field) for each target field in the target object. The link field is an index into the ordered aggregation of <Expression> instances, and is used to select the specific <Expression> that controls the value of the target field. The specialization may also contain "constraint" fields that are indexes into the ordered aggregation of <Expression> instances, and are used to constrain the values of the target field. Primary Page in DRM Diagram: 17 Secondary Pages in DRM Diagram: 16 23 Example: See individual subclasses for examples. FAQS: None. Superclass: SEDRIS Abstract Base Subclasses: CMY Colour Control Link Colour Index Control Link HSV Colour Control Link Light Rendering Properties Control Link Light Source Control Link LSR 3D Location Control Link Polygon Control Link Property Set Index Control Link Property Table Reference Control Link Reference Vector Control Link RGB Colour Control Link Rotation Control Link Scale Control Link Sound Instance Control Link State Control Link Texture Coordinate Control Link Translation Control Link Translucency Control Link Constraints: Publishable Object Composed of (two-way) one or more {ordered} Expression instances Field Elements: SE_String description; /* * The description field specifies a text description of the given * <Control Link> instance's purpose. */ ------------------------------------------------------------------------------- Class Name: Cross Reference Definition: An instance of this DRM class specifies a CSDGM-compliant reference to an external data set that is related in some way to the containing SEDRIS object to which the <Cross Reference> is attached. Primary Page in DRM Diagram: 19 Secondary Pages in DRM Diagram: 1 2 3 6 8 10 14 22 Example: 1. A reference to a SEDRIS transmittal covering the adjacent area to the east. 2. A reference to a small-scale map covering the entire area described by a transmittal. 3. A reference to a Statement of Work containing the requirements used to create a transmittal. 4. A reference to a Product Specification describing the content of one of the types of a <Data Table>. FAQS: Q. What is the purpose of this class? A. This class provides a very general-purpose mechanism that can be used to document almost any type of relationship between an object in a SEDRIS transmittal and an external data set. It uses a <Citation> component to refer to the external data set, so it has the flavor of a bibliographical reference, and can be used to refer to books, maps, presentations, or any other type of "publication", as well as to digital data sets. Each <Cross Reference> also includes a field in which the nature of the relationship can be described. Note that a <Cross Reference> is similar to a <Source>, but is more general in nature. <Source> instances should be used to document the data sources that were used in the creation of a SEDRIS transmittal or one of its major subordinate objects. <Cross Reference> instances should be used to refer to other related materials that may be of interest to the user of a SEDRIS transmittal. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Composed of (two-way metadata) one Citation instance Component of (two-way) zero or more Colour Table instances zero or more Colour Table Group instances zero or more Data Table instances zero or more Environment Root instances zero or more Feature Model instances zero or more Feature Representation instances zero or more Geometry Hierarchy instances zero or more Geometry Model instances zero or more Image instances zero or more Model instances zero or more Property Set instances zero or more Property Set Table instances zero or more Property Set Table Group instances zero or more Sound instances zero or more Symbol instances zero or one Transmittal Root instance Field Elements: SE_String relationship; /* * If provided, the relationship field describes the relationship of * the cited data set to the given data set. */ ------------------------------------------------------------------------------- Class Name: Cylindrical Volume Extent Definition: An instance of this DRM class specifies the radius and orientation of the major and minor axes that specify an elliptical cylinder volume relative to the location of the volume centre (which is specified separately by the aggregate of the <Cylindrical Volume Extent>, and which is at the mid point of all three axes). Primary Page in DRM Diagram: 9 Example: 1. A <Collision Volume> for a car bumper modeled as a line segment uses a (degenerate) <Cylindrical Volume Extent> with major_axis_radius = minor_axis_radius = 0.0. FAQS: Q. How is the direction of the cylinder's axis determined? A. The cylinder axis direction is perpendicular to the two component <Reference Vector> instances, which give the major and minor axes of the elliptical cross-section. Superclass: Volume Extent Constraints: Publishable Object Cylindrical Structure Composed of (two-way) exactly 2 {ordered} Reference Vector instances Component of (two-way) (inherited) zero or more Volume instances zero or more Volume Light Behaviour instances zero or more Volume LOD Data instances zero or more Volume Object instances Field Elements: SE_Long_Float major_axis_radius; /* * The major_axis_radius field is specified in metres. */ SE_Long_Float minor_axis_radius; /* * The minor_axis_radius field is specified in metres. */ SE_Long_Float cylinder_length; /* * The cylinder_length field is specified in metres. */ ------------------------------------------------------------------------------- Class Name: Data Quality Definition: An instance of this DRM class specifies a ISO 19115-compliant description of the level of quality of the information contained in the aggregating SEDRIS object. Primary Page in DRM Diagram: 20 Secondary Pages in DRM Diagram: 1 2 3 6 8 19 Example: 1. Description of the level of data quality for the <Feature Representation> instances within a particular thematic layer, such as vegetation. FAQS: Q. How does the data quality of a SEDRIS object depend on the data quality of the sources used in its creation? A. Each of the processing steps that is performed in the creation of a SEDRIS object has some effect on the quality of the result, but the individual impacts of the processing steps are not well understood, let alone the combined impacts. Q. How does the data quality of a <Transmittal Root>, or any other SEDRIS object within a transmittal, depend on the data quality of its components? A. The data quality of the whole is certainly no better than the worst of its components. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Composed of (two-way) zero or one Lineage instance Component of (two-way) zero or more Data Table instances zero or more Environment Root instances zero or more Feature Model instances zero or more Feature Representation instances zero or more Geometry Hierarchy instances zero or more Geometry Model instances zero or more Model instances zero or more Property Set instances zero or one Transmittal Root instance Field Elements: SE_Boolean fictional; /* * The value of the fictional field is SE_TRUE if *any* aspect of * the data content *intentionally* deviates from the available * source data - that is, was "made up" out of thin air; fictional is * SE_FALSE otherwise. */ SE_Data_Quality_Element field_accuracy; /* * The field_accuracy field specifies a statement of field accuracy. */ SE_Data_Quality_Element logical_consistency; /* * The logical_consistency field specifies an optional statement * of logical consistency. */ SE_Data_Quality_Element completeness; /* * The completeness field specifies an optional statement of completeness. */ SE_Data_Quality_Element abs_horiz_pos_accuracy; /* * The abs_horiz_pos_accuracy field specifies an optional statement * that may alternately be expressed * numerically through the use of * EAC_ABSOLUTE_HORIZONTAL_ACCURACY. */ SE_Data_Quality_Element rel_horiz_pos_accuracy; /* * The rel_horiz_pos_accuracy field specifies an optional statement * that may alternately be expressed * numerically through the use of * EAC_RELATIVE_HORIZONTAL_ACCURACY. */ SE_Data_Quality_Element abs_vert_pos_accuracy; /* * The abs_vert_pos_accuracy field specifies an optional statement * that may alternately be expressed * numerically through the use of * EAC_ABSOLUTE_VERTICAL_ACCURACY. */ SE_Data_Quality_Element rel_vert_pos_accuracy; /* * The rel_vert_pos_accuracy field specifies an optional statement * that may alternately be expressed * numerically through the use of * EAC_RELATIVE_VERTICAL_ACCURACY. */ ------------------------------------------------------------------------------- Abstract Class Name: Data Table Definition: An instance of a concrete class derived from this DRM class specifies an N-dimensional array of data cells, each of which has the same data signature, representing some data set. The general nature of the data set being represented is indicated by the required <Classification Data> component. The specific contents in the context of that <Classification Data> instance are given by the given <Data Table> instance's signature, that is, the combination of its ordered <Axis> and <Table Property Description> components. The N dimensions of a <Data Table> instance are specified by its N ordered <Axis> components. The complete structure of a cell within a <Data Table> instance is described by the complete ordered set of <Table Property Description> components of that <Data Table> instance; this set is also called the data signature, and applies to all cells of the <Data Table> instance. Additional information about any given cell property, where such information is to be applied throughout the scope of the <Data Table> instance, such as sentinel values and tolerances, is specified by attaching <Property Characteristic> components to the applicable <Table Property Description> instance(s). Primary Page in DRM Diagram: 6 Secondary Pages in DRM Diagram: 10 23 Example: See individual subclasses for examples. FAQS: Q. Where can users obtain further information about the <Data Table> class and its usage? A. See Part 4 Volume 6, Data Tables Technical Guide, of the SEDRIS Documentation Set for detailed information on <Data Table> manipulation. Q. The <Data Table> class does not have a field for the actual cells of a <Data Table> instance. Where are they, and how are they accessed? A. The actual cells of a <Data Table> instance are hidden by the API implementation being used to provide the <Data Table>. See the SE_PutDataTableData() function in the level 0 write API for <Data Table> production, and the level 0 function SE_GetDataTableData() for consumption. Q. How does a <Data Table> instance indicate what it represents? A. The general nature of the data set in indicated by the required <Classification Data> component. The specific contents in the context of that <Classification Data> instance are given by the <Data Table> instance's signature, that is, the combination of its ordered <Axis> and <Table Property Description> components. Q. Can values from a <Data Table> be used to drive a <Control Link>? A. Yes; see <Property Table>. Superclass: SEDRIS Abstract Base Subclasses: Property Grid Property Table Constraints: Publishable Object Index Codes within Tables Composed of (two-way) one or more {ordered} Axis instances one Classification Data instance zero or more {ordered} Image Mapping Function instances one or more {ordered} Table Property Description instances Composed of (two-way metadata) zero or one Access instance zero or one Citation instance zero or more Cross Reference instances zero or one Data Quality instance zero or one Description instance zero or one Time Constraints Data instance Component of (two-way) zero or one Data Table Library instance zero or more Property Grid instances ------------------------------------------------------------------------------- Class Name: Data Table Library Definition: An instance of this DRM class specifies a <Library> containing <Data Table> instances that can be referenced or "instanced" by an object within the transmittal. If the particular <Data Table> instance is a <Property Grid> instance, the associating <Geometry Representation> instance shall have a <Location> component that is used as the origin for the spatial <Axis> components of the <Property Grid> instance - most often a <Property Grid Hook Point>. A (non-spatial) <Property Table> instance is assumed to provide information that applies to the entire associating <Geometry Representation> or <Feature Representation> instance. A <Property Table Reference> instance may be employed to select a (N-1)-dimensional slice from the referenced <Data Table> instance in the <Data Table Library> instance. Primary Page in DRM Diagram: 10 Secondary Pages in DRM Diagram: 1 6 Example: 1. A generic seamount could be modeled as a 2-d <Property Grid> of the bottom elevation, surface properties, etc. This grid could be "instanced" in multiple places in the environment by means of <Property Grid Hook Point> instances to construct a desired situation for training sonar operators. 2. A table of material properties can be placed in a <Data Table Library> and accessed via <Property Table Reference> instances to identify the materials and their properties for objects in the given transmittal, e.g. the optical or electromagnetic properties in various wavelength bands. FAQS: Q. Why place a <Data Table> in a <Data Table Library> rather than directly into an <Environment Root>? A. Most often so that it can be reused easily ("instanced" or referenced) from multiple places in the transmittal. This sharing can be especially important for tables such as material properties that do not "belong" to any one object in the normal sense. Q. When should a table *not* be placed in a <Data Table Library>? A. There are no situations that are prohibited by SEDRIS data representation model or constraints. However, there is little benefit from placing a <Data Table> in a <Data Table Library> if it is not shared by many other objects in the transmittal. Superclass: Library Constraints: Publishable Object Composed of (two-way) one or more {ordered} Data Table instances Composed of (two-way metadata) (inherited) zero or one Access instance zero or one Citation instance zero or one Description instance Component of (two-way) one Transmittal Root instance ------------------------------------------------------------------------------- Class Name: Description Definition: An instance of this DRM class specifies a characterization of the data set being described, including its intended use and limitations. In the documentation for this class, the phrase "the data set" refers to "the data set being described by the given <Description> instance". This, in turn, refers to the object tree rooted at the aggregate of the <Description> instance. If a <Description> is shared by multiple aggregate objects, then "the data set" refers to the collection of object trees rooted at its various aggregates. Primary Page in DRM Diagram: 1 Secondary Pages in DRM Diagram: 2 3 6 8 10 14 19 22 Example: 1. The description of a <Model> of an F-18, perhaps including a summary of its structure, and a list of its intended uses. FAQS: Q. What is the purpose of this class? A. This class provides a place for an ISO 19115-compliant description of a high-level SEDRIS object (such as an instance of <Transmittal Root>, <Model>, <Image>, etc.) <Description> includes an abstract field, which describes *what* the object is, a purpose field, which describes *how* the object is intended to be used, and an additional field for any other information about the object. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Mandatory Metadata Composed of (two-way metadata) zero or more Browse Media instances a bounded set of 0..5 Keywords instances zero or more Responsible Party instances Component of (two-way) zero or more Colour Table instances zero or more Colour Table Group instances zero or more Data Table instances zero or more Environment Root instances zero or more Feature Model instances zero or more Feature Representation instances zero or more Geometry Hierarchy instances zero or more Geometry Model instances zero or more Image instances zero or more Library instances zero or more Model instances zero or more Property Set instances zero or more Property Set Table instances zero or more Property Set Table Group instances zero or more Sound instances zero or more Symbol instances zero or one Transmittal Root instance Field Elements: SE_String abstract; /* * The abstract field specifies a brief narrative summary of * the content of the resource(s) being described. */ SE_String purpose; /* * The purpose field specifies a summary of the intentions with * which the resource(s) being described were developed. */ SE_Short_Integer_Unsigned credit_count; /* * The credit_count field specifies the count of entries in the * credit array. */ SE_String credit[]; /* * The credit field provides recognition of those who contributed to * the resource(s) being described. */ SE_String supplemental_information; /* * The supplemental_information field supplies any other descriptive * information about the data set. */ ------------------------------------------------------------------------------- Class Name: Diffuse Colour Definition: An instance of this DRM class specifies the diffuse reflectance component of a <Primitive Colour>. <Diffuse Colour> is - dependent on the angle of the lit object to the light source - independent of the angle of the lit object to the observer. Surfaces exhibiting *only* diffuse reflection (also known as Lambertian reflection) are dull, matte surfaces that appear equally bright from all viewing angles. When a beam of light is reflected from such a surface, the reflected ray is diffused to cover an area, the size of which is inversely proportional to the cosine of the angle that the beam makes with the surface normal. Diffuse reflection provides what is known as *shape from shading* information to visual perception; that is, for a surface composed of a single substance and illuminated by a single light source, the shading of the object can be used to compute its surface normals (that is, its shape). See [FOLEY_VAN_DAM] 16.1.2, "Diffuse Reflection" for further discussion of diffuse reflectance. Primary Page in DRM Diagram: 14 Secondary Pages in DRM Diagram: 21 Example: See <Primitive Colour>. FAQS: Q. Does SEDRIS use the OpenGL lighting model? A. No, although the terminology is similar. SEDRIS handles transparency somewhat differently than OpenGL does, among other things. For a description of the OpenGL lighting model, see [OPENGL], Chapter 5 "Lighting". Superclass: SEDRIS Abstract Base Constraints: Publishable Object Composed of (two-way) one Colour Data instance Component of (two-way) zero or one Light Source instance zero or one Primitive Colour instance ------------------------------------------------------------------------------- Abstract Class Name: Directional Light Behaviour Definition: An instance of a concrete class derived from this DRM class specifies a directional light having a direction and lobe shape defined by a component <Lobe Data> instance. The lobe shape parameters are used by sub-classes to specify cones, pyramids, blend geometry, and so on. Directional lights can have both a primary and a secondary colour. These are specified by the <Colour> components of the parent <Geometry Representaiton> that have colour_mapping values of Lgt_Render_Bhvr_Primary and Lgt_Render_Bhvr_Secondary, respectively. Primary Page in DRM Diagram: 21 Secondary Pages in DRM Diagram: 23 Example: See concrete subclasses for examples. FAQS: Q. How can a simple bi-directional light be represented? A. This can be done using either a <Cone Directional Light> or a <Pyramid Directional Light> with primary and secondary colours. Set the horizontal and vertical widths of the lobe to 180 degrees and invisible_behind to SE_TRUE. Q. Why does <Directional Light Behaviour> have a required <Location> component? Is it the location of the light? A. No; it does not represent the location of any light(s) that use this behaviour. It is the reference location for the direction of the light (as expressed the <Reference Vector> components of the <Lobe Data>). In most SRFs, directions shall refer to a location to account for the curvature of the earth. Even in linear space SRFs, localized directions may be important (See Example 1). Superclass: Light Rendering Behaviour Subclasses: Blend Directional Light Cone Directional Light Pyramid Directional Light Constraints: Publishable Object Composed of (two-way) one Lobe Data instance one Location instance Component of (two-way) (inherited) one or more Light Rendering Properties instances ------------------------------------------------------------------------------- Class Name: Distance LOD Data Definition: An instance of this DRM class specifies a level of detail described in terms of distance from the eyepoint to the centre of the object. Primary Page in DRM Diagram: 9 Example: 1. Consider a <LOD Related Geometry> instance which has two branches, each having an attached <Distance LOD Data>. The first <Distance LOD Data> instance has: minimum_range = 100.0 minimum_fade_band = 10.0 maximum_range = 200.0 maximum_fade_band = 20.0 The second <Distance LOD Data> instance has: minimum_range = 200.0 minimum_fade_band = 10.0 maximum_range = 1000.0 maximum_fade_band = 10.0 If the eyepoint is moving outward and the distance reaches 90, the first branch starts fading in. At a distance of 100, the first branch has totally faded in. At a distance of 180 the first branch starts to fade out. At a distance of 190 the second branch starts fading in. The first and second branches are both seen (super-imposed) between the ranges of 190 and 200. At a distance of 200 the first branch is totally faded out, while the second branch is the only branch seen. At a distance of 990, the second branch starts fading out, and at 1000 it is completely faded out. 2. Consider a <Level of Detail Related Geometry> instance which has two branches, each having an attached <Distance LOD Data>. The first <Distance LOD Data> instance has: minimum_range = 50.0 minimum_fade_band = 20.0 maximum_range = 100.0 maximum_fade_band = 30.0 The second <Distance LOD Data> instance has: minimum_range = 110.0 minimum_fade_band = 15.0 maximum_range = 500.0 maximum_fade_band = 10.0 If the eyepoint is moving outward and the distance reaches 30, the first branch starts fading in. At a distance of 50, the first branch has totally faded in. At a distance of 70 the first branch starts to fade out. At a distance of 95 the second branch starts fading in. The first and second branches are both seen (super-imposed) between the ranges of 95 and 100. At a distance of 100, the first branch is totally faded out, while the second branch is the only branch seen, but hasn't completely faded in. At a distance of 110 the second branch has completely faded in. At a distance of 490 the second branch starts fading out, and at 500 is completely faded out. 3. A set of polygonal data is produced with low detail for viewing at ranges greater than 3200 metres, and organized as a <Union Of Primitive Geometry>, with a <Distance LOD Data> component specifying this viewing range so that the intended viewing distance at which these <Polygon> instances are to be used is provided. 4. See <LOD Related Geometry>'s examples. FAQS: Q. As a data provider, I have a branch of a distance level-of-detail-related organization for which fade bands aren't applicable. How should those fields be set? A. If a target does not contain fade bands, then the minimum_fade_band and maximum_fade_band shall be set to 0. Superclass: Base LOD Data Constraints: Publishable Object LOD Related Organizing Principle Composed of (two-way) zero or one Location instance Component of (two-way) (inherited) zero or more Aggregate Feature instances zero or more Aggregate Geometry instances zero or more Property Grid Hook Point instances Field Elements: SE_Long_Float minimum_range; /* * The minimum_range field is specified in metres. */ SE_Long_Float minimum_fade_band; /* * The minimum_fade_band is expressed in metres (not percent). * This fade band shall go in the negative direction from the * minimum range. */ SE_Long_Float maximum_range; /* * The maximum_range field is specified in metres; * SE_POSITIVE_INFINITY is a legal range value. */ SE_Long_Float maximum_fade_band; /* * The maximum_fade_band is expressed in metres (not percent). * This fade band shall go in the negative direction from the * maximum range. */ ------------------------------------------------------------------------------- Class Name: DRM Class Summary Item Definition: An instance of this DRM class is used as part of a summary of a transmittal's content to represent instances of a class (specified by the drm_class field value) that are used that transmittal. <DRM Class Summary Item> instances are combined together to form a list of the classes that are present in a transmittal or part of a transmittal. Each such list has only one entry per class. However, it does not have to be a complete list of every class used, and it can include abstract classes. Each <DRM Class Summary Item> can optionally have a list of <EDCS Use Summary Item> instances giving the classifications that are attached to instances of that class in the transmittal. Obviously this only makes sense for those classes that can have classification information. Each <DRM Class Summary Item> can also have a list of <SRF Summary> instances giving the SRFs defined in the transmittal by instances of that class. Obviously this only makes sense for those classes that contain SRF parameters. Primary Page in DRM Diagram: 20 Example: 1. A summary of the classes used in an entire transmittal. <Transmittal Root> <>---- <Environment Root> <> | ---------------------------------------------------------- | | | <Transmittal Summary> <Model Library> <Environment Root> <> <> | | | <Model> ... | | | +----- <DRM Class Summary Item> <>------ <SRF Summary> | SE_DRM_CLS_ENVIRONMENT_ROOT | +----- <DRM Class Summary Item> | SE_DRM_CLS_MODEL_LIBRARY | +----- <DRM Class Summary Item> <>------ <SRF Summary> | SE_DRM_CLS_MODEL . . . 2. A summary of classes used in part of a transmittal. (See the FAQ list also). See the HTML examples for this class for an instance diagram; due to the restrictions of ASCII, it is shown here in two parts rather than as a unified diagram. The geometry portion of the given <Environment Root> instance has the following layout. <Environment Root> <> | | <Level of Detail Related Geometry> <> | -------------------------------------------------------- | | | <Union Of <Union Of <Union Of Primitive Geometry> Primitive Geometry> Geometry Hierarchy> <> <> <> | | | ------------ ---------------- ------------- | | | | <Polygon> ... <Polygon> ... <Union Of <Union Of Primitive Primitive Geometry> Geometry> <> <> | | ---------- ---------- | | <Polygon> ... <Polygon> ... The geometry portion of the given <Environment Root> instance is therefore summarized as follows. <Environment Root> <> | | <Hierarchy Summary Item> (SE_DRM_CLS_LOD_RELATED_GEOMETRY, 1) <> | +------+---------+ | | Hierarchy Hierarchy Summary Item Summary Item (UOPG, 2) (UOGH, 1) <> <> | | | | +-- DRM Class +-- DRM Class Summary Item | Summary Item (Polygon) | (UOPG) | +-- DRM Class | Summary Item | (Polygon) | +-- DRM Class Summary Item (Vertex) FAQS: Q. Why is the <Union Of Primitive Geometry> in Example #2 a <DRM Class Summary Item> rather than a <Hierarchy Summary Item>? A. This illustrates the possible use of <DRM Class Summary Item> if we were to use the <Hierarchy Summary Item> to show only the top level hierarchy (for some reason). The data producer may decide, for a number of reasons, that it would be useful to summarize the hierarchy down to a certain level only, but that it's also useful to show that there are aggregates such as <Union Of Primitive Geometry> below that level - i.e., showing that they exist, rather than showing their position in the hierarchy, is what is of value. Q. Hey! The examples for <DRM Class Summary Item> show <Polygon> and <Vertex> instances as <DRM Class Summary Items>, but the examples for <Primitive Summary Item> show them as <Primitive Summary Items>! Isn't this ambiguous? What's going on? A. This isn't ambiguous as the two classes (<DRM Class Summary Item> and <Primitive Summary Item> summarize different aspects of a transmittal. Therefore the same classes can (and will) quite legitimately be represented by both. So <Polygon> and <Vertex> can turn up as types of <DRM Class Summary Items>, to summarize their *presence* in the transmittal, and as <Primitive Summary Items>, to show common *patterns* of objects in which they are used. Superclass: Base Summary Item Constraints: Publishable Object Composed of (two-way metadata) (inherited) zero or more EDCS Use Summary Item instances Composed of (two-way metadata) zero or more SRF Summary instances Component of (two-way) zero or more Hierarchy Summary Item instances zero or one Transmittal Summary instance Inherited Field Elements: SE_DRM_Class drm_class; /* * The drm_class field indicates the DRM class of the object(s) * represented by the given <Base Summary Item> instance. */ ------------------------------------------------------------------------------- Class Name: EC Augmented 3D Location Definition: An instance of this DRM class specifies a coordinate within the Augmented Equidistant Cylindrical (AEC) 3D SRF. See [I18026] for a complete definition. Primary Page in DRM Diagram: 15 Example: 1. Consider a SEDRIS transmittal that contains an <Environment Root> instance, the ORM of which is ORM_MULTIGEN_FLAT_EARTH_1989, so that its srf_info field is specified in the Equidistant Cylindrical SRF. An <EC Augmented 3D Location> instance within this SRF might be easting = 30.0, northing = 50.0, ellipsoidal_height = 100.0. FAQS: Q. Where can users obtain further information on AEC? A. See the SRM for additional details. Superclass: Location 3D Constraints: Publishable Object Environment Root Spatial Reference Frame Image Anchor Spatial Reference Frame Model Spatial Reference Frame Component of (two-way) (inherited) zero or more Arc instances zero or more Camera Point instances zero or more Directional Light Behaviour instances zero or one Distance LOD Data instance zero or more Ellipse instances zero or more Feature Edge instances zero or more Feature Face instances zero or one Feature Node instance zero or more Image Anchor instances zero or more Label instances zero or more Perimeter Data instances zero or more Point instances zero or more Property Grid Hook Point instances zero or one Reference Origin instance zero or more Reference Vector instances zero or more Spatial Extent instances zero or more Spatial Index Related Feature Topology instances zero or more Spatial Index Related Features instances zero or more Spatial Index Related Geometry instances zero or more Spatial Index Related Geometry Topology instances zero or more Tack Point instances zero or more Vertex instances zero or more World 3x3 instances zero or more World Transformation instances zero or one Attachment Point instance zero or more Base Positional Light instances zero or one Contact Point instance zero or more Geometric Centre instances zero or more Separating Plane instances zero or more Sound Instance instances zero or more Stamp Behaviour instances zero or more Volume instances zero or more Volume Light Behaviour instances zero or more Volume LOD Data instances zero or more Volume Object instances Field Elements: SRM_Map_Projection_3D_Coordinate coordinate; /* * The coordinate field specifies the coordinate values. */ ------------------------------------------------------------------------------- Class Name: EC Surface Location Definition: An instance of this DRM class specifies a coordinate within the Equidistant Cylindrical (EC) 2D SRF. See [I18026] for a complete definition. Primary Page in DRM Diagram: 15 Example: 1. Consider a SEDRIS transmittal that contains an <Environment Root> instance, the ORM of which is ORM_MULTIGEN_FLAT_EARTH_1989, so that its srf_info field is specified in the Equidistant Cylindrical SRF. An <EC Surface Location> instance within this SRF might be easting = 30.0, northing = 50.0. FAQS: Q. Where can users obtain further information on EC? A. See the SRM for additional details. Superclass: Location Surface Constraints: Publishable Object Environment Root Spatial Reference Frame Image Anchor Spatial Reference Frame Model Spatial Reference Frame Component of (two-way) (inherited) zero or more Arc instances zero or more Camera Point instances zero or more Directional Light Behaviour instances zero or one Distance LOD Data instance zero or more Ellipse instances zero or more Feature Edge instances zero or more Feature Face instances zero or one Feature Node instance zero or more Image Anchor instances zero or more Label instances zero or more Perimeter Data instances zero or more Point instances zero or more Property Grid Hook Point instances zero or one Reference Origin instance zero or more Reference Vector instances zero or more Spatial Extent instances zero or more Spatial Index Related Feature Topology instances zero or more Spatial Index Related Features instances zero or more Spatial Index Related Geometry instances zero or more Spatial Index Related Geometry Topology instances zero or more Tack Point instances zero or more Vertex instances zero or more World 3x3 instances zero or more World Transformation instances Field Elements: SRM_Map_Projection_Surface_Coordinate coordinate; /* * The coordinate field specifies the coordinate values. */ ------------------------------------------------------------------------------- Class Name: EDCS Use Summary Item Definition: An instance of this DRM class specifies a pattern of EDCS codes that appears within the scope being summarized, specifically, an ECC and a set of EACs that are used with it, or just an individual EAC. The <Classification Data> instance, which may be qualified by <Property Value> instances, represents the (potentially qualified) classification being described, if any. Primary Page in DRM Diagram: 20 Example: 1. A transmittal containing two different <Model> instances, one classified using ECC_TREED_TRACT with attributes and the other using ECC_RESERVOIR with attributes. DRM Class Summary Item (Model) <>--- EDCS Use <>-+- <Classification Data> | Summary Item | ECC_TREED_TRACT | ("Funny shaped | | area of trees") | | +----<Property Description> | | EAC_PREDOMINANT_HEIGHT | | | | | +----<Property Description> | EAC_TREE_TYPE | | +-- EDCS Use <>-+-<Classification Data> Summary Item | ECC_RESERVOIR | +----<Property Description> EAC_DEPTH_BELOW_SURFACE_LEVEL FAQS: None. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Composed of (two-way) zero or one Classification Data instance zero or more Property Description instances Component of (two-way) zero or more Base Summary Item instances zero or one Transmittal Summary instance Field Elements: SE_String description; /* * The description field specifies an abstract, human-readable * description of the "overall" classification specified by * the given instance; may be empty. */ ------------------------------------------------------------------------------- Class Name: Edge Direction Definition: An instance of this DRM class specifies, for the associated relationship, whether the target edge should be traversed forwards (from start node to end node) or backwards (in the opposite direction). Primary Page in DRM Diagram: 12 Secondary Pages in DRM Diagram: 5 8 13 Example: 1. A <Linear Feature> instance representing a stream is associated with several <Feature Edge> instances that define the path of the stream. The <Edge Direction> associated with each <Feature Edge> has forwards = SE_TRUE if the <Feature Edge> is oriented so that the stream flows in the direction from its starting node to its ending node, and SE_FALSE if the stream flows in the opposite direction. 2. Consider a <Linear Feature> instance representing a one-way street. Its path is defined by a <Feature Edge>, so that the <Edge Direction> between the <Linear Feature> and the <Feature Edge> indicates whether the orientation of the <Feature Edge> matches the permitted direction of travel along the one-way street. 3. The external <Feature Face Ring> of a regular <Feature Face> consists of three <Feature Edge> instances. In traversing the ring, the first <Feature Edge> might be traversed from starting node to ending node, so that its <Edge Direction> would have forwards = SE_TRUE. If the next <Feature Edge> was traversed from its ending node (which in this example is the same <Feature Node> as the ending node of the previous <Feature Edge>) to its starting node, its <Edge Direction> would have forwards = SE_FALSE (that is, backward). FAQS: Q. What if the object associated with the edge represents a spatially located entity, such such as a tree line, that has no well-defined orientation? A. In such cases, the <Edge Direction> instance's forwards field shall be set to SE_FALSE. Q. Isn't this information redundant, in the case of ring edges? A. While this information can be derived by comparing the starting and ending nodes of consecutive edges within the face ring, it is provided as a convenience and as a validity check. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Field Elements: SE_Boolean forwards; /* * If the value of the forwards field is SE_TRUE, the edge is * oriented in the same direction as the object with which it * is associated, so that it should be traversed from its * starting node to its ending node. * * If the value of the forwards field is SE_FALSE, either the * orientation of the edge is the opposite of that of the * associated object, or the associated object has no clearly * defined orientation. In this case, the edge should be * traversed from ending node to starting node. */ ------------------------------------------------------------------------------- Class Name: EI 3D Location Definition: An instance of this DRM class specifies a coordinate within the Equatorial Inertial (EI) 3D SRF. See [I18026] for a complete definition. Primary Page in DRM Diagram: 15 Example: 1. EI provides a convenient SRF for a. Defining the positions of orbital satellites. b. Describing space vehicle dynamics. c. Providing astronomical data. FAQS: Q. Is EI an inertial coordinate system? A. EI is independent of the Earth's surface, and the Earth's position with respect to the Sun -- it is fully inertial. Q. Where can users obtain further information on EI? A. See the SRM for additional details. Superclass: Location 3D Constraints: Publishable Object Environment Root Spatial Reference Frame Image Anchor Spatial Reference Frame Model Spatial Reference Frame Component of (two-way) (inherited) zero or more Arc instances zero or more Camera Point instances zero or more Directional Light Behaviour instances zero or one Distance LOD Data instance zero or more Ellipse instances zero or more Feature Edge instances zero or more Feature Face instances zero or one Feature Node instance zero or more Image Anchor instances zero or more Label instances zero or more Perimeter Data instances zero or more Point instances zero or more Property Grid Hook Point instances zero or one Reference Origin instance zero or more Reference Vector instances zero or more Spatial Extent instances zero or more Spatial Index Related Feature Topology instances zero or more Spatial Index Related Features instances zero or more Spatial Index Related Geometry instances zero or more Spatial Index Related Geometry Topology instances zero or more Tack Point instances zero or more Vertex instances zero or more World 3x3 instances zero or more World Transformation instances zero or one Attachment Point instance zero or more Base Positional Light instances zero or one Contact Point instance zero or more Geometric Centre instances zero or more Separating Plane instances zero or more Sound Instance instances zero or more Stamp Behaviour instances zero or more Volume instances zero or more Volume Light Behaviour instances zero or more Volume LOD Data instances zero or more Volume Object instances Field Elements: SRM_EI_3D_Coordinate coordinate; /* * The coordinate field specifies the coordinate values. */ ------------------------------------------------------------------------------- Class Name: Ellipse Definition: An instance E of this DRM class specifies a closed plane curve such that for each point P on the curve, the sum of P's distances from two fixed points (called the *foci* of E) is a constant. The <Location> component of E specifies the centre of the instance E. The line passing through the foci of E is termed the *major axis* of E. The direction of the major axis of E is specified by the component <Reference Vector> of E with vector_type = MAJOR_AXIS. The line passing through the centre of E and perpendicular to the major axis of E is termed the *minor axis* of E. The direction of the minor axis of E is specified by the component <Reference Vector> of E with vector_type = MINOR_AXIS. Primary Page in DRM Diagram: 5 Secondary Pages in DRM Diagram: 13 Example: 1. The physical extent of certain underwater acoustic phenomena are best described by oval surface geometries in some cases, and by <Elliptic Cylinder> instances in others. FAQS: Q. Why doesn't SEDRIS have a Circle class? A. Because a circle is a special case of an ellipse for which the major and minor axes have the same length. Superclass: Surface Geometry Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Cyclic Aggregations Precedence of Property Set Index Colour Mapping Restrictions Continuous LOD Restrictions Image Mapping Functions and Texture Coordinates Nested Primitive Geometry Associated with (two-way) zero or one Geometry Node instance Composed of (two-way) (inherited) zero or one Classification Data instance zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or more Colour instances zero or more {ordered} Image Mapping Function instances zero or one Light Rendering Properties instance zero or one Presentation Domain instance zero or one Rendering Priority Level instance zero or one Rendering Properties instance zero or more Tack Point instances zero or one Union Of Primitive Geometry instance Composed of (two-way) one Location instance exactly 2 Reference Vector instances Composed of (two-way metadata) (inherited) zero or one Time Constraints Data instance Component of (two-way) (inherited) zero or more Union Of Primitive Geometry instances Field Elements: SE_Long_Float major_axis_length; /* * The major_axis_length field is specified in metres. */ SE_Long_Float minor_axis_length; /* * The minor_axis_length field is specified in metres. */ ------------------------------------------------------------------------------- Class Name: Emissive Colour Definition: An instance of this DRM class specifies the intensity component of a <Primitive Colour>, used to represent light emitted by the coloured object. Since the <Emissive Colour> component is due to light emitted by the object, it is independent of any light sources in the environment, so it is - independent of the angle of the lit object to the light source - independent of the angle of the lit object to the observer Primary Page in DRM Diagram: 14 Example: See <Primitive Colour>. FAQS: Q. Does SEDRIS use the OpenGL lighting model? A. No, although the terminology is similar. SEDRIS handles transparency somewhat differently than OpenGL does, among other things. For a description of the OpenGL lighting model, see [OPENGL], Chapter 5 "Lighting". Superclass: SEDRIS Abstract Base Constraints: Publishable Object Composed of (two-way) one Colour Data instance Component of (two-way) one Primitive Colour instance ------------------------------------------------------------------------------- Class Name: Enumeration Axis Definition: An instance of this DRM class is an <Axis> that uses EDCS Enumerant Codes rather than numerical values as hash marks. Primary Page in DRM Diagram: 6 Example: 1. Consider a <Property Grid> instance containing data that varies by ocean bottom material composition. The <Property Grid> instance therefore has an <Enumeration Axis> component of axis_type = EAC_WATER_BODY_FLOOR_MATERIAL_TYPE. The axis_value_array[] contains corresponding values such as EEC_WTRBDFLRMATTY_CLAY_AND_SILT. 2. Consider a <Property Table> instance containing data that varies by season of the year. The <Property Table> instance therefore has an <Enumeration Axis> component of axis_type = EAC_SEASON. The axis_value_array[] contains some or all of the values: EEC_SEASON_WINTER, EEC_SEASON_SPRING, EEC_SEASON_SUMMER, or EEC_SEASON_AUTUMN. FAQS: Q. How should a data provider decide between using an <Enumeration Axis> with one <Table Property Description> per axis entry, and using multiple <Table Property Description> instances, with each <Table Property Description> replacing a value on the <Enumeration Axis>? A. If the values on the <Enumeration Axis> represent different values of some variable (days of the week, colours, seasons, states), the data provider should use an <Enumeration Axis>, requesting a new EAC enumeration if justified. Multiple <Table Property Description> instances should be used when the <Data Table> contains different kinds of dependent data, such as temperature, pressure, and humidity. Superclass: Axis Constraints: Publishable Object Axis Type Restrictions Component of (two-way) (inherited) one or more Data Table instances Inherited Field Elements: EDCS_Attribute_Code axis_type; /* * The axis_type field specifies the property being described by the * given <Axis> instance. */ SE_Short_Integer_Positive axis_value_count; /* * The axis_value_count field specifies the number of "hash marks" * along the given <Axis> instance. */ Field Elements: EDCS_Enumerant_Code axis_value_array[]; ------------------------------------------------------------------------------- Class Name: Environmental Domain Summary Definition: An instance of this DRM class summarizes a single environmental domain (such as terrain, ocean, atmosphere) to which at least part of the data set described by its aggregate <Transmittal Summary> relates. The complete list of <Environmental Domain Summary> components of a <Transmittal Summary> summarizes the total coverage of the transmittal being described. Primary Page in DRM Diagram: 20 Example: 1. Consider a transmittal containing a polygonal representation of a terrain skin. It consequently contains an <Environmental Domain Summary> with environmental_domain = ECC_LAND. 2. Consider a transmittal containing a <Property Grid> of EAC_WATER_BODY_SOUND_SPEED versus depth in water. The transmittal consequently contains an <Environmental Domain Summary> with environmental_domain = ECC_WATER_BODY_ACOUSTIC_PROPERTY_SET. 3. A transmittal containing <Property Grid> instances of terrain heights and ocean floor depths consequently has two <Environmental Domain Summary> instances with environmental_domain = ECC_LAND and environmental_domain = ECC_OCEAN_FLOOR, respectively. FAQS: None. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Composed of (two-way) zero or more Property Value instances Component of (two-way) one Transmittal Summary instance Field Elements: EDCS_Classification_Code environmental_domain; /* * The environmental_domain specifies the environmental domain * being specified. */ ------------------------------------------------------------------------------- Class Name: Environment Root Definition: An instance of this DRM class is the aggregating object for the <Feature Hierarchy> and / or <Geometry Hierarchy> that represent the instantiation of all data in a common SRF in a given transmittal. In other words, an <Environment Root> instance is the starting point for all objects in the same SRF in a transmittal. Primary Page in DRM Diagram: 1 Secondary Pages in DRM Diagram: 16 Example: 1. Earth. 2. An area of North America that straddles two UTM zones. The <Transmittal Root> would have two <Environment Root> components, one for each of the two UTM zones. FAQS: Q. Is an <Environment Root> required in a transmittal? A. No. For example, a valid transmittal may contain only libraries, such as a <Transmittal Root> with a <Model Library> but without an <Environment Root>. Q. May a data provider supply multiple <Environment Root> instances in the same transmittal? A. Yes, provided that each <Environment Root> instance has a distinct srf_info field (in accordance with the constraint <<Environment Root Spatial Reference Frame>>). See example 2. Q. Why can <Environment Root> have at most 2 <Hierarchy Summary Item> components? A. See <Hierarchy Summary Constraints>. Q. Can <Environment Root> have both <Hierarchy Summary Item> and <Primitive Summary Item> components (as opposed to either/or)? A. Yes. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Environment Root Spatial Reference Frame Hierarchy Summary Constraints Non Empty Environment Root Composed of (two-way) zero or more Base Time Data instances zero or one Feature Hierarchy instance zero or one Geometry Hierarchy instance a bounded set of 0..2 Hierarchy Summary Item instances zero or one Interface Template instance zero or more Primitive Summary Item instances one Spatial Extent instance Composed of (two-way metadata) zero or one Access instance zero or one Citation instance zero or more Cross Reference instances zero or one Data Quality instance zero or one Description instance Component of (two-way) one Transmittal Root instance Field Elements: SE_SRF_Info srf_info; /* * The srf_info field specifies the SRF within which the given * <Environment Root> instance is defined. */ ------------------------------------------------------------------------------- Abstract Class Name: Expression Definition: An instance of a concrete class derived from this DRM class expresses values that are used by <Control Link> instances and the SEDRIS objects controlled by them. <Expression> instances represent places within a transmittal where consuming systems shall perform an evaluation in order to get the exact value of the field of an object. Primary Page in DRM Diagram: 16 Secondary Pages in DRM Diagram: 3 7 17 23 Example: See individual subclasses for examples. FAQS: None. Superclass: SEDRIS Abstract Base Subclasses: Function Literal Variable Constraints: Publishable Object Non Cyclic Aggregations Component of (two-way) zero or more Control Link instances zero or more Feature Model Instance instances, each with a Model Instance Template Indices link object zero or more Function instances zero or more Geometry Model Instance instances, each with a Model Instance Template Indices link object ------------------------------------------------------------------------------- Class Name: Face Direction Definition: An instance of this DRM class specifies which side (the front or the back) of the given topological face is associated with the given <Areal Feature> instance. Primary Page in DRM Diagram: 12 Secondary Pages in DRM Diagram: 8 13 Example: 1. Consider an <Areal Feature> instance representing a grass-covered region, consisting of a single <Feature Face> instance. The <Face Direction> link data on the relationship between them is set to SE_TRUE, indicating that the front (that is, the top) side of the face corresponds to the <Areal Feature> instance. FAQS: Q. What if both sides of a <Feature Face> instance are associated with the same <Areal Feature> instance? A. In such a case the <Feature Face> would appear twice in the collection of <Feature Face> components of the <Areal Feature>, once with the <Face Direction> set to SE_TRUE (front), and once with the <Face Direction> set to SE_FALSE (back). Q. What if the two sides of a <Feature Face> are associated with different <Areal Feature> instances? A. In such a case the <Feature Face> would appear once in the collection of <Feature Face> components of each of the two <Areal Features>. For the <Areal Feature> corresponding to the front side of the face, the <Face Direction> would be set to SE_TRUE, while for the <Areal Feature> corresponding to the back side of the <Feature Face>, the <Face Direction> would be set to SE_FALSE. Q. How does <Face Direction> relate to the feature topology level? A. At feature topology levels 0 through 3, <Face Direction> shall always be SE_TRUE (front). Only at feature topology level 4 can the back side of a <Feature Face> be associated with an <Areal Feature>. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Face Direction Levels 0 3 Field Elements: SE_Boolean front; /* * The <A CLASS="Face_Direction#front">front</A> field * specifies whether the front side of the given face * instance is that associated with the given SEDRIS object. */ ------------------------------------------------------------------------------- Class Name: Fade Range Definition: For region-based audio, an instance of this DRM class specifies the range where the audio is attenuated to fade out at the boundary. Primary Page in DRM Diagram: 22 Example: 1. Consider a 2D areal region used to represent a localized storm cell. If the listener is within the region, the constant sound of rainfall is to be played. If the listener is outside the region, the rainfall sound is not to be played. At the edge of the region, the data provider doesn't want the sound to just turn itself off, but to gradually fade out as the listener gets farther away. So a <Fade Range> instance is attached to the <Sound Instance>, defining the range at which the sound begins fading away and the range at which the sound has completely faded away. FAQS: None. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Component of (two-way) one or more Sound Instance instances Field Elements: SE_Long_Float fade_to_off_begin; /* * The fade_to_off_begin field specifies the range (in metres) * where the sound begins to fade away. */ SE_Long_Float fade_to_off_complete; /* * The fade_to_off_complete field specifies the range (in metres) * where the sound has completely faded away. */ ------------------------------------------------------------------------------- Class Name: Feature Edge Definition: An instance of this DRM class is a one-dimensional <Feature Topology> instance consisting of an ordered collection of <Location> instances connecting one <Feature Node> to another <Feature Node>. The orientation of a <Feature Edge> is defined by the order of its <Location> components, taken in conjunction with its starting <Feature Node> and ending <Feature Node>. A <Feature Edge> is used to represent the location of a segment of either: 1 one or more <Linear Feature> instances, 2) a boundary of one or more <Feature Face> instances, or 3) both. Primary Page in DRM Diagram: 12 Secondary Pages in DRM Diagram: 8 Example: 1. A <Linear Feature> representing the centreline of a road would be defined by one or more <Feature Edge> instances. The border of a forested area would be defined by a collection of one or more <Feature Edge> instances. FAQS: Q. When are <Feature Edge> instances required? A. <Feature Edge> instances are required whenever either <Linear Feature> or <Feature Face> instances are present. Q. Does the sequence of <Location> instances that make up a <Feature Edge> include the endpoints? A. No. The endpoints of a <Feature Edge> are defined by its ordered <Feature Node> associates. Q. Are there any geometric constraints on the sequence of <Location> instances that make up a <Feature Edge>? A. Yes; see this class' constraints for details. Q. How are <Feature Edge> instances affected by the feature topology level? A. At feature topology level 2 or higher, no <Feature Edge> may intersect with or overlap another <Feature Edge>. At feature topology level 3, each <Feature Edge> forms part of the boundaries of exactly two <Feature Face> instances. Superclass: Feature Topology Constraints: Publishable Object No Attribute Conflicts Connected Edge Restrictions Edges Bordering Faces Feature Edge Restrictions Non Crossing Associations Associated to (one-way) zero or more {ordered} Feature Face instances Associated by (one-way) zero or more Feature Face Ring instances, each with a Edge Directions link object Associated with (two-way) zero or more Feature Edge instances exactly 2 {ordered} Feature Node instances, each with a Edge Directions link object zero or more Feature Volume instances zero or more Linear Feature instances, each with a Edge Directions link object Composed of (two-way) (inherited) zero or more Property Value instances Composed of (two-way) zero or more {ordered} Location instances Component of (two-way) (inherited) zero or more Union Of Feature Topology instances ------------------------------------------------------------------------------- Class Name: Feature Face Definition: An instance of this DRM class is a 2-dimensional <Feature Topology> instance used to represent the region that corresponds to an <Areal Feature>, bounded by one or more <Feature Edge> instances. Primary Page in DRM Diagram: 12 Secondary Pages in DRM Diagram: 8 Example: 1. Consider an <Areal Feature> representing a forest - that is, with a <Classification Data> component of ECC_FOREST. The forest has an outer boundary, which is specified by one or more <Feature Edge> instances via a <Feature Face Ring>. 2. At feature topology level 4, the walls of a building might be defined by a collection of <Feature Face> instances. FAQS: Q. When are <Feature Face> instances required? A. <Feature Face> instances are required whenever there are <Areal Feature> instances, regardless of the feature topology level. Q. Are there any geometric constraints on <Feature Faces>? A. Yes; see this class' constraints. Q. Can <Feature Face> instances exist at any feature topology level? A. Yes. <Feature Face> instances may exist at any feature topology level in order to define the extents of <Areal Feature> instances. See this class' constraints for further details. Q. Looking at the relationships allowed for <Feature Topology>, note that the <Feature Edge> to <Feature Edge> association is "many to many", and similarly the <Feature Node> to <Feature Node> association is "many to many". Why is the <Feature Face> to <Feature Face> association "optional to optional" instead of "many to many"? A. These associations exist to support cross-tile topology. In SEDRIS terms, this is topology that appears in more than one branch of a <Spatial Index Related> or <Perimeter Related> aggregation, namely, in a <Spatial Index Related Features>, <Spatial Index Related Feature Topology>, <Perimeter Related Features>, or <Perimeter Related Feature Topology>). <Feature Node>, <Feature Edge>, and, in 3D, <Feature Face> instances can be located on the boundary of a tile. When this happens, they have "counterparts" in each of the adjacent tiles that share the boundary. These associations allow <Feature Node>, <Feature Edge>, and <Feature Face> instances to identify their counterparts, if any. In 2D, - tile boundary <Feature Node> instances come in pairs, unless they're located at a corner where four tiles meet, - tile boundary <Feature Edge> instances always come in pairs, - <Feature Face> instances are always contained within a single tile. However, the multiplicity in the DRM is there to support 3D tiles (e.g., a regular set of rectangular blocks of space). In 3D, - tile boundary <Feature Node> instances can come in - pairs, if they're located within a tile boundary <Feature Face>, - fours, if they lie on a tile boundary <Feature Edge>, or - eights, if they are at a tile boundary corner. - tile boundary <Feature Edge> instances can come in - pairs, if they are contained in a tile boundary <Feature Face>, or - fours if they lie on a tile boundary <Feature Edge>. - tile boundary <Feature Face> instances only come in pairs, so a <Feature Face> can have at most one counterpart. Superclass: Feature Topology Constraints: Publishable Object No Attribute Conflicts Contained Node Restrictions Edges Bordering Faces Feature Edge Restrictions Non Crossing Associations Associated to (one-way) a bounded set of 0..2 {ordered} Feature Volume instances Associated by (one-way) zero or more Feature Edge instances exactly 2 Feature Volume Shell instances, each with a Face Directions link object Associated with (two-way) zero or more Areal Feature instances, each with a Face Directions link object zero or one Feature Face instance zero or more Feature Node instances Composed of (two-way) (inherited) zero or more Property Value instances Composed of (two-way) zero or more {ordered} Feature Face Ring instances zero or more Location instances Component of (two-way) (inherited) zero or more Union Of Feature Topology instances Field Elements: SE_Boolean universal; /* * The universal field specifies that the given <Feature Face> instance * is the universal <Feature Face> instance. Within a 2D or 3D tile * that has feature topology level 3, the universal <Feature Face> * instance lies "outside" any other faces. Since the external * boundary of the universal <Feature Face> instance is at infinity, * a <Feature Face> instance that has this field set to SE_TRUE has * no external <Feature Face Ring> instance. */ ------------------------------------------------------------------------------- Class Name: Feature Face Ring Definition: An instance of this DRM class specifies the one-directional topological relationship from a <Feature Face> instance to the ordered collection of one or more <Feature Edge> instances that define one of its boundaries (outer or inner). Primary Page in DRM Diagram: 12 Example: 1. Consider an <Areal Feature> L representing an ECC_LAKE. The topology of L is represented by a regular <Feature Face>, the outer boundary of which is defined by 2 <Feature Edge> instances, one defining the north shore of the ECC_LAKE, the other defining the south shore. To indicate that these 2 <Feature Edge> instances define the outer boundary of the ECC_LAKE, they are components of an external <Feature Face Ring>, which is in turn a component of the <Regular Feature Face> specifying the topology of L. The <Edge Direction> associated with each <Feature Edge> indicates its orientation with respect to the <Feature Face Ring>. <Feature Face> "L's topology" universal = SE_FALSE <> | <Feature Face Ring> | | --------------------------------------- | | |-<Edge Direction> |-<Edge Direction> | forwards = SE_TRUE | forwards = SE_TRUE | | <Feature Edge> <Feature Edge> FAQS: Q. When are <Feature Face Ring> instances required? A. All <Feature Face> instances are required to have at least one <Feature Face Ring> component, regardless of feature topology level. A <Regular Feature Face> shall have an <External Feature Face Ring>, which defines its outer boundary, and may have any number of <Internal Feature Face Ring> components, which define inner boundaries (that is, "holes") within the <Feature Face>. A "universal" <Feature Face> has no external <Feature Face Ring>, but will have one or more internal <Feature Face Ring> components. Q. Can the same <Feature Edge> appear more than once in the collection of <Feature Edge> instances making up a <Feature Face Ring>? A. Yes. A <Feature Edge> can appear up to twice in a <Feature Face Ring>, once with each orientation. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Face Ring Edge Consistency Associated to (one-way) one or more {ordered} Feature Edge instances, each with a Edge Directions link object Component of (two-way) one Feature Face instance ------------------------------------------------------------------------------- Abstract Class Name: Feature Hierarchy Definition: An instance of one of the concrete subclasses of this DRM class is a hierarchically organized collection of <A CLASS="Feature_Representation">Feature Representation</A> instances. Primary Page in DRM Diagram: 8 Secondary Pages in DRM Diagram: 1 2 3 7 9 20 22 23 Example: See subclasses for examples. FAQS: Q. Where can users find further information on feature topology in SEDRIS? A. See Part 4, Volume 4 Topology Technical Guide of the SEDRIS Documentation Set for further information. Q. Why can't a <Reference Surface> be associated to a <Feature Hierarchy>, as with <Geometry Hierarchy>? A. A <Reference Surface> is associated to a <Geometry Hierarchy> to indicate that the <Geometry Hierarchy> contains a resolution surface. <Feature Hierarchy> instances are not used to represent resolution surfaces. Superclass: Feature Representation Subclasses: Aggregate Feature Feature Model Instance Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Crossing Associations Precedence of Property Set Index Non Cyclic Aggregations Associated to (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or more Property Grid instances, each with a Base Association Data link object Associated by (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or more Property Grid instances, each with a Base Association Data link object Associated by (one-way) zero or one Hierarchy Summary Item instance Composed of (two-way) (inherited) zero or one Classification Data instance zero or more Label instances zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or one Rendering Priority Level instance Composed of (two-way) zero or one Reference Surface instance zero or more Sound Instance instances Composed of (two-way metadata) (inherited) zero or one Access instance zero or more Cross Reference instances zero or one Data Quality instance zero or one Description instance zero or one Time Constraints Data instance Component of (two-way) (inherited) zero or more Union Of Features instances Component of (two-way) zero or more Alternate Hierarchy Related Features instances, each with a Hierarchy Data link object zero or more Classification Related Features instances, each with a Classification Data link object zero or one Environment Root instance zero or one Feature Model instance zero or more LOD Related Features instances, each with a Base LOD Data link object zero or more Octant Related Features instances, each with a Octant Data link object zero or more Perimeter Related Features instances, each with a Perimeter Data link object zero or more Quadrant Related Features instances, each with a Quadrant Data link object zero or more Spatial Index Related Features instances, each with a Spatial Index Data link object zero or more State Related Features instances, each with a State Data link object zero or more Time Related Features instances, each with a Time Constraints Data link object ------------------------------------------------------------------------------- Class Name: Feature Model Definition: An instance of this DRM class specifies a collection of feature attributes and the necessary hierarchy and attributes required to build a <Feature Representation> representation of an environmental entity, defined in the single SRF specified by its <Model> aggregate. Primary Page in DRM Diagram: 2 Secondary Pages in DRM Diagram: 7 16 Example: 1. A segment of railroad track, with <Property Value> instances describing its mobility and material properties. FAQS: Q. Where can users find further information on feature topology in SEDRIS? A. See Part 4, Volume 4 Topology Technical Guide of the SEDRIS Documentation Set for further information. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Associated by (one-way) zero or more Feature Model Instance instances Composed of (two-way) zero or one Feature Hierarchy instance Composed of (two-way metadata) zero or one Access instance zero or more Cross Reference instances zero or one Data Quality instance zero or one Description instance Component of (two-way) one Model instance ------------------------------------------------------------------------------- Class Name: Feature Model Instance Definition: An instance of this DRM class specifies a single case of the existence of a <Feature Model> within a given transmittal, including variations or specialization unique to that case. Primary Page in DRM Diagram: 7 Secondary Pages in DRM Diagram: 2 8 16 Example: 1. Consider a <Model> instance representing a forested area, consisting of a <Geometry Model> instance describing its renderable geometry, and a <Feature Model> instance describing it in terms of a collection of <Areal Feature> instances. The <Geometry Model> instance's <Geometry Hierarchy> and the <Feature Model>'s component <Union Of Features> are connected by an association relationship, to indicate that they are alternate representations of the same entity. Wherever the <Model> is to be instanced, a <Feature Model Instance> instance will be placed, with the appropriate <Transformation> instance to locate it in space and any <Expression> instances required for <Variable> instances within the <Feature Model>. FAQS: Q. Where can users find further information on feature topology in SEDRIS? A. See Part 4, Volume 4 Topology Technical Guide of the SEDRIS Documentation Set for further information. Superclass: Feature Hierarchy Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Crossing Associations Precedence of Property Set Index Non Cyclic Aggregations Distinct Link Objects Model Spatial Reference Frame Associated to (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or more Property Grid instances, each with a Base Association Data link object Associated to (one-way) one Feature Model instance Associated by (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or more Property Grid instances, each with a Base Association Data link object zero or one Hierarchy Summary Item instance Composed of (two-way) (inherited) zero or one Classification Data instance zero or more Label instances zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or one Rendering Priority Level instance zero or one Reference Surface instance zero or more Sound Instance instances Composed of (two-way) zero or more Expression instances, each with a Model Instance Template Indices link object zero or one Transformation instance Composed of (two-way metadata) (inherited) zero or one Access instance zero or more Cross Reference instances zero or one Data Quality instance zero or one Description instance zero or one Time Constraints Data instance Component of (two-way) (inherited) zero or more Union Of Features instances zero or more Alternate Hierarchy Related Features instances, each with a Hierarchy Data link object zero or more Classification Related Features instances, each with a Classification Data link object zero or one Environment Root instance zero or one Feature Model instance zero or more LOD Related Features instances, each with a Base LOD Data link object zero or more Octant Related Features instances, each with a Octant Data link object zero or more Perimeter Related Features instances, each with a Perimeter Data link object zero or more Quadrant Related Features instances, each with a Quadrant Data link object zero or more Spatial Index Related Features instances, each with a Spatial Index Data link object zero or more State Related Features instances, each with a State Data link object zero or more Time Related Features instances, each with a Time Constraints Data link object ------------------------------------------------------------------------------- Class Name: Feature Node Definition: An instance of this DRM class is a zero-dimensional <Feature Topology> instance specifying the location of a <Point Feature> instance and / or the endpoints of one or more <Feature Edge> instances. Primary Page in DRM Diagram: 12 Secondary Pages in DRM Diagram: 8 Example: 1. The location of a small building might be represented by a single <Feature Node>. 2. The intersection of two roads would be represented by a <Feature Node>. FAQS: Q. When are <Feature Node> instances required? A. <Feature Node> instances are required whenever either <Point Feature> or <Feature Edge> instances are present, regardless of the feature topology level. Q. Are there any geometric constraints on the <Location> that is associated with a <Feature Node>? A. Yes. At all feature topology levels greater than zero, different <Feature Node> instances cannot share the same <Location>. Superclass: Feature Topology Constraints: Publishable Object No Attribute Conflicts Connected Edge Restrictions Contained Node Restrictions Non Crossing Associations Associated with (two-way) zero or more Feature Edge instances, each with a Edge Directions link object zero or one Feature Face instance zero or more Feature Node instances zero or one Feature Volume instance zero or more Point Feature instances Composed of (two-way) (inherited) zero or more Property Value instances Composed of (two-way) one Location instance Component of (two-way) (inherited) zero or more Union Of Feature Topology instances ------------------------------------------------------------------------------- Abstract Class Name: Feature Representation Definition: An instance of a concrete class derived from this DRM class represents an entity in the environment (or a hierarchical collection of such entities) so as to abstract away all spatial information that is not needed to reason about that entity in terms of its spatial connectivity. Primary Page in DRM Diagram: 8 Secondary Pages in DRM Diagram: 3 6 10 23 Example: 1. A wide variety of spatially located entities, including roads, railroads, streams, rivers, lakes, bridges, buildings, built-up areas, forests, fields, political boundaries, powerlines, airfields, and so on can be abstractly represented as <Feature Representation> instances. <Feature Representation> instances may be organized into thematic layers, each forming a separate topological surface. FAQS: Q. Are there any limits on the size of a feature? A. No. <Feature Representation> instances are conceptual entities. There are no limits on the size of a single feature, and very few limits on what can be considered to be a single feature. For example, the entire Interstate highway system of the United States could be considered to be a single high-level feature, if that were useful in a particular context. However, there are some limits on individual <Primitive Feature> instances. Superclass: SEDRIS Abstract Base Subclasses: Feature Hierarchy Primitive Feature Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Crossing Associations Precedence of Property Set Index Associated to (one-way) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or more Property Grid instances, each with a Base Association Data link object Associated by (one-way) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or more Property Grid instances, each with a Base Association Data link object Composed of (two-way) zero or one Classification Data instance zero or more Label instances zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or one Rendering Priority Level instance Composed of (two-way metadata) zero or one Access instance zero or more Cross Reference instances zero or one Data Quality instance zero or one Description instance zero or one Time Constraints Data instance Component of (two-way) zero or more Union Of Features instances ------------------------------------------------------------------------------- Abstract Class Name: Feature Topology Definition: An instance of a concrete class derived from this DRM class specifies both the geometric aspects (such as location and shape) and topological aspects (such as adjacency) of part of one or more <Feature Representation> instances. A topological surface consists of a collection of <Feature Topology> instances related to one another through a variety of topological relationships. Primary Page in DRM Diagram: 12 Secondary Pages in DRM Diagram: 11 23 Example: 1. In a collection of <Feature Representation> instances representing a transportation network, the <Feature Face> instances represent built-up areas, airfields, railroad yards, and parking lots, the <Feature Edge> instances represent their boundaries as well as roads, railroads, and runways, and the <Feature Node> instances represent road intersections and railroad crossings. FAQS: Q. Why is <Feature Topology> defined separately from <Geometry Topology>? A. <Feature Topology> includes both the geometric and the topological aspects of <Feature Representations>, while <Geometry Topology> includes only the topological aspects of <Geometry Representation>, which are completely optional. Superclass: SEDRIS Abstract Base Subclasses: Feature Edge Feature Face Feature Node Feature Volume Constraints: Publishable Object No Attribute Conflicts Composed of (two-way) zero or more Property Value instances Component of (two-way) zero or more Union Of Feature Topology instances ------------------------------------------------------------------------------- Abstract Class Name: Feature Topology Hierarchy Definition: An instance of this DRM class specifies a spatially organized hierarchical collection of <Feature Topology> instances, which includes all the <Feature Topology> instances that lie within a defined spatial extent, and are components of a single <Aggregate Feature> instance. Primary Page in DRM Diagram: 11 Secondary Pages in DRM Diagram: 8 23 Example: 1. The set of all <Feature Topology> instances contained within an independent topological surface, organized into a collection of regularly or irregularly shaped tiles. FAQS: Q. What is the purpose of this class? A. This class allows <Feature Topology> instances to be spatially organized using different methods. It ensures that all <Feature Topology> instances, particularly those that are not directly associated with any <Feature Representation>, have at least one containing object. Q. Why not restrict <Feature Topology Hierarchy> to be a component of just <Environment Root> and <Model> - placing topology as an organizing principle on par with <Geometry Representation> organizations and <Feature Representation> organizations? A. It shall be possible to spatially organize the topology of every "topological surface". A "topological surface" is not necessarily "rooted at" an <Environment Root> or a <Model> instance. In general, many different "topological surfaces" may exist within an <Environment Root> or a <Model>. Superclass: SEDRIS Abstract Base Subclasses: Perimeter Related Feature Topology Spatial Index Related Feature Topology Union Of Feature Topology Constraints: Publishable Object Component of (two-way) zero or more Aggregate Feature instances Field Elements: SE_Feature_Topology_Level feature_topology_level; /* * The feature_topology_level field specifies the level of * feature topology that is present within the hierarchy * represented by the given <Feature Topology Hierarchy> * instance. */ ------------------------------------------------------------------------------- Class Name: Feature Volume Definition: An instance of this DRM class is a 3-dimensional <Feature Topology> instance used to represent the region of space that corresponds to parts of zero or more <Volumetric Feature> instances, bounded by two or more <Feature Face> instances. Primary Page in DRM Diagram: 12 Secondary Pages in DRM Diagram: 8 Example: 1. Consider a <Volumetric Feature> representing a building. It has an associated <Feature Volume>, which defines its extent, shape, and topological relationships; a <Classification Data> component that classifies it as an ECC_BUILDING; <Property Value> components that describe its characteristics, such as material composition, and a <Label> that identifies it as "The Empire State Building". <Volmetric Feature>--------------<Feature Volume> <> ---------------------------------------- | | | <Classification Data> <Property Value> <Label> { ECC_BUILDING } <> | <Text> { "Empire State Building" } FAQS: Q. When are <Feature Volume> instances required? A. <Feature Volume> instances are required whenever there are <Volumetric Feature> instances, regardless of the feature topology level. Q. Are there any geometric constraints on <Feature Volume> instances? A. Yes. <Feature Volume> instances must always have closed external boundaries, and their interiors must be fully connected. At feature topology level 5, the interiors of <Feature Volume> instances may not intersect or overlap one another, and <Feature Volume> instances may meet only along one or more common <Feature Face> instances. Q. Can <Feature Volume> instances exist at any feature topology level? A. Yes. <Feature Volume> instances may exist at any feature topology level in order to define the extents of <Volumetric Feature> instances. At feature topology level 5, the collection of <Feature Volume> instances must exhaustively and exclusively partition the 3-dimensional topological space, such that exactly two <Feature Volume> instances shall be bounded by each <Feature Face>. Q. Looking at the relationships allowed for <Feature Topology>, we note that the <Feature Node> to <Feature Node> association, and the <Feature Edge> to <Feature Edge> association are "many to many", while the <Feature Face> to <Feature Face> association is "optional to optional". Why is there no corresponding association between <Feature Volume> instances? A. These associations exist to support cross-tile topology. This refers to topological relationships that cross multiple branches below a <Spatial Index Related Features>, <Spatial Index Related Feature Topology>, <Perimeter Related Features>, or <Perimeter Related Feature Topology> instance. <Feature Node>, <Feature Edge>, and, in 3D, <Feature Face> instances can be located on the boundary of a tile. When this happens, they have "counterparts" in each of the adjacent tiles that share the boundary. These associations allow <Feature Node>, <Feature Edge>, and <Feature Face> instances to identify their counterparts, if any. In 2D, * tile boundary <Feature Node> instances come in pairs, unless they're located at a corner where four tiles meet, * tile boundary <Feature Edge> instances always come in pairs, * <Feature Face> instances are always contained within a single tile. In 3D, * tile boundary <Feature Node> instances can come in - pairs, if they're located within a tile boundary <Feature Face>, - fours, if they lie on a tile boundary <Feature Edge>, or - eights, if they are at a tile boundary corner. * tile boundary <Feature Edge> instances can come in - pairs, if they are contained in a tile boundary <Feature Face>, or - fours if they lie on a tile boundary <Feature Edge>. * tile boundary <Feature Face> instances only come in pairs, so a <Feature Face> can have at most one counterpart. * <Feature Volume> instances cannot be part of a tile boundary (though their bounding <Feature Face> instances can). Therefore, <Feature Volume> instances never have counterparts in adjacent tiles. Superclass: Feature Topology Constraints: Publishable Object No Attribute Conflicts Contained Edge Restrictions Contained Node Restrictions Faces Bordering Volumes Non Crossing Associations Volume Shell Face Consistency Associated by (one-way) zero or more Feature Face instances Associated with (two-way) zero or more Feature Edge instances zero or more Feature Node instances zero or more Volumetric Feature instances Composed of (two-way) (inherited) zero or more Property Value instances Composed of (two-way) zero or more Feature Volume Shell instances Component of (two-way) (inherited) zero or more Union Of Feature Topology instances ------------------------------------------------------------------------------- Class Name: Feature Volume Shell Definition: An instance of this DRM class specifies the one-directional topological relationship from a <Feature Volume> to the collection of two or more <Feature Face> instances that define one of its boundaries (external or internal). Primary Page in DRM Diagram: 12 Example: 1. Consider a <Volumetric Feature> representing a building. It has an associated <Feature Volume>, which defines its extent, shape, and topological relationships; a <Classification Data> component that classifies it as an ECC_BUILDING; <Property Value> components that describe its characteristics, such as material composition, and a <Label> that identifies it as "The Empire State Building". The external boundary of the <Feature Volume> would consist of a single <Feature Volume Shell> which would be associated with the <Feature Face> instances representing the walls, roof, and (basement) floor of the building. FAQS: Q. When are <Feature Volume Shell> instances required? A. All <Feature Volume> instances except the instance representing the universal volume are required to have at least one <Feature Volume Shell> component, representing its external boundary. All <Feature Volume> instances, including the instance representing the universal volume, may also have any number of <Feature Volume Shell> components that define internal boundaries (that is, "holes") within the <Feature Volume>. Q. Can the same <Feature Face> appear more than once in the collection of <Feature Face> instances making up a <Feature Volume Shell>? A. Yes. A <Feature Face> can appear up to twice in a <Feature Volume Shell>, once with each orientation. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Volume Shell Face Consistency Associated to (one-way) 2 or more Feature Face instances, each with a Face Directions link object Component of (two-way) one Feature Volume instance Field Elements: SE_Boolean universal; /* * The universal field specifies that the given <Feature Volume> instance * is the universal <Feature Volume> instance. Within a 3D tile that has * feature topology level 5, the universal <Feature Volume> * instance lies "outside" any other volumes. Since the * external boundary of the universal <Feature Volume> instance * is at infinity, a <Feature Volume> instance that has this field * set to SE_TRUE has no external <Feature Volume Shell> instance. */ ------------------------------------------------------------------------------- Class Name: Finite Element Mesh Definition: An instance of this DRM class specifies a tesselation of a surface into mesh faces, or of a solid into solid elements. Additional data may be associated with each vertex, mesh face, and / or solid element. More specifically, a <Finite Element Mesh> instance is comprised of: 1) an ordered list of <Vertex> instances, which thus associates an index number to each <Vertex> instance, 2) a <Mesh Face Table> instance, which defines the mesh faces in terms of <Vertex> index numbers, 3) optionally, <Property Table> instances providing additional data (details given below). Knowledge of which vertices form a mesh face (or solid) is important for various computations, such as interpolation. Component <Property Table> instances are optional; when present, they are used to define solid elements and to associate data with <Vertex> instances, mesh faces, or solid elements. Primary Page in DRM Diagram: 5 Secondary Pages in DRM Diagram: 18 Example: 1. In support of a rain run-off computational model, a ground surface area is triangulated. At each triangle vertex, the gradient, porosity, flow resistance, water capacity, and rain rate are measured. This data set is represented in a <Finite Element Mesh> instance by 1) an ordered list of <Vertex> instances (one for each triangle vertex), 2) a <Mesh Face Table> to define the triangles, an ECC_MESH_FACE_PROPERTY_SET <Property Table> for the gradient data, and 3) an ECC_MESH_NODE_PROPERTY_SET <Property Table> for the remaining properties. FAQS: Q. What is the difference between a surface and a solid <Finite Element Mesh>? A. Surface mesh does not have any <Property Table> instances classified as either ECC_MESH_SOLID_SET or ECC_MESH_SOLID_PROPERTY_SET, but may have surface topology in its component <Mesh Face Table>. A solid mesh shall have a ECC_MESH_SOLID_SET <Property Table>, may have a ECC_MESH_SOLID_PROPERTY_SET <Property Table>, and does not have surface topology in its component <Mesh Face Table>. Q. As a user, where can users obtain further information about <Finite Element Mesh> and its associated <Data Table> instances? A. See Part 4 Volume 6, Data Tables Technical Guide, of the SEDRIS Documentation Set. Superclass: Primitive Geometry Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Cyclic Aggregations Precedence of Property Set Index Colour Mapping Restrictions Continuous LOD Restrictions Image Mapping Functions and Texture Coordinates Nested Primitive Geometry Finite Element Mesh Structure Composed of (two-way) (inherited) zero or one Classification Data instance zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or more Colour instances zero or more {ordered} Image Mapping Function instances zero or one Light Rendering Properties instance zero or one Presentation Domain instance zero or one Rendering Priority Level instance zero or one Rendering Properties instance zero or more Tack Point instances zero or one Union Of Primitive Geometry instance Composed of (two-way) one Mesh Face Table instance 3 or more {ordered} Vertex instances Composed of (two-way metadata) (inherited) zero or one Time Constraints Data instance Component of (two-way) (inherited) zero or more Union Of Primitive Geometry instances ------------------------------------------------------------------------------- Class Name: Flashing Light Behaviour Definition: An instance of this DRM class specifies behaviour specific to a flashing light. Primary Page in DRM Diagram: 21 Example: 1. Consider a <Point> representing a warning light at a railroad crossing. The <Point> has a <Light Rendering Properties> component, which in turn has a <Flashing Light Behaviour> and a <Light Rendering Properties Control Link>. The <Light Rendering Properties Control Link> is used to turn on the light, so that the light flashes when indicating that a train is approaching. FAQS: None. Superclass: Light Rendering Behaviour Constraints: Publishable Object Component of (two-way) (inherited) one or more Light Rendering Properties instances Field Elements: SE_Long_Float period; /* * The period field specifies the total period of time, measured * in seconds, and including both the on and off parts of the * flashing cycle. */ SE_Long_Float delay; /* * The delay field specifies a delay period, measured in seconds, * before the flashing behaviour is to begin, and shall be * a non-negative value. It can be used to allow a collection * of objects representing lights to appear asynchronous. */ SE_Long_Float duration; /* * The duration field specifies the period of time, measured in seconds, * that the light is on, and is therefore required to be less than * the period field value. */ ------------------------------------------------------------------------------- Class Name: Functional Association Data Definition: An instance of this DRM class specifies the semantic meaning of the association relationship with which it is bound. Primary Page in DRM Diagram: 9 Example: None. FAQS: None. Superclass: Base Association Data Constraints: Publishable Object Field Elements: SE_Functional_Association_Meaning_Type meaning; /* * The meaning field specifies the semantic meaning of the * association relationship with which the given instance of * <Functional Association Data> is bound. */ ------------------------------------------------------------------------------- Abstract Class Name: Function Definition: An instance of one of the concrete subclasses of this abstract DRM class specifies an expression for which the value is determined by evaluating the arguments of the expression - the ordered <Expression> components of the <Function> - and passing them through the specified function. Primary Page in DRM Diagram: 16 Secondary Pages in DRM Diagram: 23 Example: See specific subclasses for examples. FAQS: See the subclasses for details. Superclass: Expression Subclasses: Predefined Function Pseudo Code Function Constraints: Publishable Object Non Cyclic Aggregations Composed of (two-way) zero or more {ordered} Expression instances Component of (two-way) (inherited) zero or more Control Link instances zero or more Feature Model Instance instances, each with a Model Instance Template Indices link object zero or more Function instances zero or more Geometry Model Instance instances, each with a Model Instance Template Indices link object Field Elements: EDCS_Attribute_Value_Type value_type; /* * The value_type of a <Function> instance returns the type of value * produced when the <Function> instance is evaluated for its arguments. */ ------------------------------------------------------------------------------- Class Name: Geometric Centre Definition: An instance A of this DRM class is a component of an <Aggregate Geometry> instance B - that is, of an instance of a concrete subclass of <Aggregate Geometry> - where B represents a "body" such that the <Location 3D> instance specified by A has the semantic indicated by A's meaning field. Primary Page in DRM Diagram: 4 Example: 1. Consider a <Model> instance S providing a geometric representation of an ECC_SAILING_VESSEL as follows, where the srf_info of S is specified to be LSR 3D. <Model> <> ---------------------------------- | | <Geometry Model> <Classification Data> <> tag = ECC_SAILING_VESSEL | <Union Of Geometry Hierarchy> <> ------------------------------------ | | (geometric representation) <Geometric Centre> meaning = SE_GEOM_CTR_CODE_CENTRE_OF_BUOYANCY | <LSR 3D Location> If S is instanced in a simulation where S is considered to be floating on water, the effects of the force of the water upon S can be computed for the SE_GEOM_CTR_CODE_CENTRE_OF_BUOYANCY <Geometric Centre> to determine how they apply to S as a whole. 2. Consider a <Model> instance G providing a geometric representation of an ECC_GROUND_VEHICLE as follows, where the srf_info of the <Model> are specified to be LSR 3D. <Model> <> ---------------------------------- | | <Geometry Model> <Classification Data> <> tag = ECC_GROUND_VEHICLE | <Union Of Geometry Hierarchy> <> ------------------------------------ | | (geometric representation) <Geometric Centre> meaning = SE_GEOM_CTR_CODE_CENTRE_OF_MASS | <LSR 3D Location> 3. Consider a <Model> instance A providing a geometric representation of an ECC_AIRCRAFT as follows, where the srf_info of the <Model> are specified to be LSR 3D. <Model> <> ---------------------------------- | | <Geometry Model> <Classification Data> <> tag = ECC_AIRCRAFT | <Union Of Geometry Hierarchy> <> ------------------------------------ | | (geometric representation) <Geometric Centre> meaning = SE_GEOM_CTR_CODE_CENTRE_OF_PRESSURE | <LSR 3D Location> If A is instanced in a simulation where A is considered to be in the air, the effects of the force of the air upon A can be computed for the SE_GEOM_CTR_CODE_CENTRE_OF_PRESSURE <Geometric Centre> to determine how they apply to A as a whole. FAQS: None. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Composed of (two-way) one Location 3D instance Component of (two-way) one or more Aggregate Geometry instances Field Elements: SE_Geometric_Centre_Code meaning; /* * The meaning field specifies the semantic of the <Location 3D> * component of the given instance of <Geometric Centre>. */ ------------------------------------------------------------------------------- Class Name: Geometry Edge Definition: An instance of this DRM class is a one-dimensional <Geometry Topology> instance consisting of an ordered collection of <Location> instances connecting one <Geometry Node> to another <Geometry Node>. The orientation of a <Geometry Edge> is defined by the order of its <Location> components, taken in conjunction with its starting <Geometry Node> and ending <Geometry Node>. A <Geometry Edge> is used to represent the location of a segment of 1) one or more <Linear Geometry> instances, 2) a boundary of one or more <Geometry Face> instances, or 3) both. Primary Page in DRM Diagram: 13 Secondary Pages in DRM Diagram: 5 Example: 1. A <Line> instance that represents the lighting of a runway may consist of many <Geometry Edge> instances. FAQS: None. Superclass: Geometry Topology Constraints: Publishable Object Connected Edge Restrictions Associated with (two-way) zero or more {ordered} Geometry Face instances, each with a Edge Directions link object exactly 2 {ordered} Geometry Node instances, each with a Edge Directions link object zero or more Geometry Volume instances zero or more Linear Geometry instances, each with a Edge Directions link object Component of (two-way) (inherited) one Union Of Geometry Topology instance ------------------------------------------------------------------------------- Class Name: Geometry Face Definition: An instance of this DRM class specifies a significant polygonal area. The external boundary of a <Geometry Face> is specified by its <Geometry Face Ring> component. Primary Page in DRM Diagram: 13 Secondary Pages in DRM Diagram: 5 Example: 1. A triangulation of <Polygon> instances that detail the upper surface of a forest canopy is composed of many <Geometry Face> instances. FAQS: None. Superclass: Geometry Topology Constraints: Publishable Object Contained Node Restrictions Associated with (two-way) one or more {ordered} Geometry Edge instances, each with a Edge Directions link object zero or more Geometry Node instances a bounded set of 0..2 {ordered} Geometry Volume instances, each with a Face Directions link object zero or more Polygon instances Component of (two-way) (inherited) one Union Of Geometry Topology instance ------------------------------------------------------------------------------- Abstract Class Name: Geometry Hierarchy Definition: An instance of one of the concrete subclasses of this DRM class is a hierarchically organized collection of <Geometry Representation> instances. Primary Page in DRM Diagram: 3 Secondary Pages in DRM Diagram: 1 2 4 5 7 8 9 20 22 23 Example: See concrete subclasses for examples. FAQS: None. Superclass: Geometry Representation Subclasses: Aggregate Geometry Geometry Model Instance Property Grid Hook Point Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Cyclic Aggregations Precedence of Property Set Index Non Crossing Associations Associated to (one-way) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object Associated by (one-way) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or one Hierarchy Summary Item instance zero or more Reference Surface instances Composed of (two-way) (inherited) zero or one Classification Data instance zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances Composed of (two-way) zero or one Reference Surface instance zero or more Sound Instance instances Composed of (two-way metadata) (inherited) zero or one Time Constraints Data instance Composed of (two-way metadata) zero or one Access instance zero or more Cross Reference instances zero or one Data Quality instance zero or one Description instance Component of (two-way) zero or more Alternate Hierarchy Related Geometry instances, each with a Hierarchy Data link object zero or more Animation Related Geometry instances zero or more Classification Related Geometry instances, each with a Classification Data link object zero or one Environment Root instance zero or one Geometry Model instance zero or more LOD Related Geometry instances, each with a Base LOD Data link object zero or more Octant Related Geometry instances, each with a Octant Data link object zero or more Perimeter Related Geometry instances, each with a Perimeter Data link object zero or more Quadrant Related Geometry instances, each with a Quadrant Data link object zero or more Separating Plane Relations instances, each with a Separating Plane Data link object zero or more Spatial Index Related Geometry instances, each with a Spatial Index Data link object zero or more State Related Geometry instances, each with a State Data link object zero or more Time Related Geometry instances, each with a Time Constraints Data link object zero or more Union Of Geometry Hierarchy instances ------------------------------------------------------------------------------- Class Name: Geometry Model Definition: An instance of this DRM class specifies a collection of geometric attributes and the necessary hierarchy and attributes required to build a renderable component of the transmittal, defined in the single single SRF specified by its <Model> aggregate. Primary Page in DRM Diagram: 2 Secondary Pages in DRM Diagram: 3 7 16 Example: 1. The representation of the hull of an M1 tank. 2. A <Geometry Model> representing a missile pointing down the -Z axis. The <Geometry Model> is aggregated by a <Model>, which in turn is part of a large <Model Library>, in which the missiles are expected to point down the positive Y axis. To be consistent with the other <Models> in the <Model Library>, the missile's <Geometry Model> has an <LSR Transformation> to reorient it to point down the positive Y axis. 3. A <Geometry Model> may be a large and complex as a large terrain model, or as simple as a tank's turret at the lowest level of detail. FAQS: Q. Why does <Geometry Model> have an <LSR Transformation>? Isn't this taken care of by <Geometry Model Instance>'s <Transformation> component? A. <Geometry Model> has an <LSR Transformation> to allow all <Model> components of a <Model Library> to be given a uniform orientation. (Note that the data provider is not *required* to give them all a uniform orientation.) Superclass: SEDRIS Abstract Base Constraints: Publishable Object Continuous LOD Restrictions Associated by (one-way) zero or more Geometry Model Instance instances Composed of (two-way) zero or more Attachment Point instances zero or more Contact Point instances zero or one Geometry Hierarchy instance zero or one LSR Transformation instance Composed of (two-way metadata) zero or one Access instance zero or more Cross Reference instances zero or one Data Quality instance zero or one Description instance Component of (two-way) one Model instance ------------------------------------------------------------------------------- Class Name: Geometry Model Instance Definition: An instance of this DRM class specifies a single case of the existence of a <Geometry Model> within a given transmittal, including variations or specialization unique to that case. In particular, a <Geometry Model Instance> is used to transform one <Geometry Model> into the SRF of another <Geometry Model> or that of an <Environment Root>. Primary Page in DRM Diagram: 7 Secondary Pages in DRM Diagram: 2 3 16 Example: 1. Consider a <Model> of a building, consisting of a <Geometry Model> describing its geometric representation, where the <Model> is described in an LSR 3D SRF. To instance this <Model> into an <Environment Root>, the SRF of which is 3D geodetic, the data provider constructs a <Geometry Model Instance> with a <World Transformation> component, and incorporates it into the <Geometry Hierarchy> of that <Environment Root>. The <World Transformation> specifies the <CD 3D Location> at which the <Model>'s 0, 0, 0 coordinate will be instanced, together with any other transformation information required to orient and scale the <Model> properly. 2. Consider a <Geometry Model> describing the rotor of a helicopter, and intended for use within a larger <Geometry Model> of the entire helicopter. Both are defined in 3D LSR SRFs. The helicopter model will contain a <Geometry Model Instance> of the rotor model, with an <LSR Transformation> component containing a <Rotation> instance with a <Rotation Control Link>. The <LSR Transformation> specifies both the transformation required to position the rotor within the helicopter model, and the <Variable> within the larger helicopter <Model> that will be plugged into the rotor <Model>'s internal <Variable> for angle of rotation. FAQS: None. Superclass: Geometry Hierarchy Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Cyclic Aggregations Precedence of Property Set Index Non Crossing Associations Distinct Link Objects Model Spatial Reference Frame Associated to (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object Associated to (one-way) one Geometry Model instance Associated by (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or one Hierarchy Summary Item instance zero or more Reference Surface instances Composed of (two-way) (inherited) zero or one Classification Data instance zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or one Reference Surface instance zero or more Sound Instance instances Composed of (two-way) zero or one Conformal Behaviour instance zero or more Expression instances, each with a Model Instance Template Indices link object zero or one Overload Priority Index instance zero or one Rendering Priority Level instance zero or one Stamp Behaviour instance zero or one Transformation instance Composed of (two-way metadata) (inherited) zero or one Time Constraints Data instance zero or one Access instance zero or more Cross Reference instances zero or one Data Quality instance zero or one Description instance Component of (two-way) (inherited) zero or more Alternate Hierarchy Related Geometry instances, each with a Hierarchy Data link object zero or more Animation Related Geometry instances zero or more Classification Related Geometry instances, each with a Classification Data link object zero or one Environment Root instance zero or one Geometry Model instance zero or more LOD Related Geometry instances, each with a Base LOD Data link object zero or more Octant Related Geometry instances, each with a Octant Data link object zero or more Perimeter Related Geometry instances, each with a Perimeter Data link object zero or more Quadrant Related Geometry instances, each with a Quadrant Data link object zero or more Separating Plane Relations instances, each with a Separating Plane Data link object zero or more Spatial Index Related Geometry instances, each with a Spatial Index Data link object zero or more State Related Geometry instances, each with a State Data link object zero or more Time Related Geometry instances, each with a Time Constraints Data link object zero or more Union Of Geometry Hierarchy instances ------------------------------------------------------------------------------- Class Name: Geometry Node Definition: An instance of this DRM class specifies a topological attribute that identifies a significant place, or the connecting point of higher-dimensional topological attribute(s). It is the component of one (or more) objects that have a single <Location>. The location of a <Geometry Node> is the same location as the spatially located object of which the node is a component. Primary Page in DRM Diagram: 13 Secondary Pages in DRM Diagram: 5 6 18 Example: 1. The endpoints of a <Geometry Edge> representing part of the lighting of a runway are specified by <Geometry Node> instances. FAQS: None. Superclass: Geometry Topology Constraints: Publishable Object Connected Edge Restrictions Contained Node Restrictions Associated with (two-way) zero or more Ellipse instances zero or more Geometry Edge instances, each with a Edge Directions link object zero or one Geometry Face instance zero or one Geometry Volume instance zero or more Point instances zero or more Property Grid Hook Point instances zero or more Vertex instances zero or more Volume Object instances Component of (two-way) (inherited) one Union Of Geometry Topology instance ------------------------------------------------------------------------------- Abstract Class Name: Geometry Representation Definition: An instance of a concrete class derived from this DRM class species either 1) the concepts of traditional geometry and/or 2) measured data and organizational methods used to organize instances of these traditional geometry and of other concrete DRM classes within a transmittal. Primary Page in DRM Diagram: 3 Secondary Pages in DRM Diagram: 5 6 23 Example: See individual subclasses for examples. FAQS: None. Superclass: SEDRIS Abstract Base Subclasses: Geometry Hierarchy Primitive Geometry Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Cyclic Aggregations Precedence of Property Set Index Composed of (two-way) zero or one Classification Data instance zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances Composed of (two-way metadata) zero or one Time Constraints Data instance ------------------------------------------------------------------------------- Abstract Class Name: Geometry Topology Definition: An instance of a concrete class derived from this DRM class specifies a standard topological element. Primary Page in DRM Diagram: 13 Secondary Pages in DRM Diagram: 11 23 Example: See individual subclasses for examples. FAQS: None. Superclass: SEDRIS Abstract Base Subclasses: Geometry Edge Geometry Face Geometry Node Geometry Volume Constraints: Publishable Object Component of (two-way) one Union Of Geometry Topology instance ------------------------------------------------------------------------------- Abstract Class Name: Geometry Topology Hierarchy Definition: An instance of a concrete class derived from this DRM class is a spatially organized hierarchical collection of <Geometry Topology> instances that lie within a defined spatial extent, and are components of a single <Aggregate Geometry> instance. Primary Page in DRM Diagram: 11 Secondary Pages in DRM Diagram: 4 23 Example: See individual subclasses for examples. FAQS: Q. What is the purpose of this class? A. This class allows <Geometry Topology> instances to be spatially organized using different methods. It ensures that all <Geometry Topology> instances particularly those that are not directly associated with any <Geometry Representation>, have at least one containing object. Q. Why not restrict <Geometry Topology Hierarchy> to be a component of just <Environment Root> and <Model> - placing topology as an organizing principle on par with <Geometry Representation> organizations and <Geometry Representation> organizations? A. We require the ability to spatially organize the topology of every "topological surface". A "topological surface" is not necessarily "rooted at" an <Environment Root> or a <Model> instance. In general, many different "topological surfaces" may exist within an <Environment Root> or a <Model> instance. Superclass: SEDRIS Abstract Base Subclasses: Perimeter Related Geometry Topology Spatial Index Related Geometry Topology Union Of Geometry Topology Constraints: Publishable Object Component of (two-way) zero or more Aggregate Geometry instances Field Elements: SE_Geometry_Topology_Level geometry_topology_level; /* * The geometry_topology_level field specifies the level of * geometry topology that is present within the hierarchy * represented by the given <Geometry Topology Hierarchy> * instance. */ ------------------------------------------------------------------------------- Class Name: Geometry Volume Definition: An instance of this DRM class is a three-dimensional <Geometry Topology> instance used to represent an enclosed region of space that is bounded by two or more <Geometry Face> instances. Primary Page in DRM Diagram: 13 Secondary Pages in DRM Diagram: 5 Example: 1. Consider a <Polyhedron> representing a building. It has a collection of <Polygons>, which define its geometric shape; an associated <Geometry Volume>, which defines its topological relationships; a <Classification Data> component that classifies it as an ECC_BUILDING; <Property Value> components that describe its characteristics, such as material composition, and a <Label> that identifies it as "The Empire State Building". FAQS: Q. When are <Geometry Volume> instances required? A. <Geometry Volume> instances are required only when the geometry topology level is five. Q. Are there any geometric constraints on <Geometry Volume> instances? A. Yes. <Geometry Volume> instances must always have closed external boundaries (defined by their component <Polygons>), and their interiors must be fully connected. At geometry topology level 5, the interiors of <Geoemtry Volume> instances may not intersect or overlap one another, and <Geometry Volume> instances may meet only along one or more common <Geometry Face> instances. Q. Can <Geometry Volume> instances exist at any geometry topology level? A. Yes. <Geometry Volume> instances may exist at any geometry topology level. At geometry topology level 5, the collection of <Geometry Volume> instances must exhaustively and exclusively partition the 3-dimensional topological space, such that exactly two <Geometry Volume> instances shall be bounded by each <Geometry Face>. Superclass: Geometry Topology Constraints: Publishable Object Contained Edge Restrictions Contained Node Restrictions Faces Bordering Volumes Non Crossing Associations Associated with (two-way) zero or more Geometry Edge instances 4 or more Geometry Face instances, each with a Face Directions link object zero or more Geometry Node instances zero or more Polyhedron instances Component of (two-way) (inherited) one Union Of Geometry Topology instance ------------------------------------------------------------------------------- Class Name: Grid Overlap Definition: An instance of this DRM class specifies how the data provider intended the consumer to resolve data ambiguity at a location falling within a grid cell for two or more <Property Grid> instances, such that the ambiguity cannot be resolved by other means. An ambiguity occurs at a location L lying within two <Property Grid> instances A and B if all four of the following conditions hold. - A and B are not disjoint due to any higher-level organizing structure in the transmittal, such as membership under different branches of an <Alternate Hierarchy Related Geometry, or disjoint <Time Constraints Data>. - A and B have matching <Classification Data>. - At least one <Table Property Description> in A has a meaning matching a <Table Property Description> in B. - Both A and B actually have data for that matching <Table Property Description> at L. When such an ambiguity occurs, <Grid Overlap> instance(s) indicate how the data provider intended the consumer to calculate the <Table Property Description> value intended at each such location. When <Grid Overlap> instances are required and are present, resolution only occurs within an overlay group. The resolution process is performed on data from <Property Grid> cells that contain a given location (choose the first priority group that includes all relevant grids.) The resolution process is as follows: STEP 1: Start with priority 0. Each priority group shall have exactly one <Grid Overlap> instance with priority 0. The <Property Grid> instance for this <Grid Overlap> instance shall overlap the other <Property Grid> instances in the given priority group. The operation for priority 0 shall be SE_GRD_OVRLP_OP_BASE. Extract cell data from the <Property Grid> instance that has this <Grid Overlap> instance as a component; this becomes the current data. STEP 2: Find the next priority. Priorities within an overlay group need not be consecutive, but they shall be unique. Extract the cell data from the <Property Grid> that has this <Grid Overlap> as a component. Operate on this and the current data according to the <Grid Overlap> operation. The result of the operation becomes the current data for the next step. SE_GRD_OVRLP_OP_REPLACE means that this data overrides the current data from the last step. SE_GRD_OVRLP_OP_ADD and SE_GRD_OVRLP_OP_MEAN can only be applied to numeric data. SE_GRD_OVRLP_OP_MERGE operations are dependent on the classification of the <Property Grids>, and use methods documented outside SEDRIS. STEP 3: Look for next priority. If found, goto step 2. Otherwise use the current data. Primary Page in DRM Diagram: 6 Example: 1. Low resolution grid A covers a large area, and contains smaller, but higher resolution grids B, C, and D. The <Grid Overlap> scheme is: <Property Grid> overlay_group priority operation A 10 0 SE_GRD_OVRLP_OP_BASE B 10 1 SE_GRD_OVRLP_OP_REPLACE A 20 0 SE_GRD_OVRLP_OP_BASE C 20 1 SE_GRD_OVRLP_OP_REPLACE D 20 2 SE_GRD_OVRLP_OP_REPLACE In intersection A & B, B data overrides A. In intersection A & C, C data overrides A. In intersection A & D, D data overrides A. In intersection A & C & D, D data overrides others. B should not intersect either C or D as this scheme will not provide ambiguity resolution. 2. A seamount is modeled as a grid M of elevation offsets above the underlying bathymetry in grids A and B. The <Grid Overlap> scheme is: <Property Grid> overlay_group priority operation A 1 0 SE_GRD_OVRLP_OP_BASE B 1 1 SE_GRD_OVRLP_OP_MEAN M 1 999 SE_GRD_OVRLP_OP_ADD B 2 0 SE_GRD_OVRLP_OP_BASE M 2 999 SE_GRD_OVRLP_OP_ADD In intersection A & M and outside of B, add M offsets to A bathymetry values. In intersection B & M and outside of A, add M offsets to B bathymetry values. In intersection A & B, average A and B bathymetry values. In intersection A & B & M, first average A and B bathymetry values, and then add offsets from M to the average. FAQS: Q. Are there real datasets that require this capability? A. There are numerous numerical models in the atmosphere and ocean community that start by computing a coarse grid over a large area, then use this grid as boundary and initial conditions for calculating a more finely-sampled grid over a smaller area. In many cases, the process is repeated several times, producing a "nest" of grids that all cover the same area. It is also possible to implement variable-resolution grids in SEDRIS by constructing a base grid covering a large region at a coarse sample spacing suitable for describing "ambient" conditions, and then to inset finer grids at locations with detailed features of interest. Q. When are <Grid Overlap> instances required, and when are they optional? A. A <Grid Overlap> is required whenever multiple grids contain values for the same <Table Property Description> at the same location within the simulated environment. If their absence will not cause ambiguity in the transmittal, <Grid Overlap> instances are not needed. If the <Property Grids> are explicitly disjoint due to some higher organizing structure, such as mutually exclusive branches of an <Aggregate Geometry>, there is no ambiguity and a <Grid Overlap> is not required. If grids covering the same location have no common <Table Property Description> contents, they do not create ambiguity and do not need a <Grid Overlap>. Q. Can a <Property Grid> have more than one <Grid Overlap> instance? A. Yes. A base <Property Grid> could have disjoint overlaps with several different "insets". Although it is usually possible to choose priority levels within a single group to resolve the ambiguities, use of multiple groups may make the situation clearer and easier for the consumer. There are also less common situations of multiple overlaps that can't be resolved using a single group. Q. What happens when cells of overlapping grids are not spatially aligned with each other? A. The operation rules described in the definition apply at a single point location, so alignment of cells is not strictly required. However, it is likely that combining values from misaligned cells will not produce a sensible value. As basic guidance, preparers of transmittals should avoid this situation when possible, since it is confusing to consumers. Grids should be resampled before preparing the transmittal so as to achieve alignment whenever possible. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Component of (two-way) one Property Grid instance Field Elements: SE_Short_Integer_Positive overlay_group; /* * The overlay_group field specifies the overlay group within which * the resolution process is to occur. */ SE_Short_Integer_Unsigned priority; /* * The priority field specifies a priority that is meaningful * within the specified overlay_group. */ SE_Grid_Overlap_Operator operation; /* * The operation field specifies the operation to be performed on * the data during the resolution process. */ ------------------------------------------------------------------------------- Class Name: HAEC 3D Location Definition: An instance of this DRM class specifies a coordinate within the Heliospheric Aries Ecliptic (HAEC) 3D SRF. See [I18026] for a complete definition. Primary Page in DRM Diagram: 15 Example: None. FAQS: None. Superclass: Location 3D Constraints: Publishable Object Environment Root Spatial Reference Frame Image Anchor Spatial Reference Frame Model Spatial Reference Frame Component of (two-way) (inherited) zero or more Arc instances zero or more Camera Point instances zero or more Directional Light Behaviour instances zero or one Distance LOD Data instance zero or more Ellipse instances zero or more Feature Edge instances zero or more Feature Face instances zero or one Feature Node instance zero or more Image Anchor instances zero or more Label instances zero or more Perimeter Data instances zero or more Point instances zero or more Property Grid Hook Point instances zero or one Reference Origin instance zero or more Reference Vector instances zero or more Spatial Extent instances zero or more Spatial Index Related Feature Topology instances zero or more Spatial Index Related Features instances zero or more Spatial Index Related Geometry instances zero or more Spatial Index Related Geometry Topology instances zero or more Tack Point instances zero or more Vertex instances zero or more World 3x3 instances zero or more World Transformation instances zero or one Attachment Point instance zero or more Base Positional Light instances zero or one Contact Point instance zero or more Geometric Centre instances zero or more Separating Plane instances zero or more Sound Instance instances zero or more Stamp Behaviour instances zero or more Volume instances zero or more Volume Light Behaviour instances zero or more Volume LOD Data instances zero or more Volume Object instances Field Elements: SRM_Spherical_3D_Coordinate coordinate; /* * The coordinate field specifies the coordinate values. */ ------------------------------------------------------------------------------- Class Name: HEEC 3D Location Definition: An instance of this DRM class specifies a coordinate within the Heliospheric Earth Ecliptic (HEEC) 3D SRF. See [I18026] for a complete definition. Primary Page in DRM Diagram: 15 Example: None. FAQS: None. Superclass: Location 3D Constraints: Publishable Object Environment Root Spatial Reference Frame Image Anchor Spatial Reference Frame Model Spatial Reference Frame Component of (two-way) (inherited) zero or more Arc instances zero or more Camera Point instances zero or more Directional Light Behaviour instances zero or one Distance LOD Data instance zero or more Ellipse instances zero or more Feature Edge instances zero or more Feature Face instances zero or one Feature Node instance zero or more Image Anchor instances zero or more Label instances zero or more Perimeter Data instances zero or more Point instances zero or more Property Grid Hook Point instances zero or one Reference Origin instance zero or more Reference Vector instances zero or more Spatial Extent instances zero or more Spatial Index Related Feature Topology instances zero or more Spatial Index Related Features instances zero or more Spatial Index Related Geometry instances zero or more Spatial Index Related Geometry Topology instances zero or more Tack Point instances zero or more Vertex instances zero or more World 3x3 instances zero or more World Transformation instances zero or one Attachment Point instance zero or more Base Positional Light instances zero or one Contact Point instance zero or more Geometric Centre instances zero or more Separating Plane instances zero or more Sound Instance instances zero or more Stamp Behaviour instances zero or more Volume instances zero or more Volume Light Behaviour instances zero or more Volume LOD Data instances zero or more Volume Object instances Field Elements: SRM_Spherical_3D_Coordinate coordinate; /* * The coordinate field specifies the coordinate values. */ ------------------------------------------------------------------------------- Class Name: HEEQ 3D Location Definition: An instance of this DRM class specifies a coordinate within the Heliospheric Earth Equatorial (HEEQ) 3D SRF. See [I18026] for a complete definition. Primary Page in DRM Diagram: 15 Example: None. FAQS: None. Superclass: Location 3D Constraints: Publishable Object Environment Root Spatial Reference Frame Image Anchor Spatial Reference Frame Model Spatial Reference Frame Component of (two-way) (inherited) zero or more Arc instances zero or more Camera Point instances zero or more Directional Light Behaviour instances zero or one Distance LOD Data instance zero or more Ellipse instances zero or more Feature Edge instances zero or more Feature Face instances zero or one Feature Node instance zero or more Image Anchor instances zero or more Label instances zero or more Perimeter Data instances zero or more Point instances zero or more Property Grid Hook Point instances zero or one Reference Origin instance zero or more Reference Vector instances zero or more Spatial Extent instances zero or more Spatial Index Related Feature Topology instances zero or more Spatial Index Related Features instances zero or more Spatial Index Related Geometry instances zero or more Spatial Index Related Geometry Topology instances zero or more Tack Point instances zero or more Vertex instances zero or more World 3x3 instances zero or more World Transformation instances zero or one Attachment Point instance zero or more Base Positional Light instances zero or one Contact Point instance zero or more Geometric Centre instances zero or more Separating Plane instances zero or more Sound Instance instances zero or more Stamp Behaviour instances zero or more Volume instances zero or more Volume Light Behaviour instances zero or more Volume LOD Data instances zero or more Volume Object instances Field Elements: SRM_Spherical_3D_Coordinate coordinate; /* * The coordinate field specifies the coordinate values. */ ------------------------------------------------------------------------------- Class Name: Hierarchy Data Definition: An instance of this DRM class specifies, for an alternate representation within an alternate-hierarchy-related aggregation, the reason why the particular alternate representation represented by the branch with which this <Hierarchy Data> instance is associated was provided. Primary Page in DRM Diagram: 4 Secondary Pages in DRM Diagram: 8 Example: See <Alternate Hierarchy Related Features>, <Alternate Hierarchy Related Geometry>. FAQS: See <Alternate_Hierarchy_Related Features>, <Alternate Hierarchy Related Geometry>. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Field Elements: SE_String alternate_representation_reason; /* * The alternate_representation_reason field states the reason that * the corresponding alternate representation was provided. */ ------------------------------------------------------------------------------- Class Name: Hierarchy Summary Item Definition: An instance of this DRM class represents an instance, or a number of identical instances, of a <Geometry Hierarchy> or <Feature Hierarchy> that exists within the given <Model> or <Environment Root> instance. <Hierarchy Summary Item> instances are combined together to form hierarchies that mirror those that they summarize. This summary is a compressed form of the actual hierarchy, as each <Hierarchy Summary Item> may represent a number of instances of the class indicated by its drm_class field. Consequently, the multiplicity field records how many of the given class a <Hierarchy Summary Item> actually represents. Note that all instances represented by one <Hierarchy Summary Item> shall have exactly the same hierarchical pattern beneath them, right down to where the hierarchy summary concludes. In essence, a <Hierarchy Summary Item> represents both the instance(s) that it describes, and the specific hierarchy beneath it (them); it may have an optional association to the <Geometry Hierarchy(ies)> or <Feature Hierarchy(ies)> that it summarizes. Each <Hierarchy Summary Item> instance (that is, each object type) can optionally have a list of <EDCS Use Summary Item> instances giving the classifications that are attached to those instances in the transmittal being summarized. The Hierarchy Summary does not have to be a total representation of the entire transmittal hierarchy and can be limited to a useful high level summary. If the producer of the transmittal deems it of potential use to consumers, the branches of the Hierarchy Summary can terminate with a list of <DRM Class Summary Item> instances representing the objects beneath that point in the hierarchy. Primary Page in DRM Diagram: 20 Secondary Pages in DRM Diagram: 1 2 3 8 Example: 1. Consider an <Environment Root> instance for which the geometry is to be summarized. <Environment Root> <> | | <LOD Related Geometry> <> | -------------------------------------------------------- | | | <Union Of <Union Of <Union Of Primitive Geometry> Primitive Geometry> Geometry Hierarchy> <> <> <> | | | ------------ ---------- ------------------------------ | | | | | <Polygon> ... <Polygon> ... <Classification <Union Of <Union Of Data> Primitive Primitive Geometry> Geometry> <> <> | | ---------- ---------- | | <Polygon> ... <Polygon> ... The geometry portion of the above <Environment Root> can therefore summarized as follows. Note that this is the same <Environment Root> instance as shown above, but for readability only the <Hierarchy Summary Item> portion of its instance diagram is shown here. <Environment Root> <> | <Hierarchy Summary Item> drm_class = SE_DRM_CLS_LOD_RELATED_GEOMETRY multiplicity_meaning = SE_HS_MLTPCTY_EXACT multiplicity = 1 <> | ---------------------------------------------- | | <Hierarchy Summary Item> <Hierarchy Summary Item> SE_DRM_CLS_UNION_OF_PRIMITIVE_GEOMETRY SE_DRM_CLS_UNION_OF_GEOMETRY_HIERARCHY SE_HS_MLTPCTY_EXACT SE_HS_MLTPCTY_EXACT 2 1 <> <> | | <DRM Class Summary Item> | SE_DRM_CLS_POLYGON | | | ---------------------------------------------------------- | | | <EDCS Use Summary Item> <DRM Class Summary Item> <DRM Class Summary Item> SE_DRM_CLS_POLYGON SE_DRM_CLS_VERTEX The <Hierarchy Summary Item> tree, rooted at the <Environment Root>, parallels the structure of the corresponding geometry. In this instance, the data provider has elected not to provide a detailed summary of the <Union Of Geometry Hierarchy>'s structure. The list of <DRM Class Summary Item> components merely identify classes that are somewhere below the <Union Of Geometry Hierarchy>, rather than the patterns in which they appear. The <EDCS Use Summary Item> components summarize patterns of ECCs, possibly used together with EACs, in the context being summarized. If the data provider wished to summarize the hierarchy of the <Union Of Geometry Hierarchy> in detail, its <Hierarchy Summary Item> could be provided with appropriate <Hierarchy Summary Item> components as desired, until the summary reached the level of <Primitive Geometry> and the hierarchy summary came to an end. For examples of summaries of <Primitive Geometry> patterns, see <Primitive Summary Item>. FAQS: Q. If the intent is for a useful high level summary, why not just have the consumer perform a shallow breadth-first search? A. The consumer could indeed compute the information, since all that this provides is a summary of what's in the transmittal. The reason for providing the information is to indicate that users don't have to be exhaustive if they don't think it's appropriate / required / necessary, or a good use of processing time, etc. Even just providing a top level summary, allows producers to summarize. They don't have to be complete in a legalistic way, and can therefore use this mechanism to summarize the major hierarchical structuring, perhaps leaving out less significant deviations from that predominant pattern. These would turn up in a search and actually confuse the issue. If you like, this mechanism allows a producer to sketch out the forest without missing it for the trees. Q. Why can <Environment Root> and <Model> only have 0 - 2 <Hierarchy Summary Item> components? A. See <<Hierarchy Summary Constraints>>. Superclass: Base Summary Item Constraints: Publishable Object Hierarchy Summary Constraints Non Crossing Associations Non Overlapping DRM Class Summary Items Associated to (one-way) zero or more Feature Hierarchy instances zero or more Geometry Hierarchy instances Composed of (two-way) zero or more DRM Class Summary Item instances zero or more Hierarchy Summary Item instances Composed of (two-way metadata) (inherited) zero or more EDCS Use Summary Item instances Component of (two-way) zero or one Environment Root instance zero or more Hierarchy Summary Item instances zero or one Model instance Inherited Field Elements: SE_DRM_Class drm_class; /* * The drm_class field indicates the DRM class of the object(s) * represented by the given <Base Summary Item> instance. */ Field Elements: SE_HS_Multiplicity_Code multiplicity_meaning; /* * The multiplicity_meaning field specifies the meaning of the * multiplicity field value for the given <Hierarchy Summary Item> * instance. */ SE_Integer_Unsigned multiplicity; /* * The multiplicity field specifies the number of identical * instances represented, or the order of magnitude of that * number, for the given <Hierarchy Summary Item> instance. * If the multiplicity is unknown, this field's value should * be set to zero. */ ------------------------------------------------------------------------------- Class Name: HSV Colour Definition: An instance of this DRM class specifies the actual Hue, Saturation, and Value data values for a colour defined within the HSV colour model. Primary Page in DRM Diagram: 14 Example: 1. A <HSV Colour> for pure black (Value = 0.0, Hue and Saturation values don't matter) 2. A <HSV Colour> for a bright red (Hue = 0.0, Saturation = 1.0, Value = 1.0) FAQS: Q. I use RGB, not HSV. How do I get RGB from an HSV transmittal? A. This is very easy to do. The mathematical transformation is a bit involved, but the SEDRIS API will do it for you, if you ask nicely. After opening the transmittal, before you retrieve any <Colour Data>, (or, if you want, even before you open the transmittal) call the SE_SetColourModel() function, like so: "SE_SetColourModel(SE_CLR_MDL_RGB);", and for the rest of the execution of that program, you will never get back an <HSV Colour> instance. Each <Colour Data> instance you retrieve from that point on will be an <RGB Colour> instance. Superclass: Colour Data Constraints: Publishable Object Composed of (two-way) zero or one HSV Colour Control Link instance Component of (two-way) (inherited) zero or more Ambient Colour instances zero or more Diffuse Colour instances zero or more Emissive Colour instances zero or more Specular Colour instances Field Elements: SE_HSV_Data hsv_data; /* * The hsv_data field specifies the HSV colour coordinate. */ ------------------------------------------------------------------------------- Class Name: HSV Colour Control Link Definition: An instance of this DRM class specifies a specialized <Control Link> instance used to provide the connection between an ordered aggregation of <Expression> instances and the target fields of one or more <HSV Colour> instances. Primary Page in DRM Diagram: 17 Secondary Pages in DRM Diagram: 14 Example: See the example for <CMY Colour Control Link>, which is analogous to how this class is used. FAQS: None. Superclass: Control Link Constraints: Publishable Object Composed of (two-way) (inherited) one or more {ordered} Expression instances Component of (two-way) one or more HSV Colour instances Inherited Field Elements: SE_String description; /* * The description field specifies a text description of the given * <Control Link> instance's purpose. */ Field Elements: SE_Integer_Unsigned hue_expr_index; /* * The value of the hue_expr_index field specifies * which <Expression> component, if any, controls the * hsv_data.hue field value of the affected * <HSV Colour> instances. If the value is zero, the * hsv_data.hue field of those instances is not controlled; * otherwise, the value is a 1-based index into the ordered * aggregation of <Expression> instances. */ SE_Integer_Unsigned saturation_expr_index; /* * The value of the saturation_expr_index field specifies * which <Expression> component, if any, controls the * hsv_data.saturation field value of the affected * <HSV Colour> instances. If the value is zero, the * hsv_data.saturation field of those instances is not controlled; * otherwise, the value is a 1-based index into the ordered * aggregation of <Expression> instances. */ SE_Integer_Unsigned value_expr_index; /* * The value of the value_expr_index field specifies * which <Expression> component, if any, controls the * hsv_data.value field value of the affected * <HSV Colour> instances. If the value is zero, the * hsv_data.value field of those instances is not controlled; * otherwise, the value is a 1-based index into the ordered * aggregation of <Expression> instances. */ ------------------------------------------------------------------------------- Abstract Class Name: Icon Definition: An instance of a concrete class derived from this DRM class is either a <Symbol> or <Text> instance intended for display on a planimetric display. Primary Page in DRM Diagram: 10 Secondary Pages in DRM Diagram: 23 Example: See individual subclasses for examples. FAQS: None. Superclass: SEDRIS Abstract Base Subclasses: Symbol Text Constraints: Publishable Object Component of (two-way) zero or more Label instances ------------------------------------------------------------------------------- Class Name: Image Definition: An instance of this DRM class specifies one or more MIP levels of texels, and can have 3 dimensions. Primary Page in DRM Diagram: 22 Secondary Pages in DRM Diagram: 10 18 Example: 1. A brick <Image> that is repeated over the surface of a <Polygon> to represent a brick wall. 2. An <Image> of a tree that when applied to a <Polygon> and combined with <Translucency> creates a flat version of a tree. 3. The <Image> mapped to the surface of a Dismounted Infantryman icon. 4. The sequence of <Image>(s) mapped to a <Polygon> to represent a television. 5. Consider an <Image> instance that has 3 <Property Table Reference> components: - one to a <Property Table> for Infrared properties, - one to a <Property Table> for Night Vision Goggles properties, - and the third to a <Property Table> for Surface Material Category properties. NOTE: There is no restriction on the number of possible <Property Table Reference> components. Image ------------------------------------ | | | PT Ref PT Ref PT Ref (specifies Axis) (specifies Axis) (specifies Axis) | | | (Infrared table) (NVG Table) (SMC Table) 1 xx xx yy 2 xx xx yy 3 xx xx yy 4 xx xx wood 5 xx xx yy 6 xx xx concrete 7 xx xx glass 8 xx xx yy a. Consider the case of 1 material. A given texel will contain a single integer, which is used in place of the index_on_axis field for all the <Property Table Reference> components of the <Image>. b. Consider the case of 2 materials. A given texel will contain 3 integers, 2 of which are used in place of the index_on_axis field for all the <Property Table Reference> components of the <Image>, and a third integer, which specifies the percentage of the 2nd material. For a given texel, say the numbers are 7 6 50 ; then the material at that texel is something that's 50% glass and 50% concrete. c. Consider the case of 3 materials. A given texel will contain 5 integers, 3 of which are used in place of the index_on_axis field for all the <Property Table Reference> components of the <Image>, and 2 of which specify the percentages of material 2 and 3. For a given texel, say the numbers are 4 6 7 20 30; then the material at that texel is something that is 50% wood, 20% concrete, and 30% glass. FAQS: Q. Where can users go for further information about <Images> and texture mapping? A. See Part 4 Volume 8, Images and Colour Models Technical Guide, of the SEDRIS Documentation Set for detailed information on <Data Table> manipulation. Q. The <Image> class does not appear to have a field for storing the texels of an <Image> instance. Where are the texels, and how can a data provider get at them? A. The actual texels of an <Image> instance are hidden by the API implementation being used to provide the <Image>. See the SE_PutImageData() function in the level 0 write API. Q. The <Image> class does not appear to have a field for storing the texels of an <Image> instance. Where are the texels, and how can a data consumer get at them? A. The actual texels of an <Image> instance are hidden by the API implementation being used to provide the <Image>, so they are accessed via the SE_GetImageData() (in level 0) and SE_GetRearrangedImageData() (in level 1) Read API functions. Q. How do I use the bits_of_xxx, min_value_of_xxx, and max_value_of_xxx fields? A. See the comments for the individual image signatures in SE_Image_Signature for details on which values are present for which signature. The min/max fields are used to specify the minimum and maximum values a component may have on the producer's system, and do NOT relate to whatever values may actually be present in the transmitted through SEDRIS. EXAMPLES: 1. If the image components are floating point 32 bits, then a minimum value of -1.0 and a maximum value of 1.0 means that all values in an image on the producer's system shall be represented within the range [-1.0, 1.0]. 2. An image with unsigned integer components of 8 bits may specify its range to be [0, 99], indicating that even though the maximum value that can be specified with 8 bits is 255, the value 99 should be treated as the maximum value for this image. Q. What is the maximum size of an image that SEDRIS can transmit? A. There is no known size limitation for images in a SEDRIS transmittal. (Well, 1.8 x 10^19 texels by the depth of the texel.) However, there may be size limitations in either the media that is used in the transmission or in computer hardware that interprets the transmittal. To alleviate some of the problems associated with large images, SEDRIS has "hidden" the actual image data behind a function call that allows for the consumer to specify the size of the data that is to be handed off to the consumer. This function call is documented in P4V17 of the SEDRIS Documentation Set. Q. As a data provider, I have an image that I wish to transmit which does not correspond to any registered SE_Image_Signature in SEDRIS. What can I do? A. There are two possibilities. 1. Decompose your image into component images which *do* correspond to various registered image signatures, if possible. In addition to complex image signatures, individual image components are also supported as an SE_Image_Signature. After the decomposition, add a <Description> component to the resulting <Images> to convey to your consumers how the component images are to be reassembled into the complete image. 2. If one of the components of your image does not correspond to any registered SE_Image_Signature and/or if you have the time, submit a SEDRIS Change Request requesting that the desired signature be registered as a new addition to SE_Image_Signature. Q. Why doesn't SEDRIS support JPEG (and other compressed formats)? A. It is not currently deemed appropriate to directly support "lossy" imagery within the DRM. Q. What kind of image data ordering does SEDRIS support? A. Currently SEDRIS only supports texel (pixel) data ordering. Scan line (All the red values on the first scan line, then all the green values ...) and image plane ordering (all the values of red within the image, then all the values of green...) are not supported. Q. A <Geometry Representation>'s <Classification Data> component identifies it as a wall, but its <Image> via <Image Mapping Function> has <Classification Data> for railroad track. Which is it? A. The <Image> was created for use as a railroad track, but when it is creatively reused by a non-railroad <Geometry Representation>, the <Geometry Representation> classification overrides. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Associated by (one-way) zero or more Camera Point instances zero or more Image Mapping Function instances Composed of (two-way) zero or one Classification Data instance zero or one Image Anchor instance zero or one Lineage instance zero or one Presentation Domain instance zero or more Property Table Reference instances zero or one Spatial Extent instance Composed of (two-way metadata) zero or one Access instance zero or one Citation instance zero or more Cross Reference instances zero or one Description instance zero or one Time Constraints Data instance Component of (two-way) one Image Library instance Field Elements: SE_String name; /* * The name field specifies a meaningful short name. */ SE_Colour_Model colour_model; /* * The colour_model field specifies the colour model used * throughout the given <Image> instance. Only one colour * model is allowed per <Image> instance. */ SE_Short_Integer_Positive level_count; /* * The level_count field specifies the number of Levels of Detail * defined for the given <Image> instance (for mipmaps). If the * given instance is not a mipmapped image, only one level will * be defined (level_count == 1). * * Many end-user applications require that <Image> instances * having MIP levels specify both the horizontal and vertical * dimensions as a power of 2. However, some applications can * handle <Image> instances for which the horizontal and vertical * dimensions are a multiple of 2 rather than a power of 2. * For example, 96 texels in a direction is a multiple of 2 but not * a power of 2. Please note that SEDRIS places no restriction on * either the dimensional size of an <Image> instance, nor makes * any statement as to whether the use of MIPS information within * the <Image> instance will be valid on a given consumer's system. */ SE_Image_MIP_Extents mip_extents_array[]; /* * There are level_count entries in the mip_extents_array, each * entry of which defines the "size" (the number of horizontal, * vertical, and z texels) for a single MIP level of the given * <Image> instance. The first map shall contain the highest * level of detail; that is, mip_extents_array[0] corresponds * to the level containing the most texels. */ SE_Image_Signature image_signature; /* * The image_signature field specifies how texels are represented * within the given <Image> instance; see SE_Image_Signature for details. * * Note that for an <Image> instance with an image_signature of * SE_IMG_SIG_EDCS_CLASSIFICATION_CODE, the bit size is a constant * of sizeof(EDCS_Classification_Code). */ SE_Image_Scan_Direction scan_direction; /* * The scan_direction field specifies the origin and direction of * the horizontal and vertical components of the given <Image> * instance. */ SE_Image_Scan_Direction_Z scan_direction_z; /* * The scan_direction_z specifies the direction in which the given * <Image> instance's z components are ordered. */ SE_Image_Component_Type component_data_type; /* * The component_data_type field specifies the data type of the raw * image data. If signed or unsigned integer is specified, the maximum * size fields apply. If floating point is specified, the values range * from 0.0 to 1.0. */ SE_Boolean data_is_little_endian; /* * The data_is_little_endian field specifies the endianess * of the raw image data. */ SE_Boolean data_is_3D; /* * The data_is_3D field specifies whether the image data has * 3 dimensions. */ SE_Short_Integer_Unsigned bits_of_alpha; /* * If 0 is specified, the image data does not contain alpha information. */ SE_Short_Integer_Unsigned bits_of_luminance; /* * If 0 is specified, the image data does not contain luminance information. */ SE_Short_Integer_Unsigned bits_of_colour_coordinate_1; /* * If 0 is specified, the image data does not contain colour information * for this colour coordinate (R, C, H). */ SE_Short_Integer_Unsigned bits_of_colour_coordinate_2; /* * If 0 is specified, the image data does not contain colour information * for this colour coordinate (G, M, S). */ SE_Short_Integer_Unsigned bits_of_colour_coordinate_3; /* * If 0 is specified, the image data does not contain colour information * for this colour coordinate (B, Y, V). */ SE_Short_Integer_Unsigned bits_of_bump_map_height; /* * If 0 is specified, the image data does not contain bump_map_height * information. */ SE_Short_Integer_Unsigned bits_of_material_1; /* * If 0 is specified, the image data does not contain material 1 index * information. If non-0 is specified, then this is an index into the * <Property Table> instance(s) that are referenced from the given * <Image> instance. * * NOTE: With no material_2 or material_3 percentages, material_1 * is at 100%. */ SE_Short_Integer_Unsigned bits_of_material_2; /* * If the bits_of_material_2 field specifies non-zero for a given * <Image> instance X, then * - X has at least one <Property Table Reference> component, and * - the bits in the image data of X corresponding to material 2 * specify indices into the <Property Table> instance(s) referenced * by X's <Property Table Reference> component(s). * * However, if bits_of_material_2 = 0, the given <Image> instance's * texel data do not contain material 2 index information. */ SE_Short_Integer_Unsigned bits_of_material_3; /* * If the bits_of_material_3 field specifies non-zero for a given * <Image> instance X, then * - X has at least one <Property Table Reference> component, and * - the bits in the image data of X corresponding to material 3 * specify indices into the <Property Table> instance(s) referenced * by X's <Property Table Reference> component(s). * * However, if bits_of_material_3 = 0, the given <Image> instance's * texel data do not contain material 3 index information. */ SE_Short_Integer_Unsigned bits_of_material_2_percentage; /* * If required by the given <Image> instance's image_signature, * the bits_of_material_2_percentage field is used to specify * the percentage of material 2. * * NOTE: the percentage of material 1 is * (100% - (percentage of material 2)) */ SE_Short_Integer_Unsigned bits_of_material_3_percentage; /* * If required by the given <Image> instance's image_signature, * the bits_of_material_3_percentage field is used to specify * the percentage of material 3. * * NOTE: the percentage of material 1 is * (100% - (percentage of material 2) - percentage of material 3)) */ SE_Short_Integer_Unsigned bits_of_image_index; /* * If 0 is specified, the image data does not contain image index * information. */ SE_Short_Integer_Unsigned bits_of_bump_map_u; /* * If 0 is specified, the image data does not contain bump_map_u * information. */ SE_Short_Integer_Unsigned bits_of_bump_map_v; /* * If 0 is specified, the image data does not contain bump_map_v * information. */ SE_Float min_value_of_alpha; /* * The min_value_of_alpha field specifies the minimum value that * alpha can be within the image data; it is 0.0 if alpha is not used. */ SE_Float max_value_of_alpha; /* * The max_value_of_alpha field specifies the maximum value that * alpha can be within the image data; it is 0.0 if alpha is not used. */ SE_Float min_value_of_luminance; /* * The min_value_of_luminance field specifies the minimum value that * luminance can be within the image data; it is 0.0 if luminance is * not used. */ SE_Float max_value_of_luminance; /* * The max_value_of_luminance field specifies the maximum value that * luminance can be within the image data; it is 0.0 if luminance is * not used. */ SE_Float min_value_of_colour_coordinate_1; /* * The min_value_of_colour_coordinate_1 field specifies the minimum * value that colour_coordinate_1 can be within the image data; it * is 0.0 if colour_coordinate_1 is not used. */ SE_Float max_value_of_colour_coordinate_1; /* * The max_value_of_colour_coordinate_1 field specifies the maximum * value that colour_coordinate_1 can be within the image data; it * is 0.0 if colour_coordinate_1 is not used. */ SE_Float min_value_of_colour_coordinate_2; /* * The min_value_of_colour_coordinate_2 field specifies the minimum * value that colour_coordinate_2 can be within the image data; it * is 0.0 if colour_coordinate_2 is not used. */ SE_Float max_value_of_colour_coordinate_2; /* * The max_value_of_colour_coordinate_2 field specifies the maximum * value that colour_coordinate_2 can be within the image data; it * is 0.0 if colour_coordinate_2 is not used. */ SE_Float min_value_of_colour_coordinate_3; /* * The min_value_of_colour_coordinate_3 field specifies the minimum * value that colour_coordinate_3 can be within the image data; it * is 0.0 if colour_coordinate_3 is not used. */ SE_Float max_value_of_colour_coordinate_3; /* * The max_value_of_colour_coordinate_3 field specifies the maximum * value that colour_coordinate_3 can be within the image data; it * is 0.0 if colour_coordinate_3 is not used. */ SE_Float min_value_of_bump_map_height; /* * The min_value_of_bump_map_height field specifies the minimum * value that bump_map_height can be within the image data; it * is 0.0 if bump_map_height is not used. */ SE_Float max_value_of_bump_map_height; /* * The max_value_of_bump_map_height field specifies the maximum * value that bump_map_height can be within the image data; it * is 0.0 if bump_map_height is not used. */ SE_Float min_value_of_bump_map_u; /* * The min_value_of_bump_map_u field specifies the minimum * value that bump_map_u can be within the image data; it * is 0.0 if bump_map_u is not used. */ SE_Float max_value_of_bump_map_u; /* * The max_value_of_bump_map_u field specifies the maximum * value that bump_map_u can be within the image data; it * is 0.0 if bump_map_u is not used. */ SE_Float min_value_of_bump_map_v; /* * The min_value_of_bump_map_v field specifies the minimum * value that bump_map_v can be within the image data; it * is 0.0 if bump_map_v is not used. */ SE_Float max_value_of_bump_map_v; /* * The max_value_of_bump_map_v field specifies the maximum * value that bump_map_v can be within the image data; it * is 0.0 if bump_map_v is not used. */ ------------------------------------------------------------------------------- Class Name: Image Anchor Definition: An instance of this DRM class specifies where the given <Image> is located in the specified SRF. <Image Anchor> is used in 2 ways: - As a component of an <Image> in an <Image Library>. In this case, the <Image> is not tied to a particular <Feature Representation> or <Geometry Representation>, and the <Image Anchor>'s <Location> components merely specify the positions of the corners of the <Image> in the specified SRF. Please note that if 2 geo-referenced <Image> instances are to be placed exactly next to each other by means of <Image Anchor> components, the <Location> components of those <Image Anchor> instances would be exactly the same along the common edge. - As a component of an <Image Mapping Function> instance. In this case, the <Image Anchor> defines how the associated <Image> is to be applied to the object having the <Image Mapping Function> instance as a component, and the SRF parameters of the <Image Anchor> shall match those of the context in which the <Image Mapping Function> is being applied. <Image Anchor> instances are used to support spherical and cylindrical image projections for <Image Mapping Functions>. By specifying anchor points that are not in the same plane, non-orthogonal projection becomes possible. Note that when an image mapping is applied to many <Polygon> instances using a single <Image Mapping Function>, a "continuous" image should result when displayed. Primary Page in DRM Diagram: 22 Example: 1. A producer has a geo-specific "global" texture that has been derived from overhead photography and rectified. It might, for example, be used to "drape" over a terrain surface. This would typically be represented as an <Image> (in an <Image Library>) with an <Image Anchor> component. 2. If a producer has a geo-referenced <Image> data that is to be explicitly applied to one or more terrain <Polygon> instances, the mapping of the image data to the <Polygon> instances would be defined by an <Image Mapping Function> (component of each <Polygon>) that has an <Image Anchor> and an association to the appropriate <Image>. FAQS: Q. Is it necessary to define SRF parameters for every <Image> in an <Image Library>? A. No. An <Image> instance is not required to specify an <Image Anchor>, and in fact, an <Image> utilizes its optional relationship with <Image Anchor> only when the texture is geo-specific. Consequently, since SRF parameters are defined for an <Image> instance only if an <Image Anchor> is present as a component of that <Image>, only geo-specific textures require assignment of SRF parameters. Q. In a given <Image Library>, are all geo-specific <Image> instances required to specify the same SRF parameters? If so, why not store those parameters within the <Image Library> rather than in <Image Anchor> components for individual <Image> instances? A. Although all geo-specific textures in an <Image Library> may have the same parameters, this is *not* a requirement for data providers, nor can it be relied upon by consumers. Consequently, each geo-specific <Image> may specify an independent SRF. Furthermore, many data providers generate <Image> instances that are not geo-specific and thus do not require spatial reference frame parameters. Adding SRF parameters as a field of <Image Library> would require all data providers to specify SRFs for all <Image Library> instances, even those to which SRF parameters were not applicable. Q. Can the SRF parameters defined for a geo-specific <Image> differ from those specified for its native transmittal's <Environment Root>, and if so, why? A. A geo-specific <Image> is not required to specify the same SRF parameters as that of any of the <Environment Root> instances that may be present in its native transmittal. It is perfectly possible for a transmittal to contain multiple <Environment Root> instances, each with its own SRF, or to have an <Image Library> and no <Environment Root> instances whatsoever. Q. How can a data provider transmit an <Image> and its associated warping? A. <Image Anchor> instances only provide for a simple method of <Image> warping. It is assumed that for more complex forms of warping (i.e., "rubber sheeting", ortho-rectification) the <Image> will be warped by the data provider and transmitted in the final state. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Image Anchor Spatial Reference Frame Composed of (two-way) exactly 3 {ordered} Location instances Component of (two-way) zero or more Image instances zero or more Image Mapping Function instances Field Elements: SE_SRF_Info srf_info; /* * The srf_info field specifies the SRF within which the given * <Image Anchor> instance is defined. */ ------------------------------------------------------------------------------- Class Name: Image Library Definition: An instance of this DRM class specifies the complete list of unique <Image> instances stored within the native transmittal of that <Image Library> instance. Primary Page in DRM Diagram: 10 Secondary Pages in DRM Diagram: 1 22 Example: 1. Imagery intended to be texture-mapped to other objects in the transmittal. For instance, consider an <Image Library> containing an <Image> of a tree, and a <Model> of a tree, where the <Model>'s geometry consists of a single <Union Of Primitive Geometry> containing a single <Polygon> and having <Stamp Behaviour>. (In this example, <Stamp Behaviour> allows the <Polygon> to be rotated at run-time so that the texture-mapped side always faces the observer.) <Image Library> <Model Library> <> <> | | <Image> <Model> <> | <Geometry Model> <> | <Union Of Primitive Geometry> <> | ----------------------------- | | <Polygon> <Stamp Behaviour> <> | ----------- | ... | <Vertex> <Image Mapping Function> <> | ---------- | ... <Texture Coordinate> Each <Vertex> of the <Polygon> in this example has a <Texture Coordinate>, which is used, together with the <Image Mapping Function>, to locate the imagery on the <Polygon>. 2. Imagery applied to a large number of polygons at once, where the <Polygon> instances are grouped under some <Aggregate Geometry> with an <Image Mapping Function>. In this case, the <Image Mapping Function> determines the placement of the imagery within the currently scoped "world" SRF. The imagery is then applied to the <Polygon> instances after they have been located within the specified SRF. This method has two common uses. (1) First, the application of a geo-specific image to many polygons in a seamless image. (2) Second, the application of a single image to a large number of polygons within a <Model> (e.g. the image of an aircraft is "wall-papered" onto all the polygons within the <Model> of that aircraft). 3. Imagery can be transmitted that is not used by any <Image Mapping Function>. This imagery normally has anchor points (see <Image Anchor>). FAQS: Q. Can a SEDRIS transmittal contain <Image> instances that are not part of an <Image Library>? A. No. All <Image> instances referenced within a SEDRIS transmittal shall be part of an <Image Library>. Q. Is an <Image Library> permitted to contain <Image> instances that are not referenced through <Image Mapping Function> instances elsewhere in the transmittal? A. Imagery within an <Image Library> may or may not be referenced through <Image Mapping Function> instances. Superclass: Library Constraints: Publishable Object Composed of (two-way) one or more {ordered} Image instances Composed of (two-way metadata) (inherited) zero or one Access instance zero or one Citation instance zero or one Description instance Component of (two-way) one Transmittal Root instance ------------------------------------------------------------------------------- Class Name: Image Lookup Definition: An instance of this DRM class specifies a set of data representing the final displayed value of a texel. The value of a texel no longer represents the colour at a point on a display; instead, a texel value is interpreted as a reference into the lookup representing the final displayed value. In general: - The number of axes in a lookup equals the number of components within the referencing image signature. - The number of elements along an axis equals the maximum size of the component image data. The minimum / maximum field values are used to specify the minimum and maximum values the corresponding texel component may have. For example, if the lookup components are floating point 32 bits, then a minimum value of -1.0 and a maximum value of 1.0 means that all values in the referenced <Image> instance fall within the range [-1.0, 1.0]. In another example, a lookup with unsigned integer texel components of 8 bits may specify its range to be [0, 99], indicating that even though the maximum value that can be specified with 8 bits is 255, the value 99 should be treated as the maximum value for this lookup. Primary Page in DRM Diagram: 22 Example: 1. Given an <Image> of a regular grid of lines, by scaling the <Image>, it can be used to represent the concrete blocks of a parking lot, and by having an <Image Lookup> change the alpha of the "white" areas of the grid, the <Image> can be applied to a vertical <Polygon> in order to represent a chain link fence. FAQS: Q. How can a data provider associate a lookup of type "xyz" with a given image mapping? A. Only the lookup signature types specified are supported. A change to the SEDRIS DRM is required to support other types. Q. What is the purpose of the maximum size and minimum size fields, given the existence of the bits_of_xxx fields? A. The bits_of_xxx fields provide information as to the maximum and minimum *possible* values, whereas the maximum and minimum size field values specify the maximum and minimum values actually in use. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Component of (two-way) one or more Image Mapping Function instances Field Elements: SE_Image_Lookup_Signature lookup_signature; /* * The lookup_signature field specifies the number and type of lookup axes. */ SE_Image_Lookup_Type lookup_type; /* * The lookup_type field specifies how to convert a texel's data into * some specified lookup index or indices. */ SE_Colour_Model colour_model; /* * The colour_model field specifies the colour model used throughout * the lookup. Only one colour model is allowed per texture definition. */ SE_Boolean data_is_integer; /* * The data_is_integer field specifies the data type of the raw * lookup data. Either the raw data is integer and the data maximum * sizes are valid, or the raw lookup data is floating point and * the values are between 0 and 1. */ SE_Short_Integer_Unsigned bits_of_alpha; /* * If 0 is specified, the lookup data does not contain alpha * information. */ SE_Short_Integer_Unsigned bits_of_luminance; /* * If 0 is specified, the lookup data does not contain luminance * information. */ SE_Short_Integer_Unsigned bits_of_colour_coordinate_1; /* * If 0 is specified, the lookup data does not contain colour * information for this colour coordinate (R, C, H). */ SE_Short_Integer_Unsigned bits_of_colour_coordinate_2; /* * If 0 is specified, the lookup data does not contain colour * information for this colour coordinate (G, M, S). */ SE_Short_Integer_Unsigned bits_of_colour_coordinate_3; /* * If 0 is specified, the lookup data does not contain colour * information for this colour coordinate (B, Y, V). */ SE_Short_Integer_Unsigned bits_of_bump_map_height; /* * If 0 is specified, the lookup data does not contain bump_map_height * information. */ SE_Short_Integer_Unsigned bits_of_material_1; /* * If 0 is specified, the lookup data does not contain material 1 index * information; otherwise, this is an index into the <Property Table> * instance that is referenced from the given <Image> instance. */ SE_Short_Integer_Unsigned bits_of_material_2; /* * If 0 is specified, the lookup data does not contain material 2 index * information; otherwise, this is an index into the <Property Table> * instance that is referenced from the given <Image> instance. */ SE_Short_Integer_Unsigned bits_of_material_3; /* * If 0 is specified, the lookup data does not contain material 3 index * information; otherwise, the bits_of_material_3 field specifies an * index into the <Property Table> instance that is referenced from * the given <Image> instance. */ SE_Short_Integer_Unsigned bits_of_material_2_percentage; /* * If the <Image> instance being referenced by the given <Image Lookup> * instance contains material 2 information, the value of the * bits_of_material_2_percentage field is the percentage of material 2. */ SE_Short_Integer_Unsigned bits_of_material_3_percentage; /* * If the <Image> instance being referenced by the given <Image Lookup> * instance contains material 3 information, the value of the * bits_of_material_3_percentage field is the percentage of material 3. */ SE_Short_Integer_Unsigned bits_of_image_index; /* * If 0 is specified, the lookup data does not contain image index * information. */ SE_Short_Integer_Unsigned bits_of_bump_map_u; /* * If 0 is specified, the lookup data does not contain bump_map_u * information. */ SE_Short_Integer_Unsigned bits_of_bump_map_v; /* * If 0 specified, the lookup data does not contain bump_map_v * information. */ SE_Float min_value_of_alpha; /* * The min_value_of_alpha field specifies the minimum value that alpha * can be within the lookup data; it is 0.0 if not used. */ SE_Float max_value_of_alpha; /* * The max_value_of_alpha field specifies the maximum value that alpha * can be within the lookup data; it is 0.0 if not used. */ SE_Float min_value_of_luminance; /* * The min_value_of_luminance field specifies the minimum value that * luminance can be within the lookup data; it is 0.0 if not used. */ SE_Float max_value_of_luminance; /* * The max_value_of_luminance field specifies the maximum value that * luminance can be within the lookup data; it is 0.0 if not used. */ SE_Float min_value_of_colour_coordinate_1; /* * The min_value_of_colour_coordinate_1 field specifies the minimum * value that colour_coordinate_1 can be within the lookup data; it * is 0.0 if not used. */ SE_Float max_value_of_colour_coordinate_1; /* * The max_value_of_colour_coordinate_1 field specifies the maximum * value that colour_coordinate_1 can be within the lookup data; it * is 0.0 if not used. */ SE_Float min_value_of_colour_coordinate_2; /* * The min_value_of_colour_coordinate_2 field specifies the minimum * value that colour_coordinate_2 can be within the lookup data; it * is 0.0 if not used. */ SE_Float max_value_of_colour_coordinate_2; /* * The max_value_of_colour_coordinate_2 field specifies the maximum * value that colour_coordinate_2 can be within the lookup data; it * is 0.0 if not used. */ SE_Float min_value_of_colour_coordinate_3; /* * The min_value_of_colour_coordinate_3 field specifies the minimum * value that colour_coordinate_3 can be within the lookup data; it * is 0.0 if not used. */ SE_Float max_value_of_colour_coordinate_3; /* * The max_value_of_colour_coordinate_3 field specifies the maximum * value that colour_coordinate_3 can be within the lookup data; it * is 0.0 if not used. */ SE_Float min_value_of_bump_map_height; /* * The min_value_of_bump_map_height field specifiesthe minimum value * that bump_map_height can be within the lookup data; it is 0.0 if * not used. */ SE_Float max_value_of_bump_map_height; /* * The max_value_of_bump_map_height field specifies the maximum value * that bump_map_height can be within the lookup data; it is 0.0 if * not used. */ SE_Float min_value_of_bump_map_u; /* * The min_value_of_bump_map_u field specifies the minimum value * that bump_map_u can be within the lookup data; it is 0.0 if * not used. */ SE_Float max_value_of_bump_map_u; /* * The max_value_of_bump_map_u field specifies the maximum value * that bump_map_u can be within the lookup data; it is 0.0 if * not used. */ SE_Float min_value_of_bump_map_v; /* * The min_value_of_bump_map_v field specifies the minimum value * that bump_map_v can be within the lookup data; it is 0.0 if * not used. */ SE_Float max_value_of_bump_map_v; /* * The max_value_of_bump_map_v field specifies the maximum value * that bump_map_v can be within the lookup data; it is 0.0 if * not used. */ SE_Short_Integer_Positive axis_size; /* * The axis_size field specifies the number of elements along each * axis of the lookup. All axes shall be the same size and shall * be as large as any maximum value for any component within the * referencing <Image> instance. */ SE_Short_Integer_Positive axes_count; /* * The axes_count specifies the number of axes within the lookup, * and shall coincide with the lookup_signature of the given * <Image Lookup> instance. */ ------------------------------------------------------------------------------- Class Name: Image Mapping Function Definition: An instance of this DRM class specifies how the given <Image> is to be mapped onto a given textured object, including the mapping method, the projection, and how <Texture Coordinate> instances (if present) are to be treated if they fall outside the image space bounded by (0, 0), (1, 1). Primary Page in DRM Diagram: 22 Secondary Pages in DRM Diagram: 4 5 6 8 19 Example: 1. An <Image> is mapped to a <Polygon>. The <Polygon> has <Texture Coordinate> instances at three or more of its <Vertex> components, the <Image> is mapped to the <Polygon> instance using the <Texture Coordinate> instances. Each <Texture Coordinate> instance represents the location within the <Image> instance that lies on top of the <Vertex> instance corresponding to the given <Texture Coordinate> instance. 2. Consider a <Polygon> with two <Image> instances mapped to it. One <Image> could be the <Image> displayed for most cases. The second <Image>, if image_detail_mapping is SE_TRUE, would then be the imagery that is added to the <Polygon> when the eyepoint is so close to the <Polygon> that the main <Image> texels are no longer useful for texturing the <Polygon>. FAQS: Q. What is the order of precedence for mapping an <Image> to a geometric object, such as a <Polygon>? A. The <Texture Coordinate> instances on the attribute geometry always have the highest precedence. Next, if the attribute geometry has <Tack Point> instances, three conditions could occur. 1) If there is only one <Tack Point>, the <Tack Point> is used to locate the imagery, and the scaling and rotation information from the <Image Mapping Function> is used. 2) If two <Tack Point> instances are defined, the location and rotation of the imagery is taken from the <Tack Point> instances, but the scaling information is derived from the <Image Mapping Function>. 3) If there are three or more <Tack Point> instances, the position, rotation information is derived from the first three <Tack Point> components. Since <Tack Point> components are unordered, the complete set of supplied <Tack Point> components shall define an orthogonal image projection. This is to insure that no matter which three <Tack Point> components are used, the same projection is derived for the imagery. If the <Polygon> does not have <Texture Coordinate> or <Tack Point> components, then any <Image Anchor> components of the <Image Mapping Function> define the location of the image on the attribute geometry. If none of the previous conditions are met, then the <Image Anchor>s in the <Image> are used. If there are no <Texture Coordinate>s, <Tack Point>s, no <Image Anchor>s in the <Image Mapping Function> and no anchor points in the <Image>, then the image mapping is undefined. It should be noted that the final two cases can be used to create non-orthogonal projections. Q. How can I create a non-orthogonal projection of texture onto a textured object, e.g. a <Polygon>? A. Since all texture mappings that are a result of texture coordinate mapping at the polygon level are defined to be orthogonal projections, a non-orthogonal projection cannot be created with <Texture Coordinate>. instances. To create a non-orthogonal projection, the <Image Anchor> points shall be used. These points are defined in the currently scoped "world" SRF, and therefore are not required to be in the plane of the <Polygon> instance. There is no method to create a non-orthogonal projection in the local SRF of the <Model>. Q. As a data provider, I have a texture map that is applied to a textured object using a spherical projection. How do I store the centre and radius of projection in the <Image Mapping Function>? A. Rather than using <Texture Coordinate> instances to tie the <Image Mapping Function> instance to the textured object, use an <Image Anchor> instance. For a spherical projection, the <Image Anchor> instance's <Location> components are interpreted as follows: 1) origin (the centre of the sphere) 2) direction (point on the north pole of the sphere) 3) alignment (point at the equator of the sphere) Q. Given an <Image> that is to be applied to a given object using a cylindrical projection, how can an <Image Mapping Function> be used to store the centre of projection? A. The <Image Mapping Function> for this case specifies an <Image Anchor>, while the object to be textured does not specify <Texture Coordinate> instances. For details of how the <Image Anchor> specifies the cylindrical projection, see <Image Anchor>. Q. When <Image Anchor> instances are used, how are the rotation and scale of the image mapping represented? A. The rotation and scale of the image mapping can be derived from the <Location> instances representing the 3 corners of the <Image> instance, i.e., the <Location> components of the <Image Anchor> instance. Q. When blending, how is a blend (luminance) value interpreted? A. 1.0 = 100% Primary colour, No Blend contribution 0.0 = no Primary contribution, %100 Blend Colour Q. Does an <Image Mapping Function> apply to both sides of a <Polygon>, or only the front side? What if a data provider wants to represent a wall with brick texture on one side and wallpaper texture on the other? A. An <Image Mapping Function> instance applies only to the front side of a <Primitive Geometry>. In the wall example, 2 <Polygon> instances would be needed, one with brick texture on its front side, facing the outside of the building, and the other with wallpaper, facing the inside of the building. Any other representation would be lost in a rendering system that used back-face culling. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Image Anchor Spatial Reference Frame Image Mapping Functions and Texture Coordinates Associated to (one-way) one Image instance Composed of (two-way) zero or one Image Anchor instance zero or more Image Lookup instances zero or one Presentation Domain instance Component of (two-way) zero or more Aggregate Feature instances zero or more Aggregate Geometry instances zero or more Data Table instances zero or more Primitive Feature instances zero or more Primitive Geometry instances zero or more Property Set instances Field Elements: SE_Image_Mapping_Method image_mapping_method; /* * The image_mapping_method field specifies how to combine the * referenced texture map with any <Colour> instances on the textured * object. */ SE_Image_Wrap image_wrap_s; /* * The image_wrap_s field specifies whether to clamp or repeat * the given <Image> instance in s. */ SE_Image_Wrap image_wrap_t; /* * The image_wrap_t field specifies whether to clamp or repeat * the given <Image> instance in t. */ SE_Image_Projection_Type image_projection_type; /* * The image_projection_type field specifies the type of projection * to be used when applying the given <Image> instance to textured * objects. * * 1) If planar projection is specified, the following cases may apply: * - The object may have <Texture Coordinate> or <Tack Point> * instances, in which case the * <<Image Mapping Functions and Texture Coordinates>> * constraint will apply. * * - The <Image Mapping Function> instance may have an * <Image Anchor> instance. * * - The <Image> instance may have an <Image Anchor> instance. * * 2) If cylindrical or spherical projection is specified, the object * shall not have <Texture Coordinate> or <Tack Point> instances. * Instead, either the <Image Mapping Function> instance or its * <Image> instance shall have an <Image Anchor> instance. */ SE_Long_Float intensity_level; /* * The intensity_level field specifies the percent contribution of the * given <Image Mapping Function> instance to the total effect on the * textured object. For an <Image> instance with a colour coordinate * component specified by its signature, multiply first, second, and * third colour coordinate values within the <Image> instance's texels * by this value. */ SE_Long_Float gain; /* * The value of the gain field is to be added to each colour data * value from the texel data of the given <Image> instance to obtain * the displayed image. */ SE_Boolean image_detail_mapping; /* * The image_detail_mapping field specifies whether the given * <Image Mapping Function> instance is used to describe mapping * of a "detail" image on the textured object. */ ------------------------------------------------------------------------------- Class Name: In Out Definition: An instance of this DRM class specifies whether a <Source> instance that is associated with a <Process Step> is an input to the <Process Step> or an output generated by the <Process Step>. Primary Page in DRM Diagram: 20 Example: 1. Indicates that a particular DTED cell (represented by a <Source> instance) is an input to a terrain surface generation process (represented by a <Process Step> instance). 2. Indicates that an <Environment Root> instance (represented by a <Source> instance) is the output of a high-level environmental database generation process (represented by a <Process Step> instance). FAQS: Q. What is the purpose of this class? A. This class provides a mechanism by which <Sources> can be associated with <processes> to describe the overall creation of a transmittal. A logical network of <Process Step>s can be defined by linking the <Process Step> that generates a particular <Source> to all of the <Process Step>s that consume that <Source>. For each associated <Source>, <Process Step> pair, the <In Out> instance identifies whether the <Source> is an input or an output of the <Process Step>. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Field Elements: SE_Boolean input; /* * If the value of the input field is SE_TRUE, the given <Source> * instance is an input to the <Process Step> instance; otherwise, * the <Source> instance is an output from the <Process Step> instance. */ ------------------------------------------------------------------------------- Class Name: Index LOD Data Definition: An instance of this DRM class specifies a level of detail described in terms of an index value indicating the relative level of detail of the associated data. Primary Page in DRM Diagram: 9 Example: 1. Consider an item represented by an instance of <LOD Related Geometry>, for which ten versions of the item are provided at varying levels of detail. Each version is represented by a branch of the <LOD Related Geometry> instance for which the link object is an instance of <Index LOD Data>. The index values of the <Index LOD Data> instances are 1 through 10, where number 1 corresponds to the most detailed version, and number 10 is the least detailed version. FAQS: None. Superclass: Base LOD Data Constraints: Publishable Object LOD Related Organizing Principle Component of (two-way) (inherited) zero or more Aggregate Feature instances zero or more Aggregate Geometry instances zero or more Property Grid Hook Point instances Field Elements: SE_Integer_Positive index; /* * The index field specifies the relative level of detail of the * associated data, where lower values indicate more detailed * representations and higher values indicate less detailed * representations. */ ------------------------------------------------------------------------------- Class Name: Infinite Light Definition: An instance of this DRM class is a <Light Source> that is considered to be located infinitely far away. It illuminates uniformly along a particular direction. Colour and control are inherited from <Light Source>. An <Infinite Light> has no bound of influence and so affects all components of any <Aggregate Geometry> that references it. Primary Page in DRM Diagram: 21 Example: 1. Consider an <Environment Root> instance that has a <Spatial Index Related Geometry> component, representing the terrain in its transmittal. The <Spatial Index Related Geometry> has an <Infinite Light Source> component, representing the sun. FAQS: None. Superclass: Light Source Constraints: Publishable Object Composed of (two-way) (inherited) one Ambient Colour instance one Diffuse Colour instance zero or one Light Source Control Link instance one Specular Colour instance Composed of (two-way) one Reference Vector instance Component of (two-way) (inherited) one or more Aggregate Geometry instances Inherited Field Elements: SE_Boolean apply_to_children; /* * For a <Light Source> instance (that is, an instance of one of the * concrete classes descended from the class) that is a component of * some <Aggregate Geometry>, apply_to_children provides a mechanism * for limiting the scope of the <Light Source>. If apply_to_children * is SE_TRUE, only <Primitive Geometry> in the component tree of those * <Aggregate Geometry> instances are affected by the given * <Light Source>. If apply_to_children is SE_FALSE, the <Light Source> * is not limited to the scope of those <Aggregate Geometry> instances * and thus applies globally. */ SE_Boolean override_positional_lights; /* * For a <Light Source> instance that is a component of some * <Aggregate Geometry>, override_positional_lights provides a * mechanism to indicate with a value of SE_TRUE that the effect of the * given <Light Source> overrides that of any <Base Positional Light> * instances that would have otherwise applied to that * <Aggregate Geometry> - for example, if the given <Light Source> is * so close to the affected <Geometry Representation> that the * <Base Positional Light> effects would be negligible. If * override_positional_lights = SE_FALSE, the effect of the * given <Light Source> is combined with that * of any <Base Positional Light> instances that are already in effect. */ SE_Boolean override_infinite_lights; /* * For a <Light Source> instance (that is, an instance of one of the * concrete classes descended from the class) that is a component of * some <Aggregate Geometry>, override_infinite_lights provides a * mechanism to indicate with a value of SE_TRUE that the effect of the * given <Light Source> overrides that of any <Infinite Light> * instances that would have otherwise applied to that * <Aggregate Geometry>. If override_infinite_lights = SE_FALSE, * the effect of the given <Light Source> is combined with that * of any <Infinite Light> instances that are already in effect. */ SE_Boolean active_light_value; /* * A value of SE_TRUE for the active_light_value field indicates * that the light is on, while a value of * SE_FALSE indicates that the light is off. For a <Light Source> * with a <Light Source Control Link> instance as a component, * this is the default state of the light. */ ------------------------------------------------------------------------------- Class Name: Inline Colour Definition: An instance of this DRM class is a <Colour> that is specified "inline", in the sense that it is completely specified as a component of the coloured object without referring to any <Colour Table>. Primary Page in DRM Diagram: 14 Example: 1. Consider a <Polygon> instance with both an <Image Mapping Function> and an <Inline Colour> component, where the <Inline Colour> instance's colour_mapping = { FRONT_IMAGE_BLEND }. This indicates that the colour is to be applied to the "front" of the <Polygon> instance, and to be combined with the texture mapping information provided by the <Image Mapping Function>. 2. Consider a <Polygon> instance with an <Inline Colour> component, where the <Inline Colour> instance has colour_mapping = { BACK_PRIMARY }. This colour is used for the back face of the <Polygon> instance. FAQS: Q. Why do <Colour Table> instances have <Primitive Colour> components rather than <Inline Colour> components? A. <Colour Table> instances used to be composed of <Inline Colour> instances, but problems arose since both <Colour Index> and <Inline Colour> instances can have <Translucency> components. When a <Colour Index> that has a <Translucency> component refers to an entry in a <Colour Table> instance, the interpretation is clearer if the <Colour Table> instance's entry cannot have any additional <Translucency> instances. Consequently, <Primitive Colour> exists so that 'just the colour' can be put into a <Colour Table> instance's entry. Superclass: Colour Constraints: Publishable Object Colour Mapping Restrictions Composed of (two-way) (inherited) zero or one Presentation Domain instance zero or one Translucency instance Composed of (two-way) one Primitive Colour instance Component of (two-way) (inherited) zero or more Aggregate Feature instances zero or more Aggregate Geometry instances zero or more Primitive Feature instances zero or more Primitive Geometry instances zero or more Property Set instances zero or more Vertex instances Inherited Field Elements: SE_Colour_Mapping colour_mapping; /* * The colour_mapping field specifies the set of SE_Colour_Mapping * tokens applicable to the given <Colour> instance. */ ------------------------------------------------------------------------------- Class Name: Interface Template Definition: Note that an instance of this DRM class is always a component of a <Model> or <Environment Root> instance. The scope of that <Model> / <Environment Root> is hereafter referred to as "the given scope" in this definition. An instance of this DRM class provides, for the given scope, a means of accessing all <Variable> instances within that scope, thus allowing manipulation of the affected <Control Link> instances' targets. These <Variable> instances are associated with the <Interface Template> in an ordered list; each is also aggregated by at least one <Control Link> instance in the given scope. - For a <Model> that is instanced by some object MI (either a <Feature Model Instance> or a <Geometry Model Instance>), values are specified for each of the <Variable> instances associated with the <Model>'s <Interface Template> as follows. Each such value is specified by an <Expression> that is aggregated by MI. The <Model Instance Template Index> instance lying between the <Expression> and MI specifies the particular <Variable> instance being set by specifying its index within the ordered list of the <Model>'s <Interface Template>. Note that the <Expression> may be a <Variable> in the instancing scope, or a <Function> of some kind, not just a <Literal>. - For an <Environment Root> instance, an <Interface Template> provides a means for 'environmental' <Variable> instances to be accessed by the user, such as a <Variable> for EAC_WIND_SPEED. Primary Page in DRM Diagram: 16 Secondary Pages in DRM Diagram: 1 2 Example: 1. Consider a <Model> representing a tank, which is made up of separate tank body, turret and cannon submodels, each instanced by the tank <Model> itself. The turret can be dynamically rotated and the cannon can be dynamically elevated. Both movements can be controlled separately. Both movements are rotations, so each of the turret and cannon submodels have <Rotation> instances at appropriate points in their hierarchies. Each of these <Rotation> instances aggregates a <Rotation Control Link>, which in turn aggregates a <Variable> that specifies the current rotation. The values supplied for these <Variable> instances shall be adjusted from outside the submodels that contain them. Consequently, the <Variable> in each submodel shall be associated with its submodel's <Interface Template>. However, the turret and cannon rotations shall be controlled from outside the entire tank <Model>. Therefore, it shall be possible to set rotation values via the tank <Model>'s own <Interface Template>, so the tank <Model> shall contain a turret-rotation <Variable> and a cannon-elevation <Variable>, and these <Variable> instances shall be associated with the tank <Model>'s own <Interface Template>. Each of the two <Variable> instances is also aggregated by the <Geometry Model Instance> that instances the submodel to which they relate. Finally, it is necessary to tie the <Variable> instances in the tank <Model> to the equivalent <Variable> instances in each of the submodels. This is done using the <Model Instance Template Index> link object for each tank <Variable>. The <Model Instance Template Index> link object associated with the tank <Model>'s turret-rotation <Variable> references the equivalent <Variable>'s entry in the turret <Model>'s <Interface Template>, and the <Model Instance Template Index> link object associated with the tank <Model>'s cannon-elevation <Variable> references the equivalent <Variable>'s entry in the cannon <Model>'s <Interface Template>. Consequently, the tank <Model>'s <Interface Template> allows the turret rotation and cannon elevation to be set from outside the <Model>. The values set in the tank <Model> will then themselves set values in the <Variable> instances within the turret and cannon submodels, thereby rotating the turret and elevating the cannon as required. 2. A building <Model> that may be instanced on terrain polygons that are at various different orientations. Each building wall shall meet the terrain, leaving no gaps. This means that the lengths of the building's walls shall be adjusted by different amounts in each instance to match the slope of the ground. The location of each <Vertex> of a <Polygon> can be adjusted by using an <LSR 3D Location Control Link> aggregated by the <LSR 3D Location> that specifies the <Vertex>'s location. Each <LSR 3D Location Control Link> would itself aggregate a <Variable>, which would specify the new location value. These <Variable>s shall be set separately for each instance to match the terrain upon which the instance is positioned. This calls for the <Variable>s to be set from outside the building <Model> so all of these <Variable>s in the building <Model> shall be associated with the <Model>'s <Interface Template>. When the building is instanced, via a <Geometry Model Instance> GMI, the <Variable> instances' values can be set for GMI using <Expression> instances aggregated by GMI. As the terrain on which GMI will stand is known and fixed, these <Expression> instances could be <Literal> instances. Each <Literal> instance is related to the <Variable> for which it is specifying a value by the associated <Model Instance Template Index>, which references the <Variable> via the building <Model>'s <Interface Template>. FAQS: None. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Non Crossing Associations Associated with (two-way) one or more {ordered} Variable instances Component of (two-way) zero or one Environment Root instance zero or one Model instance Field Elements: SE_String description; /* * The description field specifies a brief description. */ ------------------------------------------------------------------------------- Class Name: Interval Axis Definition: An instance of this DRM class is an <Axis> instance that specifies an interval for each axis value (tick mark). Primary Page in DRM Diagram: 6 Example: 1. Consider an <Interval Axis> instance that specifies wavelength bands in centimetres. Its field values are axis_type = EAC_WAVELENGTH axis_value_count = 3 axis_interval_value_array = { { SE_IVT_FLOAT, { EUC_METRE, ESC_CENTI, { EDCS_NVT_GE_LT_INTERVAL, { 2.4, 3.75 }} } }, { SE_IVT_FLOAT, { EUC_METRE, ESC_CENTI, { EDCS_NVT_GE_LT_INTERVAL, { 3.75, 7.5 }} } }, { SE_IVT_FLOAT, { EUC_METRE, ESC_CENTI, { EDCS_NVT_GE_LT_INTERVAL, { 7.5, 15.0 }} } } } FAQS: None. Superclass: Axis Constraints: Publishable Object Axis Type Restrictions Component of (two-way) (inherited) one or more Data Table instances Inherited Field Elements: EDCS_Attribute_Code axis_type; /* * The axis_type field specifies the property being described by the * given <Axis> instance. */ SE_Short_Integer_Positive axis_value_count; /* * The axis_value_count field specifies the number of "hash marks" * along the given <Axis> instance. */ Field Elements: SE_Interval_Value axis_interval_value_array[]; /* * The axis_interval_value_array field specifies the array of "tick mark" * values, each of which is an interval. While the intervals are not * required to be adjacent in a single <Interval Axis> instance, the * intervals may not overlap and they shall be in ascending order. * * If a boundary point can belong to only one interval (that is, there is * a gap on one side of the point), it is considered to lie in that * interval. If a boundary point is simultaneously the upper bound of one * interval and the lower bound of another, it belongs to the interval of * which it is the minimal value. */ EDCS_Unit_Code value_unit; /* * The value_unit field specifies the unit of measurement of the given * <Interval Axis> instance, which shall be compatible with the * requirements imposed by its axis_type value. * * If the specified axis_type does not require a unit of measurement * value_unit shall be set to EUC_UNITLESS. */ EDCS_Scale_Code value_scale; /* * The value_scale field specifies the scale applicable to value_unit. * * If the specified axis_type does not require a unit of measurement, * value_scale shall be set to ESC_UNI. */ ------------------------------------------------------------------------------- Class Name: Irregular Axis Definition: An instance of this DRM class is an <Axis> instance that does not use a constant spacing between hash marks. Primary Page in DRM Diagram: 6 Example: 1. Data taken at times 1, 2, 5, 10, 50, and 100 seconds after some start time would be collected on an <Irregular Axis> instance. 2. Radiosonde data, including temperature, humidity, wind speed, and wind direction, is generally reported as a function of pressure height. Data are reported only when there is a significant change in one of the dependent variables. Accordingly, the pressure heights are captured at unpredictable, irregular intervals. They are best captured in an <Irregular Axis> instance. FAQS: Q. If a few values are missing from a regular sequence, should the data provider use an <Irregular Axis> instance to represent the data? A. It depends how many values are missing. If only one or two values are missing from a long regular sequence, it may be preferable to use a <Regular Axis> instance and indicate the missing data points with an appropriate <Property Characteristic> instance. Q. A data provider's data was taken on an irregular set of points on a surface. Should <Irregular Axis> instances be used to indicate the 2-dimensional locations of these points? A. If the data were truly irregular, which is to say that there is only one point at each x-value and only one point at each y-value, do not use irregular x- and y-axes. Instead, use a single regular axis to give each point an index and make the x- and y-values dependent variables. On the other hand, if the points are not quite that irregular, but rather data were taken at each (or most) combination of x- and y-values, irregular axes may be appropriate. This would mean that the data really did form a grid. Superclass: Axis Constraints: Publishable Object Axis Type Restrictions Component of (two-way) (inherited) one or more Data Table instances Inherited Field Elements: EDCS_Attribute_Code axis_type; /* * The axis_type field specifies the property being described by the * given <Axis> instance. */ SE_Short_Integer_Positive axis_value_count; /* * The axis_value_count field specifies the number of "hash marks" * along the given <Axis> instance. */ Field Elements: SE_Single_Value axis_value_array[]; /* * The axis_value_array field specifies the "tick mark" values, which * shall be arranged in ascending order. */ EDCS_Unit_Code value_unit; /* * The value_unit field specifies the unit of measurement of the given * <Irregular Axis> instance, which shall be compatible with the * requirements imposed by its axis_type value. * * If the specified axis_type does not require a unit of measurement * value_unit shall be set to EUC_UNITLESS. */ EDCS_Scale_Code value_scale; /* * The value_scale field specifies the scale applicable to value_unit. * * If the specified axis_type does not require a unit of measurement, * value_scale shall be set to ESC_UNI. */ SE_Interpolation_Type interpolation_type; /* * The value of the interpolation_type field allows the data provider * to indicate how best to interpolate the data to points that are * between grid points on the axis represented by the given * <Irregular Axis> instance. Note that when a <Data Table> instance * has more than one <Irregular Axis> component, the order of the * interpolations follows the order of the <Irregular Axis> components. */ ------------------------------------------------------------------------------- Class Name: Keywords Definition: An instance of this DRM class specifies keywords, as well as their type and reference source, for the containing SEDRIS object. Primary Page in DRM Diagram: 20 Example: 1. Consider a <Model> representing an F18C aircraft, such that the <Model> contains a <Description> instance with a <Keywords> instance specified in U.S. English, in order to support keyword searches on the type of aircraft. The <Keywords> instance has the following structure: <Keywords> keyword_count = 1 keyword_array[0] = { SE_LOCALE_DEFAULT, 4, "F18C" } type = SE_KEYWORD_THEME 2. Consider a transmittal containing a terrain dataset representing roads and lakes located at Fort Hood, Texas. The source dataset has a [ISO 19115] metadata record containing keyword information for the entire transmittal. The following <Keywords> instances, defined in U.S. English, are attached to a <Description>, which is attached to the <Transmittal Root> of the transmittal to transmit this information as follows. <Keywords> keyword_count = 1 keyword_array[0] = { SE_LOCALE_DEFAULT, 9, "Fort Hood"} keyword_array[1] = { SE_LOCALE_DEFAULT, 5, "Texas" } type = SE_KEYWORD_PLACE | <> | <Citation> title = { SE_LOCALE_DEFAULT, 22, "MEL_Location_Thesaurus" } edition = (empty string) series_name = (empty string) issue_identification = (empty string) other_citation_details = (empty string) | <> | <Responsible Party> (for MEL thesauri) <Keywords> keyword_count = 2 keyword_array[0] = { SE_LOCALE_DEFAULT, 11, "Cartography"} keyword_array[1] = { SE_LOCALE_DEFAULT, 7, "Mapping" } type = SE_KEYWORD_THEME <> | <Citation> { SE_LOCALE_DEFAULT, 42, "MEL_Scientific-Engineering_Field_Thesaurus" } | <> | <Responsible Party> (for MEL thesauri, shared) FAQS: Q. What is the purpose of this class? A. This DRM class provides a mechanism for specifying ISO 19115-compliant keywords, which can be used to search a repository (such as MEL) for SEDRIS transmittals that address specified real-world objects, spatial locations, or time periods. This allows a potential user to identify and select those SEDRIS transmittals that meet their requirements, without having to actually obtain and examine the transmittals themselves. Q. Consider a data provider who has keywords to populate a <Keywords> instance, but is unable to determine which SE_Keyword_Type_Code should be used to classify a particular keyword. What procedure is suggested for such a data provider? A. If no more appropriate SE_Keyword_Type_Code can be determined, SE_KEYWORD_THEME is suggested. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Mandatory Metadata Composed of (two-way metadata) zero or one Citation instance Component of (two-way) one or more Description instances Field Elements: SE_Short_Integer_Positive keyword_count; /* * The keyword_count field specifies the number of entries in * keyword_array. */ SE_String keyword_array[]; /* * Each entry of the keyword_array field is a commonly used word * or a formalized word or phrase used to describe the * subject. */ SE_Keyword_Type_Code type; /* * The type field specifies the subject matter used to group * similar keywords in the given instance of <Keywords>. */ ------------------------------------------------------------------------------- Class Name: Label Definition: An instance of this DRM class specifies text or symbology that is tied to a location, and is used for identifying features on 2D displays or maps. Primary Page in DRM Diagram: 10 Secondary Pages in DRM Diagram: 8 Example: 1. Consider a <Point Feature> that represents a school. The name of the school should appear next to the location of the school on a map. The name is represented by a <Label>. FAQS: None. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Composed of (two-way) one Icon instance zero or one Location instance Component of (two-way) one Feature Representation instance ------------------------------------------------------------------------------- Class Name: LCC Augmented 3D Location Definition: An instance of this DRM class specifies a coordinate within the Augmented Lambert Conformal Conic (ALCC) 3D SRF. See [I18026] for a complete definition. Primary Page in DRM Diagram: 15 Example: 1. The Augmented Lambert Conformal Conic SRF is used mainly for mapping the North American Region. FAQS: Q. Where can users obtain further information on ALCC? A. See the SRM for additional details. Superclass: Location 3D Constraints: Publishable Object Environment Root Spatial Reference Frame Image Anchor Spatial Reference Frame Model Spatial Reference Frame Component of (two-way) (inherited) zero or more Arc instances zero or more Camera Point instances zero or more Directional Light Behaviour instances zero or one Distance LOD Data instance zero or more Ellipse instances zero or more Feature Edge instances zero or more Feature Face instances zero or one Feature Node instance zero or more Image Anchor instances zero or more Label instances zero or more Perimeter Data instances zero or more Point instances zero or more Property Grid Hook Point instances zero or one Reference Origin instance zero or more Reference Vector instances zero or more Spatial Extent instances zero or more Spatial Index Related Feature Topology instances zero or more Spatial Index Related Features instances zero or more Spatial Index Related Geometry instances zero or more Spatial Index Related Geometry Topology instances zero or more Tack Point instances zero or more Vertex instances zero or more World 3x3 instances zero or more World Transformation instances zero or one Attachment Point instance zero or more Base Positional Light instances zero or one Contact Point instance zero or more Geometric Centre instances zero or more Separating Plane instances zero or more Sound Instance instances zero or more Stamp Behaviour instances zero or more Volume instances zero or more Volume Light Behaviour instances zero or more Volume LOD Data instances zero or more Volume Object instances Field Elements: SRM_Map_Projection_3D_Coordinate coordinate; /* * The coordinate field specifies the coordinate values. */ ------------------------------------------------------------------------------- Class Name: LTSAS 3D Location Definition: An instance of this DRM class specifies a coordinate within the Local Tangent Space Azimuthal Spherical (LTSAS) 3D SRF. See [I18026] for a complete definition. Primary Page in DRM Diagram: 15 Example: None. FAQS: None. Superclass: Location 3D Constraints: Publishable Object Environment Root Spatial Reference Frame Image Anchor Spatial Reference Frame Model Spatial Reference Frame Component of (two-way) (inherited) zero or more Arc instances zero or more Camera Point instances zero or more Directional Light Behaviour instances zero or one Distance LOD Data instance zero or more Ellipse instances zero or more Feature Edge instances zero or more Feature Face instances zero or one Feature Node instance zero or more Image Anchor instances zero or more Label instances zero or more Perimeter Data instances zero or more Point instances zero or more Property Grid Hook Point instances zero or one Reference Origin instance zero or more Reference Vector instances zero or more Spatial Extent instances zero or more Spatial Index Related Feature Topology instances zero or more Spatial Index Related Features instances zero or more Spatial Index Related Geometry instances zero or more Spatial Index Related Geometry Topology instances zero or more Tack Point instances zero or more Vertex instances zero or more World 3x3 instances zero or more World Transformation instances zero or one Attachment Point instance zero or more Base Positional Light instances zero or one Contact Point instance zero or more Geometric Centre instances zero or more Separating Plane instances zero or more Sound Instance instances zero or more Stamp Behaviour instances zero or more Volume instances zero or more Volume Light Behaviour instances zero or more Volume LOD Data instances zero or more Volume Object instances Field Elements: SRM_LTSAS_3D_Coordinate coordinate; /* * The coordinate field specifies the coordinate values. */ ------------------------------------------------------------------------------- Class Name: LTSAS Surface Location Definition: An instance of this DRM class specifies a coordinate within the Local Tangent Space Azimuthal (LTSAS) Surface SRF. See [I18026] for a complete definition. Primary Page in DRM Diagram: 15 Example: None. FAQS: None. Superclass: Location Surface Constraints: Publishable Object Environment Root Spatial Reference Frame Image Anchor Spatial Reference Frame Model Spatial Reference Frame Component of (two-way) (inherited) zero or more Arc instances zero or more Camera Point instances zero or more Directional Light Behaviour instances zero or one Distance LOD Data instance zero or more Ellipse instances zero or more Feature Edge instances zero or more Feature Face instances zero or one Feature Node instance zero or more Image Anchor instances zero or more Label instances zero or more Perimeter Data instances zero or more Point instances zero or more Property Grid Hook Point instances zero or one Reference Origin instance zero or more Reference Vector instances zero or more Spatial Extent instances zero or more Spatial Index Related Feature Topology instances zero or more Spatial Index Related Features instances zero or more Spatial Index Related Geometry instances zero or more Spatial Index Related Geometry Topology instances zero or more Tack Point instances zero or more Vertex instances zero or more World 3x3 instances zero or more World Transformation instances Field Elements: SRM_LTSAS_Surface_Coordinate coordinate; /* * The coordinate field specifies the coordinate values. */ ------------------------------------------------------------------------------- Class Name: LCC Surface Location Definition: An instance of this DRM class specifies a coordinate within the Lambert Conformal Conic (LCC) 2D SRF. See [I18026] for a complete definition. Primary Page in DRM Diagram: 15 Example: 1. The Lambert Conformal Conic SRF is used mainly for mapping the North American Region. FAQS: None. Superclass: Location Surface Constraints: Publishable Object Environment Root Spatial Reference Frame Image Anchor Spatial Reference Frame Model Spatial Reference Frame Component of (two-way) (inherited) zero or more Arc instances zero or more Camera Point instances zero or more Directional Light Behaviour instances zero or one Distance LOD Data instance zero or more Ellipse instances zero or more Feature Edge instances zero or more Feature Face instances zero or one Feature Node instance zero or more Image Anchor instances zero or more Label instances zero or more Perimeter Data instances zero or more Point instances zero or more Property Grid Hook Point instances zero or one Reference Origin instance zero or more Reference Vector instances zero or more Spatial Extent instances zero or more Spatial Index Related Feature Topology instances zero or more Spatial Index Related Features instances zero or more Spatial Index Related Geometry instances zero or more Spatial Index Related Geometry Topology instances zero or more Tack Point instances zero or more Vertex instances zero or more World 3x3 instances zero or more World Transformation instances Field Elements: SRM_Map_Projection_Surface_Coordinate coordinate; /* * The coordinate field specifies the coordinate values. */ ------------------------------------------------------------------------------- Class Name: LTSC 3D Location Definition: An instance of this DRM class specifies a coordinate within the Local Tangent Space Cylindrical (LTSC) 3D SRF. See [I18026] for a complete definition. Primary Page in DRM Diagram: 15 Example: None. FAQS: None. Superclass: Location 3D Constraints: Publishable Object Environment Root Spatial Reference Frame Image Anchor Spatial Reference Frame Model Spatial Reference Frame Component of (two-way) (inherited) zero or more Arc instances zero or more Camera Point instances zero or more Directional Light Behaviour instances zero or one Distance LOD Data instance zero or more Ellipse instances zero or more Feature Edge instances zero or more Feature Face instances zero or one Feature Node instance zero or more Image Anchor instances zero or more Label instances zero or more Perimeter Data instances zero or more Point instances zero or more Property Grid Hook Point instances zero or one Reference Origin instance zero or more Reference Vector instances zero or more Spatial Extent instances zero or more Spatial Index Related Feature Topology instances zero or more Spatial Index Related Features instances zero or more Spatial Index Related Geometry instances zero or more Spatial Index Related Geometry Topology instances zero or more Tack Point instances zero or more Vertex instances zero or more World 3x3 instances zero or more World Transformation instances zero or one Attachment Point instance zero or more Base Positional Light instances zero or one Contact Point instance zero or more Geometric Centre instances zero or more Separating Plane instances zero or more Sound Instance instances zero or more Stamp Behaviour instances zero or more Volume instances zero or more Volume Light Behaviour instances zero or more Volume LOD Data instances zero or more Volume Object instances Field Elements: SRM_LTSC_3D_Coordinate coordinate; /* * The coordinate field specifies the coordinate values. */ ------------------------------------------------------------------------------- Class Name: LTSC Surface Location Definition: An instance of this DRM class specifies a coordinate within the Local Tangent Space Cylindrical (LTSC) Surface SRF. See [I18026] for a complete definition. Primary Page in DRM Diagram: 15 Example: None. FAQS: None. Superclass: Location Surface Constraints: Publishable Object Environment Root Spatial Reference Frame Image Anchor Spatial Reference Frame Model Spatial Reference Frame Component of (two-way) (inherited) zero or more Arc instances zero or more Camera Point instances zero or more Directional Light Behaviour instances zero or one Distance LOD Data instance zero or more Ellipse instances zero or more Feature Edge instances zero or more Feature Face instances zero or one Feature Node instance zero or more Image Anchor instances zero or more Label instances zero or more Perimeter Data instances zero or more Point instances zero or more Property Grid Hook Point instances zero or one Reference Origin instance zero or more Reference Vector instances zero or more Spatial Extent instances zero or more Spatial Index Related Feature Topology instances zero or more Spatial Index Related Features instances zero or more Spatial Index Related Geometry instances zero or more Spatial Index Related Geometry Topology instances zero or more Tack Point instances zero or more Vertex instances zero or more World 3x3 instances zero or more World Transformation instances Field Elements: SRM_LTSC_Surface_Coordinate coordinate; /* * The coordinate field specifies the coordinate values. */ ------------------------------------------------------------------------------- Class Name: LOD Related Features Definition: An instance of this DRM class specifies an aggregation of <Feature Hierarchy> instances in which each component <Feature Hierarchy> is an alternate representation of the same entity at a different level of detail. Each component <Feature Hierarchy> is a collection of <Feature Representation> instances with a different, possibly overlapping, <Base LOD Data> value, representing alternatives that should be used at different viewing ranges, map scales, spatial resolution, and so on. Primary Page in DRM Diagram: 8 Example: 1. A forested area could be represented at two levels of detail using a <LOD Related Features> instance, with two component <Union Of Features> having different scale ranges, each containing a single <Areal Feature>. The <Areal Feature> to be used at smaller scales would be simpler than the <Areal Feature> to be used at larger scales. 2. In the previous example, a third component <Union Of Features> could be added to be used at even larger scales, where the single <Areal Feature> is replaced by a large number of <Point Feature> instances representing individual trees. FAQS: None. Superclass: Aggregate Feature Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Crossing Associations Precedence of Property Set Index Non Cyclic Aggregations Colour Mapping Restrictions Image Mapping Functions and Texture Coordinates Distinct Link Objects LOD Related Organizing Principle Associated to (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or more Property Grid instances, each with a Base Association Data link object Associated by (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or more Property Grid instances, each with a Base Association Data link object zero or one Hierarchy Summary Item instance Composed of (two-way) (inherited) zero or one Classification Data instance zero or more Label instances zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or one Rendering Priority Level instance zero or one Reference Surface instance zero or more Sound Instance instances zero or more Base LOD Data instances zero or more Colour instances zero or more Feature Topology Hierarchy instances zero or more {ordered} Image Mapping Function instances zero or one Perimeter Data instance zero or one Presentation Domain instance zero or more Property Description instances zero or one Spatial Extent instance Composed of (two-way) one or more Feature Hierarchy instances, each with a Base LOD Data link object Composed of (two-way metadata) (inherited) zero or one Access instance zero or more Cross Reference instances zero or one Data Quality instance zero or one Description instance zero or one Time Constraints Data instance Component of (two-way) (inherited) zero or more Union Of Features instances zero or more Alternate Hierarchy Related Features instances, each with a Hierarchy Data link object zero or more Classification Related Features instances, each with a Classification Data link object zero or one Environment Root instance zero or one Feature Model instance zero or more LOD Related Features instances, each with a Base LOD Data link object zero or more Octant Related Features instances, each with a Octant Data link object zero or more Perimeter Related Features instances, each with a Perimeter Data link object zero or more Quadrant Related Features instances, each with a Quadrant Data link object zero or more Spatial Index Related Features instances, each with a Spatial Index Data link object zero or more State Related Features instances, each with a State Data link object zero or more Time Related Features instances, each with a Time Constraints Data link object Inherited Field Elements: SE_Boolean unique_descendants; /* * If the value of the unique_descendants field is SE_TRUE, each * descendant, that is, each <Feature Representation> instance that * exists in the component tree rooted at the given <Aggregate Feature>, * shall be unique, in the * sense that it shall appear in only one branch of this aggregation. * If unique_descendants is SE_FALSE, at least one * <Feature Representation> instance * appears in more than one branch of the aggregation. */ SE_Boolean strict_organizing_principle; /* * If the value of the strict_organizing_principle field is SE_TRUE, * each branch of this aggregation * strictly complies with the organizing principle for its * particular subclass. If this value is SE_FALSE, at least * one branch does not strictly comply with the given * organizing principle. See the organizing principle constraint * for each specific subclass for details. */ Field Elements: SE_LOD_Data_Type lod_data_type; /* * The lod_data_type field specifies the subclass of <Base LOD Data> of * each link object in the given organization. */ ------------------------------------------------------------------------------- Class Name: LOD Related Geometry Definition: An instance of this DRM class specifies an aggregation of <Geometry Hierarchy> instances in which each component <Geometry Hierarchy> is an alternate representation of the same entity at a different level of detail. Each component <Geometry Hierarchy> is a collection of <Geometry Representation> instances with a different, possibly overlapping, <Base LOD Data> value, representing alternatives that should be used at different viewing ranges, map scales, spatial resolution, and so on. Primary Page in DRM Diagram: 4 Example: 1. Consider a <Model> of a house, organized based on viewing ranges. If the viewer is farther away than 1000 metres, the house is not visible. From 500 metres to 1000 metres, the roof and walls are visible but not in great detail. From 0 metres to 500 metres, the windows and door become visible. Consequently, the <Model> is visible at two distance-related levels of detail: 0-500 metres, and 500-100 metres. <Model> "house" <> | <Geometry Model> <> | <LOD Related Geometry> <> | ------------------------------------------------ | | |- <Distance LOD Data> <Distance LOD Data> -| | (500.0, 1000.0) (0.0, 500.0) | | | | | <Union Of Geometry Hierarchy> <Union Of Geometry Hierarchy> <> (also expands into a set of GMIs) | -------------------------------- | | | | | <GMI> <GMI> <GMI> <GMI> <GMI> "roof" "wall" "wall" "wall" "wall" For the more detailed 0.0 - 500.0 metres, different "wall" <Model> instances are instanced for the walls containing the windows and doors; otherwise the structure of the two levels, for this example, is similar. 2. Three <Model> instances representing a given building are created, each with different <Polygon> counts. The most accurate representation is useful up to a viewing distance of 1 kilometre, the second from 1 kilometre to 2 kilometres, and the third for 2 kilometres to 5 kilometres. To indicate this, a fourth <Model> instance can be created as follows: <Model> <> | <Geometry Model> <> | <LOD Related Geometry> <> --------------------------------------------------- | | | |--<Distance LOD Data> |--<Distance LOD Data> |--<Distance LOD Data> | 0.0 - 1.0 | 1.0 - 2.0 | 2.0 - 5.0 | | | <GMI> <GMI> <GMI> FAQS: None. Superclass: Aggregate Geometry Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Cyclic Aggregations Precedence of Property Set Index Non Crossing Associations Colour Mapping Restrictions Distinct Geometric Centre Image Mapping Functions and Texture Coordinates Distinct Link Objects LOD Related Organizing Principle Associated to (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object Associated by (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or one Hierarchy Summary Item instance zero or more Reference Surface instances Composed of (two-way) (inherited) zero or one Classification Data instance zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or one Reference Surface instance zero or more Sound Instance instances zero or more Base LOD Data instances zero or one Bounding Volume instance zero or more Camera Point instances zero or more Collision Volume instances zero or more Colour instances zero or one Conformal Behaviour instance a bounded set of 0..3 Geometric Centre instances zero or more Geometry Topology Hierarchy instances zero or more {ordered} Image Mapping Function instances zero or one Light Rendering Properties instance zero or more Light Source instances zero or one LSR Transformation instance zero or one Overload Priority Index instance zero or one Perimeter Data instance zero or one Presentation Domain instance zero or more Property Description instances zero or one Rendering Priority Level instance zero or one Rendering Properties instance zero or one Spatial Extent instance zero or one Stamp Behaviour instance Composed of (two-way) one or more Geometry Hierarchy instances, each with a Base LOD Data link object Composed of (two-way metadata) (inherited) zero or one Time Constraints Data instance zero or one Access instance zero or more Cross Reference instances zero or one Data Quality instance zero or one Description instance Component of (two-way) (inherited) zero or more Alternate Hierarchy Related Geometry instances, each with a Hierarchy Data link object zero or more Animation Related Geometry instances zero or more Classification Related Geometry instances, each with a Classification Data link object zero or one Environment Root instance zero or one Geometry Model instance zero or more LOD Related Geometry instances, each with a Base LOD Data link object zero or more Octant Related Geometry instances, each with a Octant Data link object zero or more Perimeter Related Geometry instances, each with a Perimeter Data link object zero or more Quadrant Related Geometry instances, each with a Quadrant Data link object zero or more Separating Plane Relations instances, each with a Separating Plane Data link object zero or more Spatial Index Related Geometry instances, each with a Spatial Index Data link object zero or more State Related Geometry instances, each with a State Data link object zero or more Time Related Geometry instances, each with a Time Constraints Data link object zero or more Union Of Geometry Hierarchy instances Inherited Field Elements: SE_Boolean unique_descendants; /* * If the value of the unique_descendants field is SE_TRUE, each * descendant of this aggregation, * that is, each <Geometry Representation> instance that exists * in the component tree * rooted at the given <Aggregate Geometry>, shall be unique, in the * sense that it shall appear in only one branch of this aggregation. * If unique_descendants is SE_FALSE, at least one * <Geometry Representation> instance * appears in more than one branch of the aggregation. */ SE_Boolean strict_organizing_principle; /* * If the value of the strict_organizing_principle field is SE_TRUE, * each branch of this aggregation * strictly complies with the organizing principle for its * particular subclass. If this value is SE_FALSE, at least * one branch does not strictly comply with the given * organizing principle. See the organizing principle constraint * for each specific subclass for details. */ Field Elements: SE_LOD_Data_Type lod_data_type; /* * The lod_data_type field specifies the subclass of <Base LOD Data> of * each link object in the given organization. */ ------------------------------------------------------------------------------- Abstract Class Name: Library Definition: An instance of a concrete subclass specifies the complete list of unique instance(s) of a particular class that are stored within the given transmittal. Primary Page in DRM Diagram: 10 Secondary Pages in DRM Diagram: 1 23 Example: See individual subclasses for examples. FAQS: None. Superclass: SEDRIS Abstract Base Subclasses: Colour Table Library Data Table Library Image Library Model Library Property Set Table Library Sound Library Symbol Library Constraints: Publishable Object Composed of (two-way metadata) zero or one Access instance zero or one Citation instance zero or one Description instance ------------------------------------------------------------------------------- Abstract Class Name: Light Rendering Behaviour Definition: An instance of a concrete class derived from this DRM class specifies, for the given <Light Rendering Properties> instance, behaviour that is specific to a particular type of light, where "type" of light refers to its shape, direction, or apparent motion. Primary Page in DRM Diagram: 21 Secondary Pages in DRM Diagram: 23 Example: See individual subclasses for examples. FAQS: None. Superclass: SEDRIS Abstract Base Subclasses: Directional Light Behaviour Flashing Light Behaviour Moving Light Behaviour Rotating Light Behaviour Strobing Light Behaviour Twinkling Light Behaviour Volume Light Behaviour Constraints: Publishable Object Component of (two-way) one or more Light Rendering Properties instances ------------------------------------------------------------------------------- Class Name: Light Rendering Properties Definition: An instance of this DRM class specifies that the aggregating <Geometry Representation> is to be rendered so as to provide the illusion that the <Geometry Representation> emits light, but unlike an actual <Light Source> instance, the <Geometry Representation> will not actually emit light (for example, shadows should not be generated). Primary Page in DRM Diagram: 21 Secondary Pages in DRM Diagram: 4 5 19 Example: 1. Any <Primitive Geometry> can take on light behaviour. An example might be a <Point> instance, where the light point is visible to a certain extinguishing range (default = 0, that is, the light is visible from any distance). FAQS: None. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Homogeneous Light Rendering Properties Composed of (two-way) zero or more Light Rendering Behaviour instances zero or one Light Rendering Properties Control Link instance Component of (two-way) zero or more Aggregate Geometry instances zero or more Primitive Geometry instances zero or more Property Set instances Field Elements: SE_Point_Light_Display_Type display_type; /* * The display_type field specifies whether the light is raster or * calligraphic. */ SE_Long_Float light_diameter; /* * The light_diameter field specifies the size of the light, in pixels. * The default value, 0.0, means "not applicable." */ SE_Long_Float light_extinguishing_range; /* * The light_extinguishing_range field specifies the distance, in * metres, at which the light is no longer seen. The default value, * 0.0, means that it is always seen. */ SE_Boolean random_area_light; /* * The random_area_light field specifies whether all lights at * this level and in the associated component tree were originally * part of a random area light. */ SE_Boolean active_light_value; /* * The active_light_value field specifies the default / active state * of the light, where SE_TRUE = on, and SE_FALSE = off. */ SE_Long_Float candela_value; /* * The candela_value field specifies the candela value of the light * at full intensity. The default value, 0.0, means that the source * had no candela value. */ ------------------------------------------------------------------------------- Class Name: Light Rendering Properties Control Link Definition: An instance of this DRM class is a specialized <Control Link> instance providing the connection between one or more <Light Rendering Properties> instances and the <Expression> instance(s) that are used to determine whether the target <Light Rendering Properties> instances are active and / or their candela_value field values. Primary Page in DRM Diagram: 17 Secondary Pages in DRM Diagram: 21 Example: 1. Consider a flight simulator database containing an area of terrain representing a city as seen from the air. Some of the <Polygon> instances of this terrain representation have <Light Rendering Properties> with <Twinkling Light Behaviour>, representing city lights. These <Light Rendering Properties> share a <Light Rendering Properties Control Link> that turns them on and off depending on the time of day (on at dusk, off at dawn). 2. Consider a runway, bordered on either side by a <Line> representing the runway lights. Each <Line> has a <Light Rendering Properties> with <Strobing Light Behaviour>, and a <Light Rendering Properties Control Link> that turns the lights on and off depending on the time of day (on at dusk, off at dawn). FAQS: Q. What does a <Light Rendering Properties Control Link> control? A. A <Light Rendering Properties Control Link> controls whether the associated <Light Rendering Properties> are on or off, and the candela_value of the <Light Rendering Properties>. Q. Can a <Light Rendering Properties Control Link> be used to change the <Light Rendering Behaviour> of the <Light Rendering Properties>? A. No. The links to the <Light Rendering Behaviour> instances are associations within the transmittal, and associations cannot be changed dynamically. Superclass: Control Link Constraints: Publishable Object Composed of (two-way) (inherited) one or more {ordered} Expression instances Component of (two-way) one or more Light Rendering Properties instances Inherited Field Elements: SE_String description; /* * The description field specifies a text description of the given * <Control Link> instance's purpose. */ Field Elements: SE_Integer_Unsigned active_expr_index; /* * The active_expr_index field specifies which component <Expression>, * if any, specifies the active_light_value of the target * <Light Rendering Properties> instances. If active_expr_index is * zero (0), the active_light_value field values of the target * instances are not controlled; otherwise, the value is a 1-based * index into the ordered aggregation of <Expression> instances. */ SE_Integer_Unsigned candela_value_expr_index; /* * The candela_value_expr_index field specifies which component * <Expression>, if any, specifies * the candela_value of the target <Light Rendering Properties> * instances. If candela_value_expr_index is zero (0), the candela_value * field values of the target instances are not controlled; otherwise, * the value is a 1-based index into the ordered aggregation of * <Expression> instances. */ SE_Integer_Unsigned lower_candela_value_expr_index; /* * The lower_candela_value_expr_index field specifies which * component <Expression>, if any, specifies * the lower limit of the candela_value of the target * <Light Rendering Properties> instances. If lower_candela_value_expr_index * is zero (0), no lower limit is specified; otherwise, the * value is a 1-based index into the ordered aggregation of * <Expression> instances. Note that if candela_value_expr_index * is zero, the candela_value field values of the target instances * are not controlled, so this value would also be zero. */ SE_Integer_Unsigned upper_candela_value_expr_index; /* * The upper_candela_value_expr_index field specifies which component * <Expression>, if any, specifies the upper limit of the candela_value * of the target <Light Rendering Properties> instances. If * upper_candela_value_expr_index is zero (0), no upper limit is * specified; otherwise, the value is a 1-based index into the * ordered aggregation of <Expression> instances. * * Note that if candela_value_expr_index is zero, the * candela_value field values of the target instances are not * controlled, so this value would also be zero. */ ------------------------------------------------------------------------------- Abstract Class Name: Light Source Definition: An instance of a concrete subclass descended from this abstract DRM class specifies a source of light emission. Primary Page in DRM Diagram: 21 Secondary Pages in DRM Diagram: 4 14 23 Example: See individual subclasses for examples. FAQS: Q. What about linear or area light sources? A. This definition does not attempt to address linear or area light sources; it is fashioned after the OpenGL abstraction of light. Q. Why isn't my favorite light source addressed? A. Only light sources specific to CIG lighting have been addressed. Superclass: SEDRIS Abstract Base Subclasses: Base Positional Light Infinite Light Constraints: Publishable Object Composed of (two-way) one Ambient Colour instance one Diffuse Colour instance zero or one Light Source Control Link instance one Specular Colour instance Component of (two-way) one or more Aggregate Geometry instances Field Elements: SE_Boolean apply_to_children; /* * For a <Light Source> instance (that is, an instance of one of the * concrete classes descended from the class) that is a component of * some <Aggregate Geometry>, apply_to_children provides a mechanism * for limiting the scope of the <Light Source>. If apply_to_children * is SE_TRUE, only <Primitive Geometry> in the component tree of those * <Aggregate Geometry> instances are affected by the given * <Light Source>. If apply_to_children is SE_FALSE, the <Light Source> * is not limited to the scope of those <Aggregate Geometry> instances * and thus applies globally. */ SE_Boolean override_positional_lights; /* * For a <Light Source> instance that is a component of some * <Aggregate Geometry>, override_positional_lights provides a * mechanism to indicate with a value of SE_TRUE that the effect of the * given <Light Source> overrides that of any <Base Positional Light> * instances that would have otherwise applied to that * <Aggregate Geometry> - for example, if the given <Light Source> is * so close to the affected <Geometry Representation> that the * <Base Positional Light> effects would be negligible. If * override_positional_lights = SE_FALSE, the effect of the * given <Light Source> is combined with that * of any <Base Positional Light> instances that are already in effect. */ SE_Boolean override_infinite_lights; /* * For a <Light Source> instance (that is, an instance of one of the * concrete classes descended from the class) that is a component of * some <Aggregate Geometry>, override_infinite_lights provides a * mechanism to indicate with a value of SE_TRUE that the effect of the * given <Light Source> overrides that of any <Infinite Light> * instances that would have otherwise applied to that * <Aggregate Geometry>. If override_infinite_lights = SE_FALSE, * the effect of the given <Light Source> is combined with that * of any <Infinite Light> instances that are already in effect. */ SE_Boolean active_light_value; /* * A value of SE_TRUE for the active_light_value field indicates * that the light is on, while a value of * SE_FALSE indicates that the light is off. For a <Light Source> * with a <Light Source Control Link> instance as a component, * this is the default state of the light. */ ------------------------------------------------------------------------------- Class Name: Light Source Control Link Definition: An instance of this DRM class specifies an <Expression> instance, the value of which determines the active_light_value of all target <Light Source> instances - that is, which determines whether those <Light Source> instances are on or off. Primary Page in DRM Diagram: 17 Secondary Pages in DRM Diagram: 21 Example: 1. A <Model> of a lighthouse has a <Geometry Model> with a <Union Of Geometry Hierarchy>, to which is attached an <Spot Light> representing the lighthouse's light. The <Spot Light> has a <Light Source Control Link> that turns the light on or off, depending on the time of day and the weather. FAQS: Q. What does a <Light Source Control Link> control? A. A <Light Source Control Link> controls the active_light_value stored in its <Light Source>, so that the <Light Source> can be turned on and off. Superclass: Control Link Constraints: Publishable Object Composed of (two-way) (inherited) one or more {ordered} Expression instances Component of (two-way) one or more Light Source instances Inherited Field Elements: SE_String description; /* * The description field specifies a text description of the given * <Control Link> instance's purpose. */ Field Elements: SE_Integer_Positive expr_index; /* * The expr_index field specifies which <Expression> component's * value controls whether the controlled <Light Source> instance(s) * are on or off. If the <Expression> evaluates to SE_TRUE, the * <Light Source> instances are on. */ ------------------------------------------------------------------------------- Class Name: Line Definition: An instance of this DRM class specifies a sequence of connected line segments, each implicitly specified between the i, i+1 pair of <Vertex> components. Primary Page in DRM Diagram: 5 Example: 1. Consider a <Line> instance L representing a string of 30 evenly spaced lights along one side of a runway. To specify what L represents, it has a qualified <Classification Data> component C with tag = ECC_AERODROME_LIGHTING, where C has a <Property Value> component with meaning = { SE_PROP_CODE_TYP_ATTRIBUTE, {EAC_AERONAUTICAL_LIGHT_TYPE}} value = { EDCS_AVT_ENUMERATION, { EEC_AEROLGTTY_RUNWAY }}. L also has a <Light Rendering Properties> component with an appropriate <Flashing Light Behaviour>. L's own field values are count = 30 and suppress_last = SE_FALSE, so that L is rendered as a string of 30 evenly spaced flashing lights. FAQS: None. Superclass: Linear Geometry Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Cyclic Aggregations Precedence of Property Set Index Colour Mapping Restrictions Continuous LOD Restrictions Image Mapping Functions and Texture Coordinates Nested Primitive Geometry Linear Geometry Structure Associated with (two-way) (inherited) zero or more {ordered} Geometry Edge instances, each with a Edge Directions link object Composed of (two-way) (inherited) zero or one Classification Data instance zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or more Colour instances zero or more {ordered} Image Mapping Function instances zero or one Light Rendering Properties instance zero or one Presentation Domain instance zero or one Rendering Priority Level instance zero or one Rendering Properties instance zero or more Tack Point instances zero or one Union Of Primitive Geometry instance Composed of (two-way) zero or more {ordered} Reference Vector instances 2 or more {ordered} Vertex instances Composed of (two-way metadata) (inherited) zero or one Time Constraints Data instance Component of (two-way) (inherited) zero or more Union Of Primitive Geometry instances Inherited Field Elements: SE_Short_Integer_Unsigned count; /* * A value of zero (0) for the count field indicates that the given * <Linear Geometry> instance is to be rendered as solid. * * Otherwise, the interpretation of the count depends on whether * a <Light Rendering Properties> component is present for * the given <Linear Geometry> instance. * * - If a <Light Rendering Properties> component is present, then * count is the number of evenly spaced light points to be * rendered along the <Linear Geometry>. * * - If no <Light Rendering Properties> component is present, then * count is the number of evenly spaced line segments to be * rendered along the <Linear Geometry>. */ SE_Boolean suppress_last; /* * If count is greater than zero, the suppress_last field specifies * whether the last segment / point in the sequence is suppressed * or rendered. */ ------------------------------------------------------------------------------- Class Name: Lineage Definition: An instance of this DRM class either - provides information about the events and / or source data used in constructing the data specified by the scope, or - indicates a lack of knowledge about lineage. Primary Page in DRM Diagram: 20 Secondary Pages in DRM Diagram: 10 22 Example: 1. Consider a data set representing a transmittal containing a polygonal terrain representation that was derived from a DTED representation. The <Lineage> instance for the <Transmittal Root> instance of this example transmittal might have a <Process Step> component describing the polygonalization process, as well as a <Source> component corresponding to the DTED representation. FAQS: None. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Mandatory Metadata Composed of (two-way metadata) zero or more Process Step instances zero or more Source instances Component of (two-way) zero or more Data Quality instances zero or more Image instances zero or more Sound instances zero or more Symbol instances Field Elements: SE_String statement; /* * If provided, the statement field supplies a general explanation * of the data provider's knowledge about the lineage of the dataset * being described. */ ------------------------------------------------------------------------------- Class Name: Linear Feature Definition: An instance of this DRM class is a <Primitive Feature> with a one-dimensional structure, such as a road, a stream, or a power line. Primary Page in DRM Diagram: 8 Secondary Pages in DRM Diagram: 12 Example: 1. Consider a <Linear Feature> representing a road. <Linear Feature> --------------------------------- <> | - <Edge Direction> | | |-- <Classification Data> | | tag = ECC_ROAD <Feature Edge> | |-- <Property Value> | meaning = EAC_WIDTH | |-- <Property Value> | meaning = EAC_TERRAIN_TRANSPORTATION_ROUTE_SURFACE_TYPE | |-- <Property Value> meaning = EAC_NAME "Interstate 5" This <Linear Feature> instance has an ordered set of <Feature Edge> instances defining the 2D or 3D path of its centreline. The <Classification Data> identifies it as a road, while the <Property Value> instances describe the characteristics of the road. Note that if individual segments of the road had different surface characteristics, they could have been attributed with their own <Property Value> components. FAQS: Q. Can a <Linear Feature> consist of multiple <Feature Edge> instances? A. Yes. However, these <Feature Edge> instances shall form an ordered sequence, such that each consecutive pair of <Feature Edge> instances shares a common <Feature Node>. Also, any properties of the feature shall remain the same throughout its length. For example, a single road feature (Interstate 95) could conceivably consist of a linear sequence of hundreds or thousands of <Feature Edge> instances. Superclass: Primitive Feature Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Crossing Associations Precedence of Property Set Index Colour Mapping Restrictions Image Mapping Functions and Texture Coordinates Associated to (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or more Property Grid instances, each with a Base Association Data link object Associated by (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or more Property Grid instances, each with a Base Association Data link object Associated with (two-way) one or more {ordered} Feature Edge instances, each with a Edge Directions link object Composed of (two-way) (inherited) zero or one Classification Data instance zero or more Label instances zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or one Rendering Priority Level instance zero or more Colour instances zero or more {ordered} Image Mapping Function instances zero or one Presentation Domain instance zero or one Spatial Extent instance Composed of (two-way metadata) (inherited) zero or one Access instance zero or more Cross Reference instances zero or one Data Quality instance zero or one Description instance zero or one Time Constraints Data instance Component of (two-way) (inherited) zero or more Union Of Features instances ------------------------------------------------------------------------------- Abstract Class Name: Linear Geometry Definition: An instance of a concrete class derived form this DRM class is a geometric linear representation. Primary Page in DRM Diagram: 5 Secondary Pages in DRM Diagram: 13 23 Example: See individual subclasses for examples. FAQS: None. Superclass: Primitive Geometry Subclasses: Arc Line Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Cyclic Aggregations Precedence of Property Set Index Colour Mapping Restrictions Continuous LOD Restrictions Image Mapping Functions and Texture Coordinates Nested Primitive Geometry Linear Geometry Structure Associated with (two-way) zero or more {ordered} Geometry Edge instances, each with a Edge Directions link object Composed of (two-way) (inherited) zero or one Classification Data instance zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or more Colour instances zero or more {ordered} Image Mapping Function instances zero or one Light Rendering Properties instance zero or one Presentation Domain instance zero or one Rendering Priority Level instance zero or one Rendering Properties instance zero or more Tack Point instances zero or one Union Of Primitive Geometry instance Composed of (two-way metadata) (inherited) zero or one Time Constraints Data instance Component of (two-way) (inherited) zero or more Union Of Primitive Geometry instances Field Elements: SE_Short_Integer_Unsigned count; /* * A value of zero (0) for the count field indicates that the given * <Linear Geometry> instance is to be rendered as solid. * * Otherwise, the interpretation of the count depends on whether * a <Light Rendering Properties> component is present for * the given <Linear Geometry> instance. * * - If a <Light Rendering Properties> component is present, then * count is the number of evenly spaced light points to be * rendered along the <Linear Geometry>. * * - If no <Light Rendering Properties> component is present, then * count is the number of evenly spaced line segments to be * rendered along the <Linear Geometry>. */ SE_Boolean suppress_last; /* * If count is greater than zero, the suppress_last field specifies * whether the last segment / point in the sequence is suppressed * or rendered. */ ------------------------------------------------------------------------------- Class Name: Literal Definition: An instance of this DRM class is an <Expression> instance that specifies a constant value. Primary Page in DRM Diagram: 16 Example: See the examples of the subclasses of <Control Link>. FAQS: None. Superclass: Expression Constraints: Publishable Object Non Cyclic Aggregations Component of (two-way) (inherited) zero or more Control Link instances zero or more Feature Model Instance instances, each with a Model Instance Template Indices link object zero or more Function instances zero or more Geometry Model Instance instances, each with a Model Instance Template Indices link object Field Elements: SE_Single_Value value; /* * The value field specifies the actual data value expressed by the given * <Literal> instance. */ ------------------------------------------------------------------------------- Class Name: Lobe Data Definition: An instance of this DRM class specifies a cone or a pyramid shape of a light source or directional light in terms of direction vectors for the central axis (SE_REF_VEC_TYP_LIGHT_DIRECTION), the SE_REF_VEC_TYP_VERTICAL_AXIS, and horizontal and vertical angular widths. Primary Page in DRM Diagram: 21 Example: See examples in: <Spot Light>, <Blend Directional Light>, <Cone Directional Light>, and <Pyramid Directional Light>. FAQS: Q. If the two <Reference Vector> components specify the SE_REF_VEC_TYP_LIGHT_DIRECTION and SE_REF_VEC_TYP_VERTICAL_AXIS, how is the horizontal axis specified? A. The horizontal direction is always perpendicular to the plane of the two <Reference Vector> instances of type SE_REF_VEC_TYP_LIGHT_DIRECTION and SE_REF_VEC_TYP_VERTICAL_AXIS. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Required Reference Vector Location Composed of (two-way) exactly 2 Reference Vector instances Component of (two-way) zero or more Directional Light Behaviour instances zero or more Spot Light instances Field Elements: SE_Long_Float horizontal_width; /* * The horizontal_width field specifies the horizontal lobe width, * measured in radians perpendicular to the SE_REF_VEC_TYP_VERTICAL_AXIS * <Reference Vector> component. */ SE_Long_Float vertical_width; /* * The vertical_width field specifies the vertical lobe width, * measured in radians parallel to the SE_REF_VEC_TYP_VERTICAL_AXIS * <Reference Vector> component. */ ------------------------------------------------------------------------------- Class Name: Local 4x4 Definition: An instance of this DRM class specifies a sixteen element matrix that is used to scale, orient, and position objects in the scope of its aggregate <LSR Transformation>. The direction of rotation is determined by the right-hand rule. The translation parameters are always in the rightmost column of the matrix. Since a <Local 4x4> only appears as part of an <LSR Transformation>, and an <LSR Transformation> only appears in the scope of an LSR spatial reference frame, the objects to which a <Local 4x4> is applied are always defined in an LSR SRF. Since LSR SRFs are usually used to specify <Model> rather than <Environment Root> instances, usually <Local 4x4> is considered to be 'local'. However, an <Environment Root> may be specified in an LSR SRF, in which case <LSR Transformation> instances would be legal within its scope. The matrix multiplication order is defined by w = M x v, where M is the <Local 4x4> matrix, v is the original location vector, and w is the resulting location vector. Primary Page in DRM Diagram: 7 Example: 1. The position and orientation of the control tower in a <Model> of an airport is specified by the <Local 4x4>. See <Transformation> for more examples. FAQS: Q. How is the transformation matrix stored? A. SEDRIS stores matrices in *row* major order; that is, the first four elements correspond to the first row of the matrix, the following four elements correspond to the second row of the matrix, and so on (just as a float[4][4] in C is organized). Hence, if mat[][] is the matrix being used, then mat[i][j] is the element in row i and column j of the matrix. Q. What is the multiplication order for <Local 4x4> matrices? A. If M is a <Local 4x4> transformation matrix and v is a column location vector, then the SEDRIS Level 0 API transforms v to a column location vector w by setting w = Mv. (See HTML for detailed matrix equation.) Q. Is a matrix in SEDRIS the same as a matrix in OpenGL? A. No. A matrix in SEDRIS is stored in row major order, while in OpenGL, matrices are specified in column major order (as in the glMultMatrix function). Consequently, to correctly apply SEDRIS transformations in OpenGL programs, each matrix shall be reordered. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Component of (two-way) one LSR Transformation instance Field Elements: SRM_Matrix_4x4 matrix; /* * The matrix field specifies a standard 4 x 4 transformation matrix. */ ------------------------------------------------------------------------------- Abstract Class Name: Location Definition: An instance of a concrete class derived from this this DRM class specifies linear or angular quantities that designate the position of a point in a SRF. Primary Page in DRM Diagram: 15 Secondary Pages in DRM Diagram: 1 4 5 6 7 8 9 10 11 12 18 20 21 22 23 Example: 1. A tree is instanced as a <Point Feature>. The <Point Feature>'s <Feature Node> shall have a <Location> giving the position in space where the tree will be placed. FAQS: None. Superclass: SEDRIS Abstract Base Subclasses: Location 2D Location 3D Location Surface Constraints: Publishable Object Environment Root Spatial Reference Frame Image Anchor Spatial Reference Frame Model Spatial Reference Frame Component of (two-way) zero or more Arc instances zero or more Camera Point instances zero or more Directional Light Behaviour instances zero or one Distance LOD Data instance zero or more Ellipse instances zero or more Feature Edge instances zero or more Feature Face instances zero or one Feature Node instance zero or more Image Anchor instances zero or more Label instances zero or more Perimeter Data instances zero or more Point instances zero or more Property Grid Hook Point instances zero or one Reference Origin instance zero or more Reference Vector instances zero or more Spatial Extent instances zero or more Spatial Index Related Feature Topology instances zero or more Spatial Index Related Features instances zero or more Spatial Index Related Geometry instances zero or more Spatial Index Related Geometry Topology instances zero or more Tack Point instances zero or more Vertex instances zero or more World 3x3 instances zero or more World Transformation instances ------------------------------------------------------------------------------- Abstract Class Name: Location 2D Definition: An instance of a concrete class derived from this DRM class specifies linear or angular quantities that designate the position of a point in a two dimensional SRF. Primary Page in DRM Diagram: 15 Secondary Pages in DRM Diagram: 23 Example: See individual subclasses for examples. FAQS: None. Superclass: Location Subclasses: AZ 2D Location LSR 2D Location Polar 2D Location Constraints: Publishable Object Environment Root Spatial Reference Frame Image Anchor Spatial Reference Frame Model Spatial Reference Frame Component of (two-way) (inherited) zero or more Arc instances zero or more Camera Point instances zero or more Directional Light Behaviour instances zero or one Distance LOD Data instance zero or more Ellipse instances zero or more Feature Edge instances zero or more Feature Face instances zero or one Feature Node instance zero or more Image Anchor instances zero or more Label instances zero or more Perimeter Data instances zero or more Point instances zero or more Property Grid Hook Point instances zero or one Reference Origin instance zero or more Reference Vector instances zero or more Spatial Extent instances zero or more Spatial Index Related Feature Topology instances zero or more Spatial Index Related Features instances zero or more Spatial Index Related Geometry instances zero or more Spatial Index Related Geometry Topology instances zero or more Tack Point instances zero or more Vertex instances zero or more World 3x3 instances zero or more World Transformation instances ------------------------------------------------------------------------------- Abstract Class Name: Location 3D Definition: An instance of a concrete class derived from this DRM class specifies linear or angular quantities that designate the position of a point in a three dimensional SRF. Primary Page in DRM Diagram: 15 Secondary Pages in DRM Diagram: 2 4 5 7 9 21 22 23 Example: 1. A <Point Feature> representing a bridge is associated with a <Feature Node>. The location of that <Feature Node> in the currently scoped SRF is represented by a <Location 3D>. 2. The location of a <Vertex> (point) of a <Polygon> in a <Model> of a tank is associated with a <Geometry Node>. The location of that <Geometry Node> in the local SRF of the tank <Model> is represented by the <Location 3D> of the <Vertex>. FAQS: None. Superclass: Location Subclasses: CC 3D Location CD 3D Location CM 3D Location EC Augmented 3D Location EI 3D Location HAEC 3D Location HEEC 3D Location HEEQ 3D Location LCC Augmented 3D Location LSR 3D Location LTSAS 3D Location LTSC 3D Location LTSE 3D Location M Augmented 3D Location OM Augmented 3D Location PS Augmented 3D Location SEC 3D Location SEQ 3D Location SM 3D Location SMS 3D Location TM Augmented 3D Location Constraints: Publishable Object Environment Root Spatial Reference Frame Image Anchor Spatial Reference Frame Model Spatial Reference Frame Component of (two-way) (inherited) zero or more Arc instances zero or more Camera Point instances zero or more Directional Light Behaviour instances zero or one Distance LOD Data instance zero or more Ellipse instances zero or more Feature Edge instances zero or more Feature Face instances zero or one Feature Node instance zero or more Image Anchor instances zero or more Label instances zero or more Perimeter Data instances zero or more Point instances zero or more Property Grid Hook Point instances zero or one Reference Origin instance zero or more Reference Vector instances zero or more Spatial Extent instances zero or more Spatial Index Related Feature Topology instances zero or more Spatial Index Related Features instances zero or more Spatial Index Related Geometry instances zero or more Spatial Index Related Geometry Topology instances zero or more Tack Point instances zero or more Vertex instances zero or more World 3x3 instances zero or more World Transformation instances Component of (two-way) zero or one Attachment Point instance zero or more Base Positional Light instances zero or one Contact Point instance zero or more Geometric Centre instances zero or more Separating Plane instances zero or more Sound Instance instances zero or more Stamp Behaviour instances zero or more Volume instances zero or more Volume Light Behaviour instances zero or more Volume LOD Data instances zero or more Volume Object instances ------------------------------------------------------------------------------- Class Name: LSR 2D Location Definition: An instance of this DRM class specifies a coordinate within the Local Space Rectangular (LSR2) 2D SRF. See [I18026] for a complete definition. Primary Page in DRM Diagram: 15 Example: 1. <LSR 2D Location> instances are most commonly used in <Model> representations. FAQS: Q. What if all of the <Vertex> components of a <Polygon> instance use <LSR 2D Location> instances, and the <Polygon> instance crosses over two or more terrain facets? A. By default, the <Polygon> instance should be draped across the terrain. This would cause the <Polygon> instance to be broken at the terrain facet boundaries, creating multiple polygons. If the Dont_Drape SE_Polygon_Flag is set on the <Polygon> instance, do not drape the <Polygon> instance. Instead, the <Vertex> components of the <Polygon> instance will conform to the terrain surface, while the interior of the <Polygon> instance may cut through the terrain. Superclass: Location 2D Constraints: Publishable Object Environment Root Spatial Reference Frame Image Anchor Spatial Reference Frame Model Spatial Reference Frame Component of (two-way) (inherited) zero or more Arc instances zero or more Camera Point instances zero or more Directional Light Behaviour instances zero or one Distance LOD Data instance zero or more Ellipse instances zero or more Feature Edge instances zero or more Feature Face instances zero or one Feature Node instance zero or more Image Anchor instances zero or more Label instances zero or more Perimeter Data instances zero or more Point instances zero or more Property Grid Hook Point instances zero or one Reference Origin instance zero or more Reference Vector instances zero or more Spatial Extent instances zero or more Spatial Index Related Feature Topology instances zero or more Spatial Index Related Features instances zero or more Spatial Index Related Geometry instances zero or more Spatial Index Related Geometry Topology instances zero or more Tack Point instances zero or more Vertex instances zero or more World 3x3 instances zero or more World Transformation instances Field Elements: SRM_Euclidean_2D_Coordinate coordinate; /* * The coordinate field specifies the coordinate values. */ ------------------------------------------------------------------------------- Class Name: LSR 3D Location Definition: An instance of this DRM class specifies a coordinate within the Local Space Rectangular (LSR) 3D SRF. See [I18026] for a complete definition. Primary Page in DRM Diagram: 15 Example: 1. <LSR 3D Location> instances are most commonly used in <Model> representations. FAQS: None. Superclass: Location 3D Constraints: Publishable Object Environment Root Spatial Reference Frame Image Anchor Spatial Reference Frame Model Spatial Reference Frame Composed of (two-way) zero or one LSR 3D Location Control Link instance Component of (two-way) (inherited) zero or more Arc instances zero or more Camera Point instances zero or more Directional Light Behaviour instances zero or one Distance LOD Data instance zero or more Ellipse instances zero or more Feature Edge instances zero or more Feature Face instances zero or one Feature Node instance zero or more Image Anchor instances zero or more Label instances zero or more Perimeter Data instances zero or more Point instances zero or more Property Grid Hook Point instances zero or one Reference Origin instance zero or more Reference Vector instances zero or more Spatial Extent instances zero or more Spatial Index Related Feature Topology instances zero or more Spatial Index Related Features instances zero or more Spatial Index Related Geometry instances zero or more Spatial Index Related Geometry Topology instances zero or more Tack Point instances zero or more Vertex instances zero or more World 3x3 instances zero or more World Transformation instances zero or one Attachment Point instance zero or more Base Positional Light instances zero or one Contact Point instance zero or more Geometric Centre instances zero or more Separating Plane instances zero or more Sound Instance instances zero or more Stamp Behaviour instances zero or more Volume instances zero or more Volume Light Behaviour instances zero or more Volume LOD Data instances zero or more Volume Object instances Field Elements: SRM_Euclidean_3D_Coordinate coordinate; /* * The coordinate field specifies the coordinate values. */ ------------------------------------------------------------------------------- Class Name: LSR 3D Location Control Link Definition: An instance of this DRM class is a specialized <Control Link> instance used to provide the connection between an ordered aggregation of <Expression> instances and the target fields of the <LSR 3D Location> instances that aggregate it. Primary Page in DRM Diagram: 17 Secondary Pages in DRM Diagram: 15 Example: 1. Consider a building <Model> that may be instanced on terrain polygons that are at various different orientations. Each building wall shall meet the terrain, leaving no gaps. This means that the lengths of the building's walls shall be adjusted by different amounts in each instance to match the slope of the ground. The location of each <Vertex> at the base of a wall <Polygon> can be adjusted by using an <LSR 3D Location Control Link> aggregated by the <LSR 3D Location> that specifies the <Vertex>'s location. Each <LSR 3D Location Control Link> would itself aggregate a <Variable>, which would specify the new location value. These <Variables> shall be set separately for each instance to match the terrain upon which the instance is positioned. This calls for the <Variables> to be set from outside the building <Model> so all of these <Variables> in the building <Model> shall be associated with the <Model>'s <Interface Template>. 2. See also <Interface Template>, <Model Instance Template Index>. FAQS: None. Superclass: Control Link Constraints: Publishable Object Composed of (two-way) (inherited) one or more {ordered} Expression instances Component of (two-way) one or more LSR 3D Location instances Inherited Field Elements: SE_String description; /* * The description field specifies a text description of the given * <Control Link> instance's purpose. */ Field Elements: SE_Integer_Unsigned u_expr_index; /* * The u_expr_index field identifies a component <Expression>, the * value of which specifies that of the coordinate.u field of the * affected <LSR 3D Location> instances. If this index is 0, the * coordinate.u field is not controlled. */ SE_Integer_Unsigned v_expr_index; /* * The v_expr_index field identifies a component <Expression>, the * value of which specifies that of the coordinate.v field of the * affected <LSR 3D Location> instances. If this index is 0, the * coordinate.v field is not controlled. */ SE_Integer_Unsigned w_expr_index; /* * The w_expr_index field identifies a component <Expression>, * the value of which specifies that of the coordinate.w field * of the affected <LSR 3D Location> instances. If this index * is 0, the coordinate.w field is not controlled. */ ------------------------------------------------------------------------------- Class Name: LSR Transformation Definition: An instance of this DRM class is a <Transformation>, specified by a 4 x 4 matrix, used to transform an object defined in one LSR SRF into another LSR SRF, when the original SRF does not have conformal points (<LSR 2D Location> instances) that shall be maintained as conformal points. (If the original SRF does have conformal points that shall be maintained, a <World Transformation> shall be used instead.) Note that the 4 x 4 matrix may be explicitly specified as a <Local 4x4>, implicitly by a series of <LSR Transformation Step> components, or both, as long as the <<LSR Transformation Components>> constraint is obeyed. Primary Page in DRM Diagram: 7 Secondary Pages in DRM Diagram: 2 4 6 Example: 1. Used when instancing a wheel to the axle of a vehicle. 2. The <Translation>, <Rotation>, and <Scale> instances applied to a gun barrel when modeled into a tank turret. 3. See <Transformation> for general examples. FAQS: None. Superclass: Transformation Constraints: Publishable Object LSR Transformation Components Composed of (two-way) zero or one Local 4x4 instance zero or more {ordered} LSR Transformation Step instances Component of (two-way) (inherited) zero or more Feature Model Instance instances zero or more Geometry Model Instance instances Component of (two-way) zero or more Aggregate Geometry instances zero or one Geometry Model instance zero or more Property Grid Hook Point instances ------------------------------------------------------------------------------- Abstract Class Name: LSR Transformation Step Definition: An instance of a concrete class derived from this DRM class represents a transformation step that is defined in a (2D or 3D) LSR SRF. Primary Page in DRM Diagram: 7 Secondary Pages in DRM Diagram: 23 Example: See individual subclasses for examples. FAQS: None. Superclass: SEDRIS Abstract Base Subclasses: Rotation Scale Translation Constraints: Publishable Object Composed of (two-way) zero or one Reference Vector instance Component of (two-way) zero or one LSR Transformation instance ------------------------------------------------------------------------------- Class Name: LTSE Surface Location Definition: An instance of this DRM class specifies a coordinate within the Local Tangent Space Euclidean (LTSE) Surface SRF. See [I18026] for a complete definition. Primary Page in DRM Diagram: 15 Example: 1. A <Property Grid> instance maps wind velocities along a coastline. The <Property Grid> instance uses a Local Tangent Euclidean (Surface) SRF with the Y axis parallel to the coast. FAQS: Q. How does the Local Tangent Space Euclidean (LTSE) SRF differ from the Local Space Rectangular (LSR) SRF? A. The Local Tangent Euclidean (Surface) SRF specifies a location in a georeferenced space. The Local Space Rectangular (2D) SRF specifies a location in a Cartesian, non-georeferenced "model" space. Superclass: Location Surface Constraints: Publishable Object Environment Root Spatial Reference Frame Image Anchor Spatial Reference Frame Model Spatial Reference Frame Component of (two-way) (inherited) zero or more Arc instances zero or more Camera Point instances zero or more Directional Light Behaviour instances zero or one Distance LOD Data instance zero or more Ellipse instances zero or more Feature Edge instances zero or more Feature Face instances zero or one Feature Node instance zero or more Image Anchor instances zero or more Label instances zero or more Perimeter Data instances zero or more Point instances zero or more Property Grid Hook Point instances zero or one Reference Origin instance zero or more Reference Vector instances zero or more Spatial Extent instances zero or more Spatial Index Related Feature Topology instances zero or more Spatial Index Related Features instances zero or more Spatial Index Related Geometry instances zero or more Spatial Index Related Geometry Topology instances zero or more Tack Point instances zero or more Vertex instances zero or more World 3x3 instances zero or more World Transformation instances Field Elements: SRM_LTSE_Surface_Coordinate coordinate; /* * The coordinate field specifies the coordinate values. */ ------------------------------------------------------------------------------- Class Name: LTSE 3D Location Definition: An instance of this DRM class specifies a coordinate within the Local Tangent Space Euclidean (LTSE) 3D SRF. See [I18026] for a complete definition. Primary Page in DRM Diagram: 15 Example: 1. Consider a <Property Grid> instance that maps wind velocities along a coastline. The <Property Grid> instance uses a Local Tangent Euclidean SRF with the Y axis parallel to the coast. FAQS: Q. How does the Local Tangent Space Euclidean (LTSE) SRF differ from the Local Space Rectangular (LSR) SRF? A. The Local Tangent Euclidean SRF specifies a location in a georeferenced space. The Local Space Rectangular SRF specifies a location in a Cartesian, non-georeferenced "model" space. Q. If a data provider has a 2D grid, why is the data provider required to specify a height? A. Because the Local Tangent Euclidean references a Cartesian coordinate system to a curved surface, the two surfaces are not parallel (in particular, LTSE is not a projection-based SRF). When they are not parallel, a 2D coordinate in one SRF can map to a range of 2D coordinates in the other SRF. Specifying the third coordinate resolves this ambiguity. If the data provider's grid is small enough or the ambiguity in location is unimportant, the data provider can specify a height as a global parameter of the <Property Grid>. Otherwise, the data provider should specify the height as a separate value in each grid cell, or use several grids of smaller extents. Superclass: Location 3D Constraints: Publishable Object Environment Root Spatial Reference Frame Image Anchor Spatial Reference Frame Model Spatial Reference Frame Component of (two-way) (inherited) zero or more Arc instances zero or more Camera Point instances zero or more Directional Light Behaviour instances zero or one Distance LOD Data instance zero or more Ellipse instances zero or more Feature Edge instances zero or more Feature Face instances zero or one Feature Node instance zero or more Image Anchor instances zero or more Label instances zero or more Perimeter Data instances zero or more Point instances zero or more Property Grid Hook Point instances zero or one Reference Origin instance zero or more Reference Vector instances zero or more Spatial Extent instances zero or more Spatial Index Related Feature Topology instances zero or more Spatial Index Related Features instances zero or more Spatial Index Related Geometry instances zero or more Spatial Index Related Geometry Topology instances zero or more Tack Point instances zero or more Vertex instances zero or more World 3x3 instances zero or more World Transformation instances zero or one Attachment Point instance zero or more Base Positional Light instances zero or one Contact Point instance zero or more Geometric Centre instances zero or more Separating Plane instances zero or more Sound Instance instances zero or more Stamp Behaviour instances zero or more Volume instances zero or more Volume Light Behaviour instances zero or more Volume LOD Data instances zero or more Volume Object instances Field Elements: SRM_LTSE_3D_Coordinate coordinate; /* * The coordinate field specifies the coordinate values. */ ------------------------------------------------------------------------------- Class Name: M Augmented 3D Location Definition: An instance of this DRM class specifies a coordinate within the Augmented Mercator (AM) 3D SRF. See [I18026] for a complete definition. Primary Page in DRM Diagram: 15 Example: 1. The Augmented Mercator SRF is used by a number of METOC data sets of importance to the modelling and simulation (M&S) community. FAQS: Q. Where can users obtain further information on AM? A. See the SRM for additional details. Superclass: Location 3D Constraints: Publishable Object Environment Root Spatial Reference Frame Image Anchor Spatial Reference Frame Model Spatial Reference Frame Component of (two-way) (inherited) zero or more Arc instances zero or more Camera Point instances zero or more Directional Light Behaviour instances zero or one Distance LOD Data instance zero or more Ellipse instances zero or more Feature Edge instances zero or more Feature Face instances zero or one Feature Node instance zero or more Image Anchor instances zero or more Label instances zero or more Perimeter Data instances zero or more Point instances zero or more Property Grid Hook Point instances zero or one Reference Origin instance zero or more Reference Vector instances zero or more Spatial Extent instances zero or more Spatial Index Related Feature Topology instances zero or more Spatial Index Related Features instances zero or more Spatial Index Related Geometry instances zero or more Spatial Index Related Geometry Topology instances zero or more Tack Point instances zero or more Vertex instances zero or more World 3x3 instances zero or more World Transformation instances zero or one Attachment Point instance zero or more Base Positional Light instances zero or one Contact Point instance zero or more Geometric Centre instances zero or more Separating Plane instances zero or more Sound Instance instances zero or more Stamp Behaviour instances zero or more Volume instances zero or more Volume Light Behaviour instances zero or more Volume LOD Data instances zero or more Volume Object instances Field Elements: SRM_Map_Projection_3D_Coordinate coordinate; /* * The coordinate field specifies the coordinate values. */ ------------------------------------------------------------------------------- Class Name: M Surface Location Definition: An instance of this DRM class specifies a coordinate within the Mercator (M) Surface SRF. See [I18026] for a complete definition. Primary Page in DRM Diagram: 15 Example: 1. The Mercator SRF is used by a number of METOC data sets of importance to the modelling and simulation (M&S) community. FAQS: Q. Where can users obtain further information on M? A. See the SRM for additional details. Superclass: Location Surface Constraints: Publishable Object Environment Root Spatial Reference Frame Image Anchor Spatial Reference Frame Model Spatial Reference Frame Component of (two-way) (inherited) zero or more Arc instances zero or more Camera Point instances zero or more Directional Light Behaviour instances zero or one Distance LOD Data instance zero or more Ellipse instances zero or more Feature Edge instances zero or more Feature Face instances zero or one Feature Node instance zero or more Image Anchor instances zero or more Label instances zero or more Perimeter Data instances zero or more Point instances zero or more Property Grid Hook Point instances zero or one Reference Origin instance zero or more Reference Vector instances zero or more Spatial Extent instances zero or more Spatial Index Related Feature Topology instances zero or more Spatial Index Related Features instances zero or more Spatial Index Related Geometry instances zero or more Spatial Index Related Geometry Topology instances zero or more Tack Point instances zero or more Vertex instances zero or more World 3x3 instances zero or more World Transformation instances Field Elements: SRM_Map_Projection_Surface_Coordinate coordinate; /* * The coordinate field specifies the coordinate values. */ ------------------------------------------------------------------------------- Class Name: Map Scale LOD Data Definition: An instance of this DRM class specifies the map scale of the associated data. Primary Page in DRM Diagram: 9 Example: None. FAQS: None. Superclass: Base LOD Data Constraints: Publishable Object LOD Related Organizing Principle Component of (two-way) (inherited) zero or more Aggregate Feature instances zero or more Aggregate Geometry instances zero or more Property Grid Hook Point instances Field Elements: SE_Long_Float map_scale; /* * The map_scale field specifies the denominator of the representative * fraction on a map (for example, on a 1:24,000-scale map, the map_scale * is 24000.0). This shall be a positive value (greater than 1.0, since * maps are smaller than the things they represent). */ ------------------------------------------------------------------------------- Class Name: Mesh Face Table Definition: An instance of this DRM class specifies a two-dimensional table that defines the face elements of a <Finite Element Mesh> instance in terms of vertex numbers in the ordered <Vertex> component list of the <Finite Element Mesh> instance and, optionally, the topology of the face elements. The first data element specifies, for cell i, j, the index in the ordered <Vertex> list of the <Vertex> representing the jth node of the ith mesh face. If the ith mesh face contains less than j nodes, so that j is greater than the number of the last listed node of mesh face i, then the cell data element contains zero (0). The edges of each mesh face i are implicitly defined by pairing node j to node j + 1. For a given mesh face element index i and mesh face node index j, the (i, j)-th cell gives the vertex number that comprises the j-th node of the i-th mesh face. The mesh face vertices are listed (j index) in clockwise order around the outer perimeter of the mesh face, starting and ending with a first vertex. If inner perimeter rings are present, the vertex list along the second axis continues with inner perimeter vertices in counter-clockwise order starting and ending with a first vertex on each inner ring. Primary Page in DRM Diagram: 18 Example: 1. Consider six <Vertex> instances, used to define a <Mesh Face Table>, where the mesh would be diagrammed as follows. (k) = <Vertex> k Mesh: (1)-----(2)-----(3) \ A / \ B | \ / C \ | (4)------(5)-(6) In this example, there are six <Vertex> instances forming the nodes of the mesh, which has three mesh faces (A, B, C). The corresponding <Mesh Face Table> instance, without surface topology, would be organized as follows, where each individual cell contains a vertex number. Node # | 1 2 3 4 5 ------------------------ Mesh Face # 1 |1 |2 |4 |1 |0 | -->Mesh Face A 2 |2 |3 |6 |5 |2 | -->Mesh Face B 3 |4 |2 |5 |4 |0 | -->Mesh Face C 2. Consider the <Mesh Face Table> instance from the previous example, with the addition of surface topology (that is, adjacent_face_table_present set to SE_TRUE). In this instance, each individual cell contains a {vertex number, adjacent mesh face number} pair. Node # | 1 2 3 4 5 ------------------------ Mesh Face # 1 |1,0|2,3|4,0|1,0|0,0| -->Mesh Face A 2 |2,0|3,0|6,0|5,3|2,0| -->Mesh Face B 3 |4,1|2,2|5,0|4,0|0,0| -->Mesh Face C FAQS: None. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Component of (two-way) one Finite Element Mesh instance Field Elements: SE_Integer_Positive mesh_face_count; /* * The mesh_face_count field specifies the total number of mesh faces * in the given <Mesh Face Table> instance. */ SE_Integer_Positive maximum_vertices_per_face; /* * The maximum_vertices_per_face field specifies the maximum * number of vertices in any one face element. */ SE_Boolean adjacent_face_table_present; /* * If the adjacent_face_table_present field is set to SE_TRUE, the given * <Finite Element Mesh> instance contains face adjacency information in * a separate table called the *adjacent face table*, which has the same * dimensions as the mesh face table. The values in the table are positive * integer values that specify face indices that represent the row in the * mesh face table. */ ------------------------------------------------------------------------------- Class Name: Model Definition: An instance of this DRM class specifies a representation of some environmental entity as a feature representation, a geometric representation, or both. This representation is usually a "generic" representation that can be referenced many times in a transmittal to create many instances of representations of similar environmental entities. The special case of the "null model" is the case in which both the feature and the geometric representation of the <Model> are empty - that is, they contain no primitives. This is instanced in cases where some state or condition of a representation exists but has no primitives, such as a representation of an environmental entity that has been completely destroyed, or that is out of viewing range. Primary Page in DRM Diagram: 2 Secondary Pages in DRM Diagram: 10 16 Example: 1. The lowest level of detail of a tank's turret. 2. A 1 degree by 1 degree tile of terrain containing thousands of instances to other <Model> instances. 3. An aircraft carrier that has both a geometric representation and a feature representation. 4. A data provider has an overall model (call it "car") made up of several components: top, two sides, four tires, back, front, underneath. When put into this data provider's <Model Library>, each of these components (as well as the overall "car" placeholder) is represented as an instance of <Model>. The data provider's organization has a place in its database where "car" is instanced, so that at an IG the "car" appears. This is represented in the resulting SEDRIS transmittal by a <Geometry Model Instance> of "car" appearing in the scope of an <Environment Root>. No other <Models> in this data provider's mapping to SEDRIS can reference the "car" <Model>. In this case, the "car" will have model_reference_type set to SE_MDL_REF_TYP_ROOT, since "car" can be instanced outside the scope of the <Model Library>, and in fact has a <Geometry Model Instance> under an <Environment Root>. On the other hand, the "top" <Model>, representing the top of the car, cannot be instanced outside the <Model Library> in the data provider's scheme of things, but only as part of more complex <Models>; consequently, the "top" <Model> has model_reference_type SE_MDL_REF_TYP_COMPONENT. 5. A producer has a <Model> "plane" that has several components (two wings, tail, fuselage, etc). However, the producer has a <Model> "ship" that instances "plane" to identify a ship with planes on its deck. The transmittal will instance "ship", and "ship" has model_reference_type = SE_MDL_REF_TYP_ROOT. Since the <Model> "plane" could be used elsewhere in the transmittal, its instance under "ship" has model_reference_type = SE_MDL_REF_TYP_ROOT_AND_COMPONENT. FAQS: Q. Why do I need a dynamic_model_processing flag? When I retrieve data from a SEDRIS transmittal, won't the dynamic <Model> instances also be processed? A. That depends entirely on how the data processing code was written. If the code starts at <Environment Root> and processes everything that the components of <Environment Root> eventually refer to, then dynamic <Model> instances will not be processed unless the dynamic <Model> instance(s) have a connection to the database (unless at least one reference is made to the dynamic <Model> instance(s) from somewhere within an <Environment Root> instance). In some Interchange systems, the way around this has been to "connect" the dynamic <Model> instance(s) to something like the SW corner of the database. However, this requires "adding" information, which is not the purpose of SEDRIS. Q. As a consumer, if I am given a transmittal containing a <Model Library>, I keep track of which <Model> instances are instanced by some <Environment Root> instance. Does this information correlate at all with the dynamic_model_processing information of each <Model> instance? A. Not necessarily. As <Model Library> instances are passed around projects and re-used for purposes other than that for which they were built, many <Model> instances in any given <Model Library> instance may not be referenced in a given <Environment Root> instance that references that <Model Library> instance. For instance, a <Model Library> instance may contain a <Model> representing a free-standing brick wall that by chance is not instanced by any <Environment Root>, but this does not make the brick wall dynamic. On the other hand, consider a <Model> representing a biplane, in which the propellers are able to rotate. An <Environment Root> representing the Smithsonian Air and Space Museum might contain an instance of this <Model> representing one of the exhibits. Q. Can't any <Model> really be dynamic in the database? All I have to do is put it through my special processing, and it moves. Couldn't all the flags for dynamic model processing therefore be set to SE_TRUE? A. Although the consumer can determine additional processing for any data read from SEDRIS, these flags are to be set by the data provider. If a <Model> instance is dynamic or has moving parts, then the data provider is required to provide this information. Q. Relating to the "has_moving_parts" flag, can't this information be derived by searching the entire <Model> for <LSR Transformation> instances that have <Control Links> attached to them? A. Yes. The information is provided to allow consumers to detect at the 'top' level of the <Model> whether it has moving parts anywhere within its scope, rather than forcing them to (potentially) search the entire <Model> to derive this information. Q. Why can <Model> have at most 2 <Hierarchy Summary Item> components? A. A <Model> is not required to have a hierarchy summary at all, but if a data provider wants to provide a summary of hierarchy, then a <Model> may have one summary for <Geometry Representation>, one summary for <Feature Representation>, or a summary of each. Q. Can <Model> have both <Hierarchy Summary Item> and <Primitive Summary Item> components (as opposed to either/or)? A. Yes. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Hierarchy Summary Constraints Model Reference Type Constraints Model Spatial Reference Frame No Attribute Conflicts Non Empty Model Composed of (two-way) zero or one Classification Data instance zero or one Feature Model instance zero or one Geometry Model instance a bounded set of 0..2 Hierarchy Summary Item instances zero or one Interface Template instance zero or one Overload Priority Index instance zero or more Primitive Summary Item instances zero or more Property Value instances zero or one Spatial Extent instance Composed of (two-way metadata) zero or one Access instance zero or one Citation instance zero or more Cross Reference instances zero or one Data Quality instance zero or one Description instance zero or one Time Constraints Data instance Component of (two-way) one Model Library instance Field Elements: SE_String name; /* * The name field specifies a meaningful short name. */ SE_SRF_Info srf_info; /* * The srf_info field specifies the SRF within which the given * <Model> instance is defined. */ SE_Model_Reference_Type model_reference_type; /* * The model_reference_type field specifies how the given * <Model> instance may be referenced within a transmittal. */ SE_Boolean dynamic_model_processing; /* * The value of the dynamic_model_processing field is SE_TRUE only * if the given <Model> instance is used by the * data provider to represent something that moves throughout the * environment, such as a vehicle. This flag is used to identify * information at the top level of model data, so that it can be * set at the level where model_reference_type is not * SE_MDL_REF_TYP_COMPONENT. */ SE_Boolean has_units; /* * The has_units field only takes effect if the srf_info are LSR; * has_units allows a data provider to say "This LSR Model is in metres" * vs. "This LSR Model is unitless (it has no units)". * In the former case, when an LSR model is specified in metres, it can * be used to represent real-world things, such as a tank, a ship, or a * tree. Sometimes such a <Model> is scaled when it is instanced. * (<Model>s representing trees are often scaled, but those representing * ships and tanks aren't.) * In the latter case, when an LSR model has no units, the <Model> * cannot be instanced into another SRF. One * example of something that might be represented in this manner * is a "logo model". */ SE_Boolean has_moving_parts; /* * The value of the has_moving_parts field is SE_TRUE only if the * given <Model> contains at least one <Control Link> attached to * an <LSR Transformation Step> instance that allows motion. */ ------------------------------------------------------------------------------- Class Name: Model Instance Template Index Definition: An instance of this DRM class is used by a <Feature Model Instance> (FMI) or <Geometry Model Instance> (GMI) to specify, for a given <Expression> component of the FMI / GMI, which <Variable> instance within the instanced <Model>'s <Interface Template> component is receiving that <Expression> instance as its value for that FMI / GMI. The mechanism works as follows. Consider a <Model> instance M which contains <Variable> instances. In order to be semantically valid, M is required to have an <Interface Template> component I, which by definition has an ordered set of association relationships to each <Variable> within M. The <Interface Template> instance I exists to provide access to all <Variable> instances within M, so that all FMIs and GMIs referring to M have a means of specifying values to be plugged into those <Variable> instances for a particular FMI or GMI referring to M. Specifically, a model instance object referring to M (whether a <Feature Model Instance> or a <Geometry Model Instance>) provides a set of <Expression> instances to be 'plugged in' to M's <Variable> instances. For a <Model> M with N <Variable> instances, M's <Interface Template> component will have 1..N ordered associations, one to each <Variable> instance within M. Each model instance of M will supply N <Expression> instances, together with a <Model Instance Template Index> instance for each <Expression> instance. The index within the <Model Instance Template Index> instance for a given <Expression> component specifies which of the N <Variable> instances of M is to be supplied with that <Expression> instance as its value. Primary Page in DRM Diagram: 7 Secondary Pages in DRM Diagram: 3 16 Example: See <Interface Template> for examples. FAQS: Q. What restrictions are there on the value of the index field? A. The index is a 1-based index, which (as described in the definition of <Model Instance Template Index>) serves as an index into the ordered list of <Expressions> provided by the given <Model>'s <Interface Template>. Consequently, if the <Model> contains N <Variables>, the <Interface Template> will have N ordered associates, so the value of a <Model Instance Template Index> instance for a given <Expression> being supplied by a model instance shall be between 1 and N inclusive. See also the constraints for this class, and for <Feature Model Instance>, <Geometry Model Instance>. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Distinct Link Objects Naturally, a given model instance is not permitted to supply conflicting <Expression> instances for a given <Variable>, so for any model instance instance, all its <Model Instance Template Index> instances shall be unique. Field Elements: SE_Integer_Positive index; /* * Given the <Model> that is being instanced, the index field * specifies an index into the ordered <Variable> list of that <Model>'s * <Interface Template>. */ ------------------------------------------------------------------------------- Class Name: Model Library Definition: An instance of this DRM class specifies the complete list of the unique <Model> instance(s) that are stored in the given transmittal. By traversing this library the user can retrieve the generic instances of all <Model> instances. Primary Page in DRM Diagram: 10 Secondary Pages in DRM Diagram: 1 2 Example: None. FAQS: Q. As a consumer, I would like to pre-process all <Model> components of a particular <Model Library> instance for efficiency reasons. Is there a way to uniquely identify <Model> objects, so that I can detect whether a given <Model> has already been processed? A. Yes. The <Model> objects can be placed in a lookup table in the consuming application, then referenced by the model instances. There are at least two ways to do this via the API. 1. If the API implementation being used supports the SE_Object_ID capability, the SE_Object_ID of the <Model> can be used as a lookup. The <Model> objects can be stored in a sorted table or hash table with the index based on the string value of the SE_Object_ID. 2. Alternately, retrieve all the <Geometry Model> and <Feature Model> instances within the given <Model Library> and place them in an array while assigning each the index into the array entry through the use of the SE_SetUserData() function in the level 0 API. When a <Geometry Model Instance> or <Feature Model Instance> is encountered, retrieve the associated <Geometry Model> or <Feature Model>, then retrieve the array index using the level 0 API function SE_GetUserData(). The user data will be valid as long as the <Geometry Model> (or <Feature Model>, as the case may be) has not been freed. Superclass: Library Constraints: Publishable Object Composed of (two-way) one or more {ordered} Model instances Composed of (two-way metadata) (inherited) zero or one Access instance zero or one Citation instance zero or one Description instance Component of (two-way) one Transmittal Root instance ------------------------------------------------------------------------------- Class Name: Moving Light Behaviour Definition: An instance of this DRM class specifies that the light moves along a specified path. Primary Page in DRM Diagram: 21 Example: 1. A moving light that represents traffic along a road. FAQS: None. Superclass: Light Rendering Behaviour Constraints: Publishable Object Composed of (two-way) one Reference Vector instance Component of (two-way) (inherited) one or more Light Rendering Properties instances Field Elements: SE_Long_Float speed; /* * The speed field specifies the speed, in metres per second, at which the * light moves along the path. */ SE_Long_Float delay; /* * The delay field, specified in seconds, is better characterized as a * pre-start; it allows a series of lights to appear asynchronous. */ ------------------------------------------------------------------------------- Class Name: Octant Data Definition: An instance of this DRM class specifies which octant of the octree that the associated branch of the given octant-related aggregation represents, where the octree as a whole corresponds to the entire aggregation. Primary Page in DRM Diagram: 4 Secondary Pages in DRM Diagram: 8 Example: See <Octant Related Features>, <Octant Related Geometry>. FAQS: None. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Field Elements: SE_Octant octant; /* * The octant field specifies the octant that the given branch represents. */ ------------------------------------------------------------------------------- Class Name: Octant Related Features Definition: An instance of this DRM class specifies an aggregation of <Feature Hierarchy> instances in which each component <Feature Hierarchy> represents a branch of an octant. The octant represented by a branch is specified by the <Octant Data> instance associated with that branch. The bounding region that the <Feature Hierarchy> components occupy is defined by the <Spatial Extent> component of the <Octant Related Features> instance. Primary Page in DRM Diagram: 8 Example: 1. Consider an octree that is represented in a transmittal by an <Octant Related Features> instance. The lower left octant of the octree is a <Union Of Features> aggregated by the <Octant Related Features> as follows: <Octant Related Features> <> | |-- <Octant Data> | octant = SE_OCTANT_LOWER_FRONTLEFT | <Union Of Features> FAQS: Q. If an <Octant Related Features> has less than 8 components, why is the data being organized under an <Octant Related Features> at all? A. An <Octant Related Features> is used when an object in the hierarchy contains spatial components that occupy a certain octant. These octants might not contain <Primitive Features>, which is why this class can have less than 8 components. Q. Where is the <Spatial Extent> component? A. <Octant Related Features> automatically has a <Spatial Extent> component, because it is a <Feature Hierarchy>. However, unlike other classes descended from <Feature Hierarchy>, <Octant Related Features> has a constraint stating that the <Spatial Extent> component is mandatory. Superclass: Aggregate Feature Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Crossing Associations Precedence of Property Set Index Non Cyclic Aggregations Colour Mapping Restrictions Image Mapping Functions and Texture Coordinates Distinct Link Objects Octant Related Organizing Principle Associated to (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or more Property Grid instances, each with a Base Association Data link object Associated by (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or more Property Grid instances, each with a Base Association Data link object zero or one Hierarchy Summary Item instance Composed of (two-way) (inherited) zero or one Classification Data instance zero or more Label instances zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or one Rendering Priority Level instance zero or one Reference Surface instance zero or more Sound Instance instances zero or more Base LOD Data instances zero or more Colour instances zero or more Feature Topology Hierarchy instances zero or more {ordered} Image Mapping Function instances zero or one Perimeter Data instance zero or one Presentation Domain instance zero or more Property Description instances zero or one Spatial Extent instance Composed of (two-way) a bounded set of 1..8 Feature Hierarchy instances, each with a Octant Data link object Composed of (two-way metadata) (inherited) zero or one Access instance zero or more Cross Reference instances zero or one Data Quality instance zero or one Description instance zero or one Time Constraints Data instance Component of (two-way) (inherited) zero or more Union Of Features instances zero or more Alternate Hierarchy Related Features instances, each with a Hierarchy Data link object zero or more Classification Related Features instances, each with a Classification Data link object zero or one Environment Root instance zero or one Feature Model instance zero or more LOD Related Features instances, each with a Base LOD Data link object zero or more Octant Related Features instances, each with a Octant Data link object zero or more Perimeter Related Features instances, each with a Perimeter Data link object zero or more Quadrant Related Features instances, each with a Quadrant Data link object zero or more Spatial Index Related Features instances, each with a Spatial Index Data link object zero or more State Related Features instances, each with a State Data link object zero or more Time Related Features instances, each with a Time Constraints Data link object Inherited Field Elements: SE_Boolean unique_descendants; /* * If the value of the unique_descendants field is SE_TRUE, each * descendant, that is, each <Feature Representation> instance that * exists in the component tree rooted at the given <Aggregate Feature>, * shall be unique, in the * sense that it shall appear in only one branch of this aggregation. * If unique_descendants is SE_FALSE, at least one * <Feature Representation> instance * appears in more than one branch of the aggregation. */ SE_Boolean strict_organizing_principle; /* * If the value of the strict_organizing_principle field is SE_TRUE, * each branch of this aggregation * strictly complies with the organizing principle for its * particular subclass. If this value is SE_FALSE, at least * one branch does not strictly comply with the given * organizing principle. See the organizing principle constraint * for each specific subclass for details. */ ------------------------------------------------------------------------------- Class Name: Octant Related Geometry Definition: An instance of this DRM class specifies an aggregation of <Geometry Hierarchy> instances in which each component <Geometry Hierarchy> represents a branch of an octant. The octant represented by a branch is specified by the <Octant Data> instance associated with that branch. The bounding region that the <Geometry Hierarchy> components occupy is defined by the <Spatial Extent> component of the <Octant Related Geometry> instance. Primary Page in DRM Diagram: 4 Example: 1. Consider an octree that is represented in a transmittal by an <Octant Related Geometry> instance. The lower left octant of the octree is a <Union Of Primitive Geometry> aggregated by the <Octant Related Geometry> as follows: <Octant Related Geometry> <> | |-- <Octant Data> | octant = SE_OCTANT_LOWER_FRONTLEFT | <Union Of Primitive Geometry> FAQS: Q. If an <Octant Related Geometry> has less than 8 components, why is the data being organized under an <Octant Related Geometry> at all? A. An <Octant Related Geometry> is used when an object in the hierarchy contains spatial components that occupy a certain octant. These octants might not contain <Primitive Geometry>, which is why this class can have less than 8 components. Q. Where is the <Spatial Extent> component? A. <Octant Related Geometry> automatically has a <Spatial Extent> component, because it is a <Geometry Hierarchy>. However, unlike other classes descended from <Geometry Hierarchy>, <Octant Related Geometry> has a constraint stating that the <Spatial Extent> component is mandatory. Superclass: Aggregate Geometry Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Cyclic Aggregations Precedence of Property Set Index Non Crossing Associations Colour Mapping Restrictions Distinct Geometric Centre Image Mapping Functions and Texture Coordinates Distinct Link Objects Octant Related Organizing Principle Associated to (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object Associated by (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or one Hierarchy Summary Item instance zero or more Reference Surface instances Composed of (two-way) (inherited) zero or one Classification Data instance zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or one Reference Surface instance zero or more Sound Instance instances zero or more Base LOD Data instances zero or one Bounding Volume instance zero or more Camera Point instances zero or more Collision Volume instances zero or more Colour instances zero or one Conformal Behaviour instance a bounded set of 0..3 Geometric Centre instances zero or more Geometry Topology Hierarchy instances zero or more {ordered} Image Mapping Function instances zero or one Light Rendering Properties instance zero or more Light Source instances zero or one LSR Transformation instance zero or one Overload Priority Index instance zero or one Perimeter Data instance zero or one Presentation Domain instance zero or more Property Description instances zero or one Rendering Priority Level instance zero or one Rendering Properties instance zero or one Spatial Extent instance zero or one Stamp Behaviour instance Composed of (two-way) a bounded set of 1..8 Geometry Hierarchy instances, each with a Octant Data link object Composed of (two-way metadata) (inherited) zero or one Time Constraints Data instance zero or one Access instance zero or more Cross Reference instances zero or one Data Quality instance zero or one Description instance Component of (two-way) (inherited) zero or more Alternate Hierarchy Related Geometry instances, each with a Hierarchy Data link object zero or more Animation Related Geometry instances zero or more Classification Related Geometry instances, each with a Classification Data link object zero or one Environment Root instance zero or one Geometry Model instance zero or more LOD Related Geometry instances, each with a Base LOD Data link object zero or more Octant Related Geometry instances, each with a Octant Data link object zero or more Perimeter Related Geometry instances, each with a Perimeter Data link object zero or more Quadrant Related Geometry instances, each with a Quadrant Data link object zero or more Separating Plane Relations instances, each with a Separating Plane Data link object zero or more Spatial Index Related Geometry instances, each with a Spatial Index Data link object zero or more State Related Geometry instances, each with a State Data link object zero or more Time Related Geometry instances, each with a Time Constraints Data link object zero or more Union Of Geometry Hierarchy instances Inherited Field Elements: SE_Boolean unique_descendants; /* * If the value of the unique_descendants field is SE_TRUE, each * descendant of this aggregation, * that is, each <Geometry Representation> instance that exists * in the component tree * rooted at the given <Aggregate Geometry>, shall be unique, in the * sense that it shall appear in only one branch of this aggregation. * If unique_descendants is SE_FALSE, at least one * <Geometry Representation> instance * appears in more than one branch of the aggregation. */ SE_Boolean strict_organizing_principle; /* * If the value of the strict_organizing_principle field is SE_TRUE, * each branch of this aggregation * strictly complies with the organizing principle for its * particular subclass. If this value is SE_FALSE, at least * one branch does not strictly comply with the given * organizing principle. See the organizing principle constraint * for each specific subclass for details. */ ------------------------------------------------------------------------------- Class Name: OM Augmented 3D Location Definition: An instance of this DRM class specifies a coordinate within the Augmented Oblique Mercator (AOM) 3D SRF. See [I18026] for a complete definition. Primary Page in DRM Diagram: 15 Example: 1. The Augmented Oblique Mercator SRF is used by a number of METOC data sets of importance to the modelling and simulation (M&S) community. FAQS: Q. Where can users obtain further information on AOM? A. See the SRM for additional details. Superclass: Location 3D Constraints: Publishable Object Environment Root Spatial Reference Frame Image Anchor Spatial Reference Frame Model Spatial Reference Frame Component of (two-way) (inherited) zero or more Arc instances zero or more Camera Point instances zero or more Directional Light Behaviour instances zero or one Distance LOD Data instance zero or more Ellipse instances zero or more Feature Edge instances zero or more Feature Face instances zero or one Feature Node instance zero or more Image Anchor instances zero or more Label instances zero or more Perimeter Data instances zero or more Point instances zero or more Property Grid Hook Point instances zero or one Reference Origin instance zero or more Reference Vector instances zero or more Spatial Extent instances zero or more Spatial Index Related Feature Topology instances zero or more Spatial Index Related Features instances zero or more Spatial Index Related Geometry instances zero or more Spatial Index Related Geometry Topology instances zero or more Tack Point instances zero or more Vertex instances zero or more World 3x3 instances zero or more World Transformation instances zero or one Attachment Point instance zero or more Base Positional Light instances zero or one Contact Point instance zero or more Geometric Centre instances zero or more Separating Plane instances zero or more Sound Instance instances zero or more Stamp Behaviour instances zero or more Volume instances zero or more Volume Light Behaviour instances zero or more Volume LOD Data instances zero or more Volume Object instances Field Elements: SRM_Map_Projection_3D_Coordinate coordinate; /* * The coordinate field specifies the coordinate values. */ ------------------------------------------------------------------------------- Class Name: OM Surface Location Definition: An instance of this DRM class specifies a coordinate within the Oblique Mercator (OM) Surface SRF. See [I18026] for a complete definition. Primary Page in DRM Diagram: 15 Example: 1. The Oblique Mercator SRF is used by a number of METOC data sets of importance to the modelling and simulation (M&S) community. FAQS: Q. Where can users obtain further information on OM? A. See the SRM for additional details. Superclass: Location Surface Constraints: Publishable Object Environment Root Spatial Reference Frame Image Anchor Spatial Reference Frame Model Spatial Reference Frame Component of (two-way) (inherited) zero or more Arc instances zero or more Camera Point instances zero or more Directional Light Behaviour instances zero or one Distance LOD Data instance zero or more Ellipse instances zero or more Feature Edge instances zero or more Feature Face instances zero or one Feature Node instance zero or more Image Anchor instances zero or more Label instances zero or more Perimeter Data instances zero or more Point instances zero or more Property Grid Hook Point instances zero or one Reference Origin instance zero or more Reference Vector instances zero or more Spatial Extent instances zero or more Spatial Index Related Feature Topology instances zero or more Spatial Index Related Features instances zero or more Spatial Index Related Geometry instances zero or more Spatial Index Related Geometry Topology instances zero or more Tack Point instances zero or more Vertex instances zero or more World 3x3 instances zero or more World Transformation instances Field Elements: SRM_Map_Projection_Surface_Coordinate coordinate; /* * The coordinate field specifies the coordinate values. */ ------------------------------------------------------------------------------- Class Name: Overload Priority Index Definition: An instance of this DRM class specifies an overload management priority to an instance of <Model> or of <Geometry Model Instance>. This priority is intended to allow a modeller to indicate that certain instances of <Model> are more important than others, so that in an overload situation, the more important <Model> instances will be displayed and the <Model> instances of lesser importance may be simplified or dropped from the display. Note that the actual effect of an instance of <Overload Priority Index> within an application is entirely dependent on the application. Primary Page in DRM Diagram: 2 Secondary Pages in DRM Diagram: 3 4 7 Example: 1. In a SEDRIS transmittal designed for a simulation that is more concerned with rotary-winged aircraft than fixed-winged aircraft, each helicopter <Model> instance may have an <Overload Priority Index> instance of 1, while each airplane <Model> instance has an <Overload Priority Index> instance of 2. FAQS: None. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Component of (two-way) zero or more Aggregate Geometry instances zero or more Geometry Model Instance instances zero or more Model instances Field Elements: SE_Short_Integer overload_priority; /* * The overload_priority field is interpreted as * 1 = Highest Priority, 2 = Next Highest Priority... */ ------------------------------------------------------------------------------- Class Name: Parallelepiped Volume Extent Definition: An instance of this DRM class specifies the length and orientation of each of the edges of a parallelepiped volume relative to the location of the volume centre (which is specified separately by the aggregate of the <Parallelepiped Volume Extent>). Primary Page in DRM Diagram: 9 Example: 1. Consider a <Bounding Volume> instance for a representation of a building, such that the bounding volume is specified by a <Parallelepiped Volume Extent> instance with: edge_length[0]=width, first <Reference Vector> instance points to the right, edge_length[1]=depth, second <Reference Vector> instance points to the back, and edge_length[2]=height, third <Reference Vector> instance points up. FAQS: Q. Given the location of the centre, how do I compute the eight corners of the parallelepiped? A. If V1, V2, and V3 are the three <Reference Vector> components and L0 is the <Location 3D> of the <Volume>, then the vector equation for a parallelepiped corner C is given by: C = L0+(+/-0.5)*edge_length[0]*V1 +(+/-0.5)*edge_length[1]*V2 +(+/-0.5)*edge_length[2]*V3 The eight combinations of three (+/-0.5) coefficients give eight corners. Q. Given the three edges emanating from a corner of a parallelepiped, how are edge lengths and <Reference Vector> instances computed? A. If C0 is the corner location and C[i] is the corner at the other end edge i, then: edge_length[i-1] = length of vector ( C[i]-C0 ) and the i-th reference vector is (1/edge_length[i-1])*(C[i]-C0) for i=1,2,3. Superclass: Volume Extent Constraints: Publishable Object Parallelepiped Structure Composed of (two-way) exactly 3 {ordered} Reference Vector instances Component of (two-way) (inherited) zero or more Volume instances zero or more Volume Light Behaviour instances zero or more Volume LOD Data instances zero or more Volume Object instances Field Elements: SE_Long_Float edge_length[]; /* * Each entry of the edge_length array is measured in metres, * and shall be > 0.0. */ ------------------------------------------------------------------------------- Class Name: Perimeter Data Definition: An instance of this DRM class specifies the perimeter of the region corresponding to the attributed object. The ordered <Location> components of a <Perimeter Data> instance specify the perimeter (outline) of the given region by specifying an implicit line between each pair of <Location> components (i, i+1), with a last implicit line connecting the last <Location> component to the first <Location> component. When a <Perimeter Data> instance is provided as a component of another object, the aggregate is the attributed object for which the perimeter is being specified. When a <Perimeter Data> instance is provided as a link object in a perimeter-related organization, the component object on the associated branch is the attributed object for which the perimeter is being specified. Primary Page in DRM Diagram: 9 Secondary Pages in DRM Diagram: 4 8 11 22 Example: 1. Consider a thematic coverage in which the spatial extent forms a collection of tiles, where some of the tiles (due to shorelines) have irregular shapes. Consequently, this coverage is represented by a <Perimeter Related Featues> organization, in which each tile's boundary can be correctly represented by a <Perimeter Data>. Note that while a rectangular tile can be described by a <Perimeter Data> instance with 4 <Location> instances, an irregularly shaped tile may require a much larger number of <Location> instances. 2. Consider a polygonal representation of a region of terrain, organized into tiles based on political boundaries, such as different provinces within a country or different countries. Many of the tiles in this example have irregular shapes, so each tile is organized under a separate <Geometry Hierarchy> component of a <Perimeter Related Geometry>, with the corresponding <Perimeter Data> describing the boundary of that tile. 3. See also <Perimeter Related Geometry>. FAQS: None. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Non Self Overlapping Perimeter Data Locations Composed of (two-way) 3 or more {ordered} Location instances Component of (two-way) zero or more Aggregate Feature instances zero or more Aggregate Geometry instances zero or more Sound Instance instances ------------------------------------------------------------------------------- Class Name: Perimeter Related Feature Topology Definition: An instance of this DRM class is a <Feature Topology Hierarchy> that spatially organizes its components into a collection of (potentially) irregularly shaped regions, each defined by a <Perimeter Data> instance. Primary Page in DRM Diagram: 11 Example: 1. The geographic extent of a thematic coverage might be divided up into a collection of tiles. Due to political boundaries or shorelines, some of these tiles might have irregular shapes. The <Feature Topology> instances contained within each tile would be organized into one of the components of a <Perimeter Related Feature Topology> instance. FAQS: Q. May the regions defined by the components of a <Perimeter Related Feature Topology> instance overlap? A. No. The regions defined by the components of a <Perimeter Related Feature Topology> instance should fully partition the topological surface. Q. May the same <Feature Topology> instance be contained within more than one of the components of a <Perimeter Related Feature Topology> instance? A. No. The organization of <Feature Topology> instances is strict, such that each <Feature Topology> instance shall be located within the region defined by a single component. Superclass: Feature Topology Hierarchy Constraints: Publishable Object Distinct Link Objects Perimeter Related Organizing Principle Composed of (two-way) one or more Union Of Feature Topology instances, each with a Perimeter Data link object Component of (two-way) (inherited) zero or more Aggregate Feature instances Inherited Field Elements: SE_Feature_Topology_Level feature_topology_level; /* * The feature_topology_level field specifies the level of * feature topology that is present within the hierarchy * represented by the given <Feature Topology Hierarchy> * instance. */ ------------------------------------------------------------------------------- Class Name: Perimeter Related Features Definition: An instance of this DRM class is an <Aggregate Feature> that spatially organizes its component <Feature Hierarchy> instances into a collection of (potentially) irregularly shaped regions, each defined by a <Perimeter Data> instance. That is, each component <Feature Hierarchy> is contained within the perimeter area specified by the <Perimeter Data> associated with that component. Primary Page in DRM Diagram: 8 Example: None. FAQS: Q. May the regions defined by the components of a <Perimeter Related Features> instance overlap? A. See <Perimeter Related Organizing Principle>. Q. May the same <Feature Representation> be contained within more than one of the components of a <Perimeter Related Features> instance? A. See <Perimeter Related Organizing Principle>. Q. Does each of the components of a <Perimeter Related Features> instance form an independent topological surface? A. Normally, yes. In this case, each component <Feature Hierarchy> would have its own <Feature Topology Hierarchy>. However, the <Feature Topology> instances in all the components may also form a single topological surface, in which case only the <Perimeter Related Features> instance itself would have such a topology hierarchy. Superclass: Aggregate Feature Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Crossing Associations Precedence of Property Set Index Non Cyclic Aggregations Colour Mapping Restrictions Image Mapping Functions and Texture Coordinates Distinct Link Objects Perimeter Related Organizing Principle Associated to (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or more Property Grid instances, each with a Base Association Data link object Associated by (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or more Property Grid instances, each with a Base Association Data link object zero or one Hierarchy Summary Item instance Composed of (two-way) (inherited) zero or one Classification Data instance zero or more Label instances zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or one Rendering Priority Level instance zero or one Reference Surface instance zero or more Sound Instance instances zero or more Base LOD Data instances zero or more Colour instances zero or more Feature Topology Hierarchy instances zero or more {ordered} Image Mapping Function instances zero or one Perimeter Data instance zero or one Presentation Domain instance zero or more Property Description instances zero or one Spatial Extent instance Composed of (two-way) one or more Feature Hierarchy instances, each with a Perimeter Data link object Composed of (two-way metadata) (inherited) zero or one Access instance zero or more Cross Reference instances zero or one Data Quality instance zero or one Description instance zero or one Time Constraints Data instance Component of (two-way) (inherited) zero or more Union Of Features instances zero or more Alternate Hierarchy Related Features instances, each with a Hierarchy Data link object zero or more Classification Related Features instances, each with a Classification Data link object zero or one Environment Root instance zero or one Feature Model instance zero or more LOD Related Features instances, each with a Base LOD Data link object zero or more Octant Related Features instances, each with a Octant Data link object zero or more Perimeter Related Features instances, each with a Perimeter Data link object zero or more Quadrant Related Features instances, each with a Quadrant Data link object zero or more Spatial Index Related Features instances, each with a Spatial Index Data link object zero or more State Related Features instances, each with a State Data link object zero or more Time Related Features instances, each with a Time Constraints Data link object Inherited Field Elements: SE_Boolean unique_descendants; /* * If the value of the unique_descendants field is SE_TRUE, each * descendant, that is, each <Feature Representation> instance that * exists in the component tree rooted at the given <Aggregate Feature>, * shall be unique, in the * sense that it shall appear in only one branch of this aggregation. * If unique_descendants is SE_FALSE, at least one * <Feature Representation> instance * appears in more than one branch of the aggregation. */ SE_Boolean strict_organizing_principle; /* * If the value of the strict_organizing_principle field is SE_TRUE, * each branch of this aggregation * strictly complies with the organizing principle for its * particular subclass. If this value is SE_FALSE, at least * one branch does not strictly comply with the given * organizing principle. See the organizing principle constraint * for each specific subclass for details. */ ------------------------------------------------------------------------------- Class Name: Perimeter Related Geometry Definition: An instance of this DRM class is an <Aggregate Geometry> that spatially organizes its component <Geometry Hierarchy> instances into a collection of (potentially) irregularly shaped regions, each defined by a <Perimeter Data> instance. That is, each component <Geometry Hierarchy> is contained within the perimeter area specified by the <Perimeter Data> associated with that component. Primary Page in DRM Diagram: 4 Example: None. FAQS: Q. May the regions defined by the components of a <Perimeter Related Geometry> instance overlap? A. See <Perimeter Related Organizing Principle>. Q. May the same <Geometry Representation> be contained within more than one of the components of a <Perimeter Related Geometry> instance? A. See <Perimeter Related Organizing Principle>. Q. Does each of the components of a <Perimeter Related Geometry> instance form an independent topological surface? A. Normally, yes. In this case, each component <Geometry Hierarchy> would have its own <Geometry Topology Hierarchy>. However, the <Geometry Topology> instances in all the components may also form a single topological surface, in which case only the <Perimeter Related Geometry> instance itself would have such a topology hierarchy. Superclass: Aggregate Geometry Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Cyclic Aggregations Precedence of Property Set Index Non Crossing Associations Colour Mapping Restrictions Distinct Geometric Centre Image Mapping Functions and Texture Coordinates Distinct Link Objects Perimeter Related Organizing Principle Associated to (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object Associated by (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or one Hierarchy Summary Item instance zero or more Reference Surface instances Composed of (two-way) (inherited) zero or one Classification Data instance zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or one Reference Surface instance zero or more Sound Instance instances zero or more Base LOD Data instances zero or one Bounding Volume instance zero or more Camera Point instances zero or more Collision Volume instances zero or more Colour instances zero or one Conformal Behaviour instance a bounded set of 0..3 Geometric Centre instances zero or more Geometry Topology Hierarchy instances zero or more {ordered} Image Mapping Function instances zero or one Light Rendering Properties instance zero or more Light Source instances zero or one LSR Transformation instance zero or one Overload Priority Index instance zero or one Perimeter Data instance zero or one Presentation Domain instance zero or more Property Description instances zero or one Rendering Priority Level instance zero or one Rendering Properties instance zero or one Spatial Extent instance zero or one Stamp Behaviour instance Composed of (two-way) one or more Geometry Hierarchy instances, each with a Perimeter Data link object Composed of (two-way metadata) (inherited) zero or one Time Constraints Data instance zero or one Access instance zero or more Cross Reference instances zero or one Data Quality instance zero or one Description instance Component of (two-way) (inherited) zero or more Alternate Hierarchy Related Geometry instances, each with a Hierarchy Data link object zero or more Animation Related Geometry instances zero or more Classification Related Geometry instances, each with a Classification Data link object zero or one Environment Root instance zero or one Geometry Model instance zero or more LOD Related Geometry instances, each with a Base LOD Data link object zero or more Octant Related Geometry instances, each with a Octant Data link object zero or more Perimeter Related Geometry instances, each with a Perimeter Data link object zero or more Quadrant Related Geometry instances, each with a Quadrant Data link object zero or more Separating Plane Relations instances, each with a Separating Plane Data link object zero or more Spatial Index Related Geometry instances, each with a Spatial Index Data link object zero or more State Related Geometry instances, each with a State Data link object zero or more Time Related Geometry instances, each with a Time Constraints Data link object zero or more Union Of Geometry Hierarchy instances Inherited Field Elements: SE_Boolean unique_descendants; /* * If the value of the unique_descendants field is SE_TRUE, each * descendant of this aggregation, * that is, each <Geometry Representation> instance that exists * in the component tree * rooted at the given <Aggregate Geometry>, shall be unique, in the * sense that it shall appear in only one branch of this aggregation. * If unique_descendants is SE_FALSE, at least one * <Geometry Representation> instance * appears in more than one branch of the aggregation. */ SE_Boolean strict_organizing_principle; /* * If the value of the strict_organizing_principle field is SE_TRUE, * each branch of this aggregation * strictly complies with the organizing principle for its * particular subclass. If this value is SE_FALSE, at least * one branch does not strictly comply with the given * organizing principle. See the organizing principle constraint * for each specific subclass for details. */ ------------------------------------------------------------------------------- Class Name: Perimeter Related Geometry Topology Definition: An instance of this DRM class is a <Geometry Topology Hierarchy> that spatially organizes its components into a collection of (potentially) irregularly shaped regions, each defined by a <Perimeter Data> instance. Primary Page in DRM Diagram: 11 Example: None. FAQS: None. Superclass: Geometry Topology Hierarchy Constraints: Publishable Object Distinct Link Objects Perimeter Related Organizing Principle Composed of (two-way) one or more Union Of Geometry Topology instances, each with a Perimeter Data link object Component of (two-way) (inherited) zero or more Aggregate Geometry instances Inherited Field Elements: SE_Geometry_Topology_Level geometry_topology_level; /* * The geometry_topology_level field specifies the level of * geometry topology that is present within the hierarchy * represented by the given <Geometry Topology Hierarchy> * instance. */ ------------------------------------------------------------------------------- Class Name: Point Definition: An instance of this DRM class specifies an attributed location, which conceptually has no spatial extents. Primary Page in DRM Diagram: 5 Secondary Pages in DRM Diagram: 13 Example: 1. The abstract representation of the sun, a <Point> in space from which the light emanates. 2. The headlight of a jeep as viewed from a kilometre away. FAQS: None. Superclass: Primitive Geometry Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Cyclic Aggregations Precedence of Property Set Index Colour Mapping Restrictions Continuous LOD Restrictions Image Mapping Functions and Texture Coordinates Nested Primitive Geometry Associated with (two-way) zero or one Geometry Node instance Composed of (two-way) (inherited) zero or one Classification Data instance zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or more Colour instances zero or more {ordered} Image Mapping Function instances zero or one Light Rendering Properties instance zero or one Presentation Domain instance zero or one Rendering Priority Level instance zero or one Rendering Properties instance zero or more Tack Point instances zero or one Union Of Primitive Geometry instance Composed of (two-way) zero or one Conformal Behaviour instance one Location instance zero or more Reference Vector instances zero or more {ordered} Texture Coordinate instances Composed of (two-way metadata) (inherited) zero or one Time Constraints Data instance Component of (two-way) (inherited) zero or more Union Of Primitive Geometry instances ------------------------------------------------------------------------------- Class Name: Point Feature Definition: An instance of this DRM class specifies a <Primitive Feature> for which the spatial information needed for the representation can be abstracted to a single topologically significant location. This is sometimes referred to as a "zero-dimensional" location, since the topology associated with a <Point Feature> does not provide length, width, or height information. Primary Page in DRM Diagram: 8 Secondary Pages in DRM Diagram: 12 Example: 1. Consider a well represented as a <Point Feature>. The <Point Feature> has a <Classification Data> classifying it as a well, an associated <Feature Node> specifying its location, and <Property Value> components specifying its depth below the terrain surface and the potability of the water it contains. 2. Consider a road interchange represented as a <Point Feature>. The <Point Feature> has a <Classification Data> classifying it as ECC_ROAD_INTERCHANGE, and an associated <Feature Node> specifying its location. In addition, the <Feature Node> in this example is associated with some <Feature Edge> instances that are part of the topology of some <Linear Feature> instances representing the roads in question. 3. Consider a small building represented as a <Point Feature>. It has a <Feature Node> that defines its location, <Classification Data> that identifies it as a building, and a set of <Property Value> components that describe its characteristics, such as its height and its building functional category. FAQS: Q. Can a <Point Feature> consist of multiple <Feature Node> instances? A. No. A <Point Feature> shall consist of only a single <Feature Node>. Superclass: Primitive Feature Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Crossing Associations Precedence of Property Set Index Colour Mapping Restrictions Image Mapping Functions and Texture Coordinates Associated to (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or more Property Grid instances, each with a Base Association Data link object Associated by (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or more Property Grid instances, each with a Base Association Data link object Associated with (two-way) one Feature Node instance Composed of (two-way) (inherited) zero or one Classification Data instance zero or more Label instances zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or one Rendering Priority Level instance zero or more Colour instances zero or more {ordered} Image Mapping Function instances zero or one Presentation Domain instance zero or one Spatial Extent instance Composed of (two-way metadata) (inherited) zero or one Access instance zero or more Cross Reference instances zero or one Data Quality instance zero or one Description instance zero or one Time Constraints Data instance Component of (two-way) (inherited) zero or more Union Of Features instances ------------------------------------------------------------------------------- Class Name: Polar 2D Location Definition: An instance of this DRM class specifies a coordinate within the Polar 2D SRF. See [I18026] for a complete definition. Primary Page in DRM Diagram: 15 Example: None. FAQS: None. Superclass: Location 2D Constraints: Publishable Object Environment Root Spatial Reference Frame Image Anchor Spatial Reference Frame Model Spatial Reference Frame Component of (two-way) (inherited) zero or more Arc instances zero or more Camera Point instances zero or more Directional Light Behaviour instances zero or one Distance LOD Data instance zero or more Ellipse instances zero or more Feature Edge instances zero or more Feature Face instances zero or one Feature Node instance zero or more Image Anchor instances zero or more Label instances zero or more Perimeter Data instances zero or more Point instances zero or more Property Grid Hook Point instances zero or one Reference Origin instance zero or more Reference Vector instances zero or more Spatial Extent instances zero or more Spatial Index Related Feature Topology instances zero or more Spatial Index Related Features instances zero or more Spatial Index Related Geometry instances zero or more Spatial Index Related Geometry Topology instances zero or more Tack Point instances zero or more Vertex instances zero or more World 3x3 instances zero or more World Transformation instances Field Elements: SRM_Polar_2D_Coordinate coordinate; /* * The coordinate field specifies the coordinate values. */ ------------------------------------------------------------------------------- Class Name: Polygon Definition: An instance of this DRM class specifies a bounded portion of a plane, defined by a set of three or more <Vertex> instances listed in counter-clockwise order. The final segment connecting the last <Vertex> instance to the first <Vertex> instance is implicit, not explicit; that is, first <Vertex> instance is not duplicated to also appear as the last <Vertex> instance of the <Polygon> instance). Primary Page in DRM Diagram: 5 Secondary Pages in DRM Diagram: 13 Example: 1. One of the surfaces representing the geometry of a vehicle. FAQS: None. Superclass: Surface Geometry Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Cyclic Aggregations Precedence of Property Set Index Colour Mapping Restrictions Continuous LOD Restrictions Image Mapping Functions and Texture Coordinates Nested Primitive Geometry Polygon As Bounded Plane Associated with (two-way) a bounded set of 0..2 {ordered} Geometry Face instances Composed of (two-way) (inherited) zero or one Classification Data instance zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or more Colour instances zero or more {ordered} Image Mapping Function instances zero or one Light Rendering Properties instance zero or one Presentation Domain instance zero or one Rendering Priority Level instance zero or one Rendering Properties instance zero or more Tack Point instances zero or one Union Of Primitive Geometry instance Composed of (two-way) zero or one Polygon Control Link instance zero or more Reference Vector instances 3 or more {ordered} Vertex instances Composed of (two-way metadata) (inherited) zero or one Time Constraints Data instance Component of (two-way) (inherited) zero or more Union Of Primitive Geometry instances Component of (two-way) zero or more Polyhedron instances Field Elements: SE_Polygon_Flag polygon_flags; /* * The polygon_flags field specifies the set of SE_Polygon_Flag * tokens applicable to the given <Polygon> instance. */ ------------------------------------------------------------------------------- Class Name: Polygon Control Link Definition: An instance of this DRM class is a <Control Link> instance that has been specialized to control the polygon_flags (in a set) in one or more instances of <Polygon>. Primary Page in DRM Diagram: 17 Secondary Pages in DRM Diagram: 5 Example: 1. The Invisible flag on a <Polygon> is set to SE_TRUE. A <Polygon Control Link> can reset some polygon_flags values. In this case, it could set the Invisible flag to be SE_FALSE. FAQS: Q. Why isn't there a single <Polygon Control Link> field to control the polygon_flags field of the affected <Polygon> instance(s)? A. The polygon_flags field of <Polygon> is a set, and users of <Polygon Control Link> are not trying to change the set in question. What users are doing is setting (or clearing) individual boolean flags within the set. Consequently, instead of having a single index field for the polygon_flags field, <Polygon Control Link> provides separate index fields for each flag that can be manipulated, so that each can be driven by a separate controlling <Expression> instance. Q. Why aren't there <Polygon Control Link> fields for each of the individual flags within polygon_flags? A. Simple! No one has asked to be able to control the other flags. If you'd like to be able to control another flag, we'd be happy to consider any change request you might offer. Superclass: Control Link Constraints: Publishable Object Composed of (two-way) (inherited) one or more {ordered} Expression instances Component of (two-way) one or more Polygon instances Inherited Field Elements: SE_String description; /* * The description field specifies a text description of the given * <Control Link> instance's purpose. */ Field Elements: SE_Integer_Unsigned hat_test_expr_index; /* * If non-zero, the value of the hat_test_expr_index field is * the index of an ordered <Expression> * component of the given <Polygon Control Link> instance. The * specified <Expression> instance shall be boolean-valued, and * shall control the inclusion or exclusion of Hat_Test within the * polygon_flags field of the affected <Polygon> instances such * that SE_TRUE means that Hat_Test shall be added to polygon_flags, * and SE_FALSE that Hat_Test shall be cleared from polygon_flags. * * If hat_test_expr_index is 0, the Hat_Test portion of the * polygon_flags of the affected <Polygon> instances is not * affected. */ SE_Integer_Unsigned collidible_expr_index; /* * If non-zero, the value of the collidible_expr_index field * specifies the index of an ordered <Expression> * component of the given <Polygon Control Link> instance. The * specified <Expression> instance shall be boolean-valued, and * shall control the inclusion or exclusion of Collidible within * the polygon_flags field of the affected <Polygon> instances * such that SE_TRUE means that Collidible shall be added to the * polygon_flags, and SE_FALSE that Collidible shall be cleared * from the polygon_flags. * * If collidible_expr_index is 0, the Collidible portion of the * polygon_flags of the affected <Polygon> instances is not * affected. */ SE_Integer_Unsigned invisible_expr_index; /* * If non-zero, the value of the invisible_expr_index field * specifies the index of an ordered <Expression> * component of the given <Polygon Control Link> instance. The * specified <Expression> instance shall be boolean-valued, and * shall control the inclusion or exclusion of Invisible within * the polygon_flags field of the affected <Polygon> instances * such that SE_TRUE means that Invisible shall be added to the * polygon_flags, and SE_FALSE that Invisible shall be cleared * from the polygon_flags. * * If invisible_expr_index is 0, the Invisible portion of the * polygon_flags of the affected <Polygon> instances is not * affected. */ SE_Integer_Unsigned laser_range_finding_expr_index; /* * If non-zero, the value of the laser_range_finding_expr_index * field is the index of an ordered <Expression> * component of the given <Polygon Control Link> instance. The * specified <Expression> instance shall be boolean-valued, and * shall control the inclusion or exclusion of Laser_Range_Finding * within the polygon_flags field of the affected <Polygon> * instances such that SE_TRUE means that Laser_Range_Finding shall * be added to the polygon_flags, and SE_FALSE that * Laser_Range_Finding shall be cleared from the polygon_flags. * * If laser_range_finding_expr_index is 0, the * Laser_Range_Finding portion of the polygon_flags of * the affected <Polygon> instances is not affected. */ ------------------------------------------------------------------------------- Class Name: Polyhedron Definition: An instance of this DRM class is a <Volume Geometry> that encloses a bounded region of three-dimensional space, such as a building or a room within a building. Primary Page in DRM Diagram: 5 Secondary Pages in DRM Diagram: 13 Example: 1. Consider a <Polyhedron> representing a building. It has a collection of component <Polygons>, which defines its shape; an associated <Geometry Volume>, which defines its topological relationships; a <Classification Data> component that classifies it as an ECC_BUILDING; <Property Value> components that describe its characteristics, such as material composition, and a <Label> that identifies it as "The Empire State Building". FAQS: Q. Is Level 5 feature topology required in order for <Polyhedron> instances to exist? A. No. In order for <Polyhedrons> to exist, the SRF must be three-dimensional, and at least four <Polygon> instances that enclose a region of space must exist. Superclass: Volume Geometry Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Cyclic Aggregations Precedence of Property Set Index Colour Mapping Restrictions Continuous LOD Restrictions Image Mapping Functions and Texture Coordinates Nested Primitive Geometry Polyhedron Structure Associated with (two-way) one Geometry Volume instance Composed of (two-way) (inherited) zero or one Classification Data instance zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or more Colour instances zero or more {ordered} Image Mapping Function instances zero or one Light Rendering Properties instance zero or one Presentation Domain instance zero or one Rendering Priority Level instance zero or one Rendering Properties instance zero or more Tack Point instances zero or one Union Of Primitive Geometry instance Composed of (two-way) 4 or more Polygon instances Composed of (two-way metadata) (inherited) zero or one Time Constraints Data instance Component of (two-way) (inherited) zero or more Union Of Primitive Geometry instances ------------------------------------------------------------------------------- Class Name: Positional Light Definition: An instance of this DRM class is a <Base Positional Light> that radiates in all directions from a specified point in 3D space, affecting only objects within the sphere of influence centred at that point and specified by the value of its radius field. Primary Page in DRM Diagram: 21 Example: 1. A streetlight on a pole. FAQS: None. Superclass: Base Positional Light Constraints: Publishable Object Composed of (two-way) (inherited) one Ambient Colour instance one Diffuse Colour instance zero or one Light Source Control Link instance one Specular Colour instance one Location 3D instance Component of (two-way) (inherited) one or more Aggregate Geometry instances Inherited Field Elements: SE_Boolean apply_to_children; /* * For a <Light Source> instance (that is, an instance of one of the * concrete classes descended from the class) that is a component of * some <Aggregate Geometry>, apply_to_children provides a mechanism * for limiting the scope of the <Light Source>. If apply_to_children * is SE_TRUE, only <Primitive Geometry> in the component tree of those * <Aggregate Geometry> instances are affected by the given * <Light Source>. If apply_to_children is SE_FALSE, the <Light Source> * is not limited to the scope of those <Aggregate Geometry> instances * and thus applies globally. */ SE_Boolean override_positional_lights; /* * For a <Light Source> instance that is a component of some * <Aggregate Geometry>, override_positional_lights provides a * mechanism to indicate with a value of SE_TRUE that the effect of the * given <Light Source> overrides that of any <Base Positional Light> * instances that would have otherwise applied to that * <Aggregate Geometry> - for example, if the given <Light Source> is * so close to the affected <Geometry Representation> that the * <Base Positional Light> effects would be negligible. If * override_positional_lights = SE_FALSE, the effect of the * given <Light Source> is combined with that * of any <Base Positional Light> instances that are already in effect. */ SE_Boolean override_infinite_lights; /* * For a <Light Source> instance (that is, an instance of one of the * concrete classes descended from the class) that is a component of * some <Aggregate Geometry>, override_infinite_lights provides a * mechanism to indicate with a value of SE_TRUE that the effect of the * given <Light Source> overrides that of any <Infinite Light> * instances that would have otherwise applied to that * <Aggregate Geometry>. If override_infinite_lights = SE_FALSE, * the effect of the given <Light Source> is combined with that * of any <Infinite Light> instances that are already in effect. */ SE_Boolean active_light_value; /* * A value of SE_TRUE for the active_light_value field indicates * that the light is on, while a value of * SE_FALSE indicates that the light is off. For a <Light Source> * with a <Light Source Control Link> instance as a component, * this is the default state of the light. */ SE_Float radius; /* * The radius field, which is specified in metres, together with * the <Location 3D> component specifies the zone of influence * of the given <Base Positional Light> instance. */ SE_Long_Float constant_attenuation_factor; /* * The constant_attenuation_factor field is the constant "a" * in the attenuation quadratic (a + bd + cd**2). */ SE_Long_Float linear_attenuation_factor; /* * The linear_attenuation_factor field is the constant "b" * in the attenuation quadratic (a + bd + cd**2). */ SE_Long_Float quadratic_attenuation_factor; /* * The quadratic_attenuation_factor field is the constant "c" * in the attenuation quadratic (a + bd + cd**2). */ ------------------------------------------------------------------------------- Class Name: Predefined Function Definition: An instance of this DRM class is a <Function> for which the function being used to determine the value of the expression is one of those enumerated by SE_Predefined_Function. Primary Page in DRM Diagram: 16 Example: 1. See <Property Table Reference Control Link>, example 1. FAQS: Q. Why isn't <my favorite function> included in the SE_Predefined_Function? A. Simple! We didn't think of it. If you'd like to see it, we'd be happy to consider any change request you might offer. Superclass: Function Constraints: Publishable Object Non Cyclic Aggregations Composed of (two-way) (inherited) zero or more {ordered} Expression instances Composed of (two-way) zero or one Property Table Reference instance Component of (two-way) (inherited) zero or more Control Link instances zero or more Feature Model Instance instances, each with a Model Instance Template Indices link object zero or more Function instances zero or more Geometry Model Instance instances, each with a Model Instance Template Indices link object Inherited Field Elements: EDCS_Attribute_Value_Type value_type; /* * The value_type of a <Function> instance returns the type of value * produced when the <Function> instance is evaluated for its arguments. */ Field Elements: SE_Predefined_Function function; /* * For a <Predefined Function> instance, the function field specifies * the function to be used to determine the value of the expression * when it is evaluated. */ ------------------------------------------------------------------------------- Class Name: Presentation Domain Definition: An instance of this DRM class specifies the set of sensor domains in which the attributed object is applicable. Primary Page in DRM Diagram: 14 Secondary Pages in DRM Diagram: 4 5 8 19 21 22 Example: None. FAQS: None. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Component of (two-way) zero or more Aggregate Feature instances zero or more Aggregate Geometry instances zero or more Colour instances zero or more Colour Table instances zero or more Image instances zero or more Image Mapping Function instances zero or more Primitive Feature instances zero or more Primitive Geometry instances zero or more Property Set instances zero or more Rendering Properties instances Field Elements: SE_Presentation_Domain presentation_domain; /* * The presentation_domain field specifies the set of * SE_Presentation_Domain tokens specifying the * sensor domains represented by the given <Presentation Domain> * instance. */ ------------------------------------------------------------------------------- Class Name: Primitive Colour Definition: An instance of this DRM class specifies a single colour, consisting of individual ambient, diffuse, emissive, and specular components. Generally speaking, to determine the colour of an object illuminated by a light source X, combine the <Ambient Colour> with the ambient component of X, the <Diffuse Colour> with the diffuse component of X, the <Specular Colour> with the specular component of X, add any intensity due to the <Emissive Colour> (which isn't affected by X.) Primary Page in DRM Diagram: 14 Example: 1. Consider a <Geometry Model Instance> of a computer monitor, placed on top of a <Geometry Model Instance> of a desk. A <Positional Light> affecting the two objects is located so that the illumination is directed from above. (Assume that these instances are present within an environment simulating an ordinary room.) Each <Polygon> within the desk <Model> has an <Inline Colour> component, which in turn has a <Primitive Colour> with both an <Ambient Colour> and a <Diffuse Colour> component. Due to the <Diffuse Colour> component, the area of the desk under the monitor that's visible to the observer appears to be in shadow. However, the shadowy area is not totally blacked out, because the <Ambient Colour> simulates the effect due to light reflected from the walls, ceiling, and so on that would reach that area. 2. Consider a <Line> used to simulate a line of runway lights. The <Line>'s <Colour> would resolve to a <Primitive Colour> consisting primarily (possibly completely) of an <Emissive Colour>, since the <Line> is pretending to emit light. 3. Consider a collection of <Polygon> instances used to represent the surface of a sunlit lake. These <Polygon> instances' <Colour> components resolve to <Primitive Colour> instances consisting of <Ambient Colour>, <Diffuse Colour>, and <Specular Colour> components. The <Ambient Colour> prevents any <Polygon> instances in shadow from appearing black, while the <Diffuse Colour> provides most of the normal appearance of a lit object. However, since water is a reflective substance, its colour requires a <Specular Colour> component to simulate light reflected from the water. FAQS: Q. Does SEDRIS use the OpenGL lighting model? A. No, although the terminology is similar. SEDRIS handles transparency somewhat differently than OpenGL does, among other things. For a description of the OpenGL lighting model, see [OPENGL], Chapter 5 "Lighting". Q. Consider a data provider with a very simple illumination model, with no objects that glow in the dark or otherwise emit light, and no reflections. How is this represented in SEDRIS? A. The question has eliminated any concerns about <Emissive Colour> and <Specular Colour> components -- the <Primitive Colours> won't have them. Having said that, the data provider is down to 2 choices -- <Ambient Colour> and <Diffuse Colour>. Here is a simplified description of the effects each will provide (i.e., considering only 1 light source). <Ambient Colour> is independent of the positions of either the light source or the observer. That is, an object with only <Ambient Colour> appears uniformly lit across its surface, regardless of where the light source is or where the observer is. (This can create a very artificial-looking effect, since it distorts some of the visual cues that provide depth perception.) <Diffuse Colour>, on the other hand, depends on the angle of the lit object to the light source (although not on the observer's position). An object with only <Diffuse Colour> will appear to be lighted on the side facing the light source, while the opposite side will be in shadow. The effect is consistent with the visual cues used to determine shape-from-shading in various image analysis methods. Note that a <Primitive Colour> can have both an <Ambient Colour> and a <Diffuse Colour> component. This indicates that even if part of the object is in shadow, it is still somewhat visible. See example #1. Q. Where are the RGB values in all this?!? A. Each of the components of <Primitive Colour> has, in turn, a <Colour Data> component, which is either an <RGB Colour>, an <HSV Colour>, or a <CMY Colour> instance, depending on which colour model is being used. Q. Why do <Colour Table> instances have <Primitive Colour> components instead of <Inline Colour> components? A. <Colour Table> instances used to be composed of <Inline Colour> instances, but problems arose since both <Colour Index> and <Inline Colour> instances can have <Translucency> components. When a <Colour Index> instance that has a <Translucency> component refers to an entry in a <Colour Table> instance, the interpretation is clearer if the <Colour Table> instance's entry cannot specify any additional <Translucency> instances. Consequently, <Primitive Colour> exists so that "just the colour" can be put into a <Colour Table> instance. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Composed of (two-way) zero or one Ambient Colour instance zero or one Diffuse Colour instance zero or one Emissive Colour instance zero or one Specular Colour instance Component of (two-way) zero or one Colour Table instance zero or more Inline Colour instances ------------------------------------------------------------------------------- Abstract Class Name: Primitive Feature Definition: An instance of a concrete class derived from this DRM class is a <Feature Representation> instance that is not hierarchically structured. Primary Page in DRM Diagram: 8 Secondary Pages in DRM Diagram: 23 Example: See individual subclasses for examples. FAQS: Q. What determines whether a <Feature Representation> is represented as a <Point Feature>, a <Linear Feature>, or an <Areal Feature>? A. This is primarily determined by the dimensions of the <Feature Representation>, in conjunction with the nature of the <Feature Representation>, the resolution of the source imagery from which the <Feature Representation> was extracted, and the intended use of the extracted feature data. A long, narrow feature will be extracted as a <Linear Feature>, representing the centreline of the actual feature, with a width field. A very small feature will be extracted as a <Point Feature>, with length and width fields, or possibly a radius field. Superclass: Feature Representation Subclasses: Areal Feature Linear Feature Point Feature Volumetric Feature Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Crossing Associations Precedence of Property Set Index Colour Mapping Restrictions Image Mapping Functions and Texture Coordinates Associated to (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or more Property Grid instances, each with a Base Association Data link object Associated by (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or more Property Grid instances, each with a Base Association Data link object Composed of (two-way) (inherited) zero or one Classification Data instance zero or more Label instances zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or one Rendering Priority Level instance Composed of (two-way) zero or more Colour instances zero or more {ordered} Image Mapping Function instances zero or one Presentation Domain instance zero or one Spatial Extent instance Composed of (two-way metadata) (inherited) zero or one Access instance zero or more Cross Reference instances zero or one Data Quality instance zero or one Description instance zero or one Time Constraints Data instance Component of (two-way) (inherited) zero or more Union Of Features instances ------------------------------------------------------------------------------- Abstract Class Name: Primitive Geometry Definition: An instance of a concrete class derived from this DRM class specifies data to describe a a <Geometry Representation> instance. Primary Page in DRM Diagram: 5 Secondary Pages in DRM Diagram: 3 4 18 23 Example: 1. In processing subfaces, traversal and drawing order of the objects is depth first. <Union Of Primitive Geometry> | p1 | <Union Of Primitive Geometry> | |---------------------------------------------| p2 p3 | | <Union Of Primitive Geometry> <Union Of Primitive Geometry> | | |----| |----|----| p4 p5 p6 p7 p8 FAQS: Q. How can the <Polygon> instances be retrieved in the right order? A. In order to consume, set up a component iterator for <Primitive Geometry> on the first <Union Of Primitive Geometry> with search depth of 0 and traversal method to SE_TRAV_ORDR_DEPTH_FIRST. This will return the <Polygon> instances in their rendering order. Q. What happens to the context of <Union Of Primitive Geometry> components of <Continuous LOD Geometry> instances? A. As a constraint, <Union Of Primitive Geometry> components of <Continuous LOD Geometry> instances are not allowed to have other <Union Of Primitive Geometry> instances within the scope of any of their <Primitive Geometry> components, a mechanism provided to allow a data provider to specify subfacing information. A terrain <Polygon> usually does not have subfaces. If there is a terrain <Polygon> within another coplanar <Polygon>, then a <Rendering Priority Level> instance can be provided to determine the correct drawing order. This is usually a layering issue, wherein soil is usually rendered first, then vegetation, then water, and so on. Q. What happens if a <Rendering Priority Level> is encountered under a subfaced <Polygon>? A. <Rendering Priority Level> should be handled normally. If one is encountered, then the siblings for that <Polygon> should be examined and those siblings with a lower rendering priority should be processed before those with a higher rendering priority. Q. What should the ordering_reason be for the <Union Of Primitive Geometry>? A. The ordering_reason could still be valid for any of the enumerants currently in SE_Ordering_Reason. The actual drawing order is explicitly defined using a depth-first search for <Primitive Geometry>. Q. When a <Primitive Geometry> contains a <Union Of Primitive Geometry> for nesting reasons, what are the restrictions on the nested <Primitive Geometry> instances? A. See <<Nested Primitive Geometry>>. Superclass: Geometry Representation Subclasses: Finite Element Mesh Linear Geometry Point Surface Geometry Volume Geometry Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Cyclic Aggregations Precedence of Property Set Index Colour Mapping Restrictions Continuous LOD Restrictions Image Mapping Functions and Texture Coordinates Nested Primitive Geometry Composed of (two-way) (inherited) zero or one Classification Data instance zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances Composed of (two-way) zero or more Colour instances zero or more {ordered} Image Mapping Function instances zero or one Light Rendering Properties instance zero or one Presentation Domain instance zero or one Rendering Priority Level instance zero or one Rendering Properties instance zero or more Tack Point instances zero or one Union Of Primitive Geometry instance Composed of (two-way metadata) (inherited) zero or one Time Constraints Data instance Component of (two-way) zero or more Union Of Primitive Geometry instances ------------------------------------------------------------------------------- Class Name: Primitive Summary Item Definition: An instance of this DRM class specifies a common pattern of primitive objects that appear in the scope being summarized, which may be either a <Model> instance or an <Environment Root> instance. A <Primitive Summary Item> instance represents one or more instances of the class specified by its drm_class field that conform to the specified pattern. A <Primitive Summary Item> instance may represent only instances of <Primitive Geometry>, <Primitive Feature>, their subclasses, and the classes that may appear in their component trees. <Primitive Summary Item> instances are combined to form a hierarchy mirroring that of the primitive instances that they represent, such that the summary is a compressed form of the actual hierarchy. Since a <Primitive Summary Item> instance may represent many instances of the primitive that it summarizes, it has a multiplicity field, indicating how many instances of the pattern it represents. Note that all instances represented by a given <Primitive Summary Item> instance shall conform exactly to that pattern, up to the point where the summary's pattern ceases to provide specifics. Primary Page in DRM Diagram: 20 Secondary Pages in DRM Diagram: 1 2 Example: 1. Summary of a common <Polygon> structure pattern within a <Model>. In this case, the pattern indicates that a data consumer can expect to see triangles. Note that other patterns can be present; in this particular example, the <Model> contains not only triangles, but other types of <Polygon> instances, such as quadrilaterals and even 5-sided <Polygon> instances. The <Primitive Summary Item> instances are just indicating common patterns; they're not enumerating all the patterns that are present. <Model> <>-------------------------- <Primitive Summary Item> <> (Polygon, 1) | <> <Union Of Geometry Hierarchy> | <> <Primitive Summary Item> +-----------------------+ (Vertex, 3) | | <Union Of (and so on) Primitive Geometry> <> | +------+------+------+------+--------+ | | | <Polygon> <Polygon> Polygon <> <> <> | | | +---+---+ +---+---+---+---+ +---+---+---+ | | | | | | | | | | | | Vtx Vtx Vtx Vtx Vtx Vtx Vtx Vtx Vtx Vtx Vtx Vtx FAQS: Q. Suppose that as a consumer, I encounter a <Primitive Summary Item> as a component of an <Environment Root>, which specifies a pattern of usage for instances of a given class. Does this mean that *all* instances of that class in the scope of the given <Environment Root> shall comply with the specified pattern? A. No; it only indicates that in this particular scope, the specified pattern is very common. For instance, consider an <Environment Root> with a <Primitive Summary Item> describing a texture-mapped triangular <Polygon> - that is, a <Polygon> with an <Image Mapping Function> component and 3 <Vertex> components. All that this means is that <Polygon> instances of that description are common in the scope of that <Environment Root>. Q. Can a given class' usage be simultaneously and unambiguously summarized by a <DRM Class Summary Item> and a <Primitive Summary Item> in the same scope? A. Yes, because <DRM Class Summary Item> and <Primitive Summary Item> summarize different aspects of usage. <DRM Class Summary Item> summarizes the *presence* of instances of the specified class, while <Primitive Summary Item> represents common *patterns* of objects in which instances of the specified class appear. Superclass: Base Summary Item Constraints: Publishable Object Primitive Summary Item Constraints Composed of (two-way) zero or more Primitive Summary Item instances Composed of (two-way metadata) (inherited) zero or more EDCS Use Summary Item instances Component of (two-way) zero or one Environment Root instance zero or one Model instance zero or more Primitive Summary Item instances Inherited Field Elements: SE_DRM_Class drm_class; /* * The drm_class field indicates the DRM class of the object(s) * represented by the given <Base Summary Item> instance. */ Field Elements: SE_Integer_Unsigned multiplicity; /* * The multiplicity field indicates the number of identical instances * represented. */ ------------------------------------------------------------------------------- Class Name: Process Step Definition: An instance of this DRM class specifies information about an event in the creation process for the data specified by the scope. Primary Page in DRM Diagram: 20 Example: 1. Filtering of feature data based on FACC feature code using ARC/INFO. 2. Polygonalization of feature data using S1000. FAQS: Q. What is the purpose of this class? A. This class provides a mechanism for documenting the processes used in environmental database generation. In conjunction with the <Source> class, this class can be used to construct a network-like description of the database generation process, consisting of processing steps linked by their input and output data. This class allows the date and time that each process was performed to be recorded, as well as a point of contact for each processing step. Each <Process Step> instance can be associated with a collection of <Source> instances, each of which is labelled as being either an input or an output. Thus each <Process Step> instance may use multiple inputs and produce multiple outputs. At a minimum, the overall database generation process (such as SOF ATS) should be identified. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Distinct Link Objects Mandatory Metadata Non Crossing Associations Associated to (one-way) zero or more Source instances, each with a In Outs link object Composed of (two-way) one Absolute Time instance Composed of (two-way metadata) zero or more Responsible Party instances Component of (two-way) one Lineage instance Field Elements: SE_String description; /* * The description field specifies an explanation of the event, * including related parameters or tolerances. */ SE_String rationale; /* * If supplied, the rationale field states the requirement or purpose * for the given <Process Step> instance. */ ------------------------------------------------------------------------------- Abstract Class Name: Property Definition: An instance of a concrete class derived from this DRM class specifies a property of the attributed SEDRIS object in terms of a) its meaning (specified using an EAC, SE_Index_Code, or SE_Variable_Code), b) its units (such as metres), c) and its data storage type (such as EDCS_Integer). See individual subclasses for details on the uses of <Property> instances. Primary Page in DRM Diagram: 6 Secondary Pages in DRM Diagram: 23 Example: See specific subclasses for examples. FAQS: None. Superclass: SEDRIS Abstract Base Subclasses: Property Description Property Value Constraints: Publishable Object Property Characteristic Restrictions Property Meaning Restrictions Composed of (two-way) zero or more Property Characteristic instances Field Elements: SE_Property_Code meaning; /* * The meaning field specifies the meaning of the given * <Property> instance. */ ------------------------------------------------------------------------------- Class Name: Property Characteristic Definition: An instance of this DRM class specifies additional information about how to use, interpret or further specify an instance of a <Property> subclass. It consists of an enumeration that designates the type of information, and a value for the designated attribute. Primary Page in DRM Diagram: 6 Example: 1. A <Model> classified as ECC_BRIDGE has a <Property Value> representing its length. The <Property Value> has two <Property Characteristic> components to specify maximum length and length precision: First <Property Characteristic> meaning = EVC_MAXIMUM_VALUE characteristic_value.value_type = EDCS_AVT_REAL characteristic_value.u.real_value = { EUC_METRE, ESC_UNI, { EDCS_NVT_SINGLE_VALUE, { 32767.0 } } } Second <Property Characteristic> meaning = EVC_TOLERANCE characteristic_value.value_type = EDCS_AVT_REAL characteristic_value.u.real_value = { EUC_METRE, ESC_UNI, { EDCS_NVT_SINGLE_VALUE, { 1.0 } } } 2. A <Property Grid> containing a <Table Property Description> with meaning = { SE_ELEM_CODE_TYP_ATTRIBUTE, { EAC_AIR_TEMPERATURE }} describes air temperature measurements over the specified region. In some locations, no measurements were taken, so a sentinel value (deliberately chosen to lie outside the range of possible data values) is needed to indicate those locations. Consequently, the <Table Property Description> for EAC_AIR_TEMPERATURE in this example has a <Property Characteristic> with meaning = EVC_MISSING and characteristic_value of, say, -10000. Any cell data element for this <Table Property Description> which has a value of -10000 is therefore interpreted as meaning that the measurement is missing. Note that the <Table Property Description> may have other <Property Characteristic> components, provided that they have different meaning values. For example, this <Table Property Description> may have another <Property Characteristic> specifying EVC_MINIMUM_VALUE. 3. A <Property Grid> containing a <Table Property Description> with meaning = { SE_ELEM_CODE_TYP_ATTRIBUTE, { EAC_SALINITY }} describes water salinity data over the region specified for the grid. However, in this example, part of the grid lies over land, so that water salinity measurements not only were not taken there, but make no sense. A sentinel value (deliberately chosen to lie outside the range of possible data values) is needed to indicate those locations. Consequently, the <Table Property Description> for EAC_SALINITY in this example has a <Property Characteristic> with meaning = EVC_NOT_APPLICABLE and a characteristic_value of, say, -1. Any cell data element for this <Table Property Description> which has a value of -1 is therefore interpreted as meaning that the measurement is not applicable. Note that the <Table Property Description> may have other <Property Characteristic> components, provided that they have different meaning values. For example, this <Table Property Description> may have another <Property Characteristic> specifying EVC_MINIMUM_VALUE. FAQS: Q. Why would a <Property Value> require a <Property Characteristic>? A. If a <Property Value> had associated with it a valid range of values or a precision value (as is sometimes found in FACC attribute specifications), then each of these associated values could be attached to the <Property Value> with a <Property Characteristic>. However, a <Property Value> does not require <Property Characteristics> that specify sentinel values, since they are meaningful only in the context of <Data Tables>. Q. Shouldn't a value's range and precision information be part of metadata, such as <Data Quality>? A. They can be, but metadata information is not readily accessible in software. For example, in an application which plots tabular data, access to information specifying the valid range of values is useful in scaling the plot. As a second example, precision information can be used to determine appropriate round-off when converting between units of measure. Q. How do <Table Property Description> instances in the signature of a <Data Table> use <Property Characteristics>? A. In addition to specifying value ranges, precision, and tolerances, a given <Table Property Description> of a <Data Table> can use a <Property Characteristic> to specify information that applies to all cells in the <Data Table>, such as a sentinel value that flags a special meaning to certain values. A <Property Characteristic> can also be used to indicate that a certain <Data Table> property is in fact constant in this particular instance of the table. Q. Why are <Data Table> sentinel values needed? A. Often <Data Tables> are incomplete for various reasons. Typically a set of special values is selected to flag missing data. Such special values are selected to be out of the valid range of values for the parameter in question. Since the valid range of a parameter varies by data set as well by <Property> type, these special values vary accordingly. <Property Characteristics> provide a means to associate specific sentinel values and their meaning with a specific <Property> of a specific <Data Table>. Q. How can characteristic values for EVC_NOT_APPLICABLE, EVC_MISSING, EVC_VALUE_WITHHELD, EVC_MULTIPLE, and EVC_UNDESIGNATED be used with enumerated EDCS Attributes? A. The sentinel mechanism that is often used with numeric attributes use out-of-valid-range values in conjunction with <Property Characteristic> instances for this purpose. The only valid EE codes for a given EA are specified in the EE dictionary. Any non-valid code for the EE (such as a negative value) may be used for a characteristic value. Q. What are the units of a <Property Characteristic> characteristic_value? A. The characteristic_value is measured with the same unit as the <Property> subclass that aggregates it. Q. What is the difference between EVC_MAXIMUM_VALUE, EVC_MINIMUM_VALUE and EVC_UPPER_BOUND, EVC_LOWER_BOUND? A. EVC_MAXIMUM_VALUE and EVC_MINIMUM_VALUE are intended to give the nominal or legal range of values for this type of data as opposed to this instance of the data. EVC_UPPER_BOUND and EVC_LOWER_BOUND are intended to supply a tighter bound for the given instance of numeric data. If both sets of characteristics are supplied, then: EVC_UPPER_BOUND <= EVC_MAXIMUM_VALUE EVC_LOWER_BOUND >= EVC_MINIMUM_VALUE Q. Is EVC_UPPER_BOUND the same as the least upper bound for the data? Similarly, is EVC_LOWER_BOUND the greatest lower bound? A. Not necessarily. But the tighter the bound the more useful is the information provided. If possible they should be the least upper greatest lower bounds. Q. How are the EVC_UPPER_BOUND, EVC_LOWER_BOUND values used? A. They can be used by the data consumer for scaling graphs, checking data validity, etc. When supplied for a <Table Property Description>, together with EVC_TOLERANCE or EVC_SIGNIFICANT_DIGITS values, a SEDRIS API implementation may be able to use this information to compress the <Data Table>. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Property Characteristic Restrictions Component of (two-way) zero or more Property instances zero or more Table Property Description instances Field Elements: EDCS_Value_Characteristic_Code meaning; /* * The meaning field specifies the semantic represented by the given * <Property Characteristic> instance. */ EDCS_Attribute_Value characteristic_value; /* * The characteristic_value field specifies the data value of the given * <Property Characteristic> instance. */ ------------------------------------------------------------------------------- Class Name: Property Description Definition: An instance of this DRM class is used to elaborate a property attribute of an <Aggregate Geometry> or <Aggregate Feature> instance and / or its component inheritance subtree by specifying <Property Characteristic> components and / or qualifying (limiting) <Property Value> components which meaningfully qualify the attribute identified by the <Property Description>. Primary Page in DRM Diagram: 6 Secondary Pages in DRM Diagram: 4 8 20 Example: 1. Consider a <Union Of Primitive Geometry> containing <Polygon> instances, each of which has an emissivity applicable to the IR band only, where valid values are less than or equal to 1.0. <Union Of Primitive Geometry> <> | ------------------------------------------------ | | | <Property Description> | EAC_EMISSIVITY | <> | | | ------------------------| | | | | <Property Characteristic> <Property Value> | meaning = EVC_MAXIMUM_VALUE EAC_ELECTROMAGNETIC_BAND | characteristic_value 1.0 EEC_EMBAND_INFRARED | +-------------------------------------+ | | | | <Polygon> <Polygon> <> <> | | | | <Property Value> <Property Value> EAC_EMISSIVITY EAC_EMISSIVITY 0.75 0.55 The emissivity of each <Polygon> is applicable to the IR band only, because that property is so qualified by inheritance. 2. Consider a <Union Of Features> containing various <Primitive Features> that shall specify dewpoint temperature. For all the <Primitive Features> in this aggregate, the dewpoint temperature given was taken at a height of ten metres above the surface of the terrain, and is of good quality. <Union Of Features> <> | ------------------------------------ | | <Property Description> <Point Feature> EAC_DEWPOINT_TEMPERATURE <> <> | | <Property Value> ----------------------- EAC_DEWPOINT_TEMPERATURE | | EDCS_UNITS_DEGREE_CELSIUS | | 15 <Property Value> <Property Value> EAC_DEWPOINT_QUALITY EAC_HEIGHT_ABOVE_SURFACE EDCS_UNITS_METER EDCS_UNITS_ENUMERATION 10.0 SE_PROP_VAL_DEQ__GOOD Since the <Point Feature>'s <Property Value> describes EAC_DEWPOINT_TEMPERATURE, it inherits the following qualifiers: 1) The EAC_DEWPOINT_TEMPERATURE measurement was taken at a height of ten metres above the surface, and 2) The measurement is of good quality. FAQS: Q. How does an aggregate object use a <Property Description>? A. In two ways, either separately or in combination. 1. An aggregate may use a <Property Description> to specify <Property Characteristic> components (such as maximum value for a quantity). 2. An aggregate might also use a <Property Description>'s <Property Value> components to qualify an EAC. All objects in the component inheritance tree of the aggregate, as long as they have <Property Value> instances with a matching EAC, are subject to the <Property Descriptions> and / or qualifying values. Q. Can a data provider qualify an attribute A with two sets of qualifying <Property Value> instances, {b1, c1} and {b2, c2} by associating two <Property Value> instances for A with the corresponding qualifier set? A. No. This situation requires a <Property Table>. Q. Are there any restrictions on the <Property Value> components? A. Only semantic restrictions. For example, it makes sense to limit the applicability of an electromagnetic emissivity value to a particular electromagnetic band. But it would be nonsensical to limit an electromagnetic band to a particular emissivity value. Superclass: Property Constraints: Publishable Object Property Characteristic Restrictions Property Meaning Restrictions Composed of (two-way) (inherited) zero or more Property Characteristic instances Composed of (two-way) zero or more Property Value instances Component of (two-way) zero or more Aggregate Feature instances zero or more Aggregate Geometry instances zero or more EDCS Use Summary Item instances Inherited Field Elements: SE_Property_Code meaning; /* * The meaning field specifies the meaning of the given * <Property> instance. */ ------------------------------------------------------------------------------- Class Name: Property Grid Definition: An instance of this DRM class is a <Data Table> instance that has at least one (1) but not more than three (3) spatial axes, which always appear before any other <Axis> instances in its ordered <Axis> list. A spatial axis is an <Axis> instance that describes sampling along one of the components of the spatial reference frame of the <Property Grid>; hence it is directly useful for locating the sample values in space. To qualify as spatial, the <Axis> shall match the spatial reference frame exactly, using using a consistent specification (e.g., the same ORM, direction vector and (possibly scaled) units. - The "spatial" <Axis> instances of a <Property Grid> shall always be the first members of the ordered set of <Axis> components. The spatial_axes_count field indicates how many of the <Axis> instances are "spatial". Note: because the <Axis> ordering also determines the "scanning" order when data is retrieved from a <Data Table>, placing the spatial axes first imposes some limitations on the way data can be scanned, and may require reordering either by the preparer or the consumer to achieve a scanning that is more "natural" to them. - There are no other ordering rules for spatial <Axis> instances. If a producer has a choice, it is a good idea to order spatial <Axis> components in the same way as the spatial reference frame components, but as mentioned in point 1), this is not always possible, so consumers cannot make assumptions about the ordering apart from those stated above. Primary Page in DRM Diagram: 6 Secondary Pages in DRM Diagram: 8 Example: 1. A DTED <Property Grid> associated to <Areal Feature> instances representing DTED accuracy areas supplemental to the grid. 2. Consider a <Property Grid> instance classified as ECC_WATER_BODY_TEMPERATURE_PROPERTY_SET for an ocean volume. Ocean temperature "features", such as warm / cold currents, fronts, and eddies, are associated to specific cells of the <Property Grid>. 3. Consider a transmittal provided by a data producer whose format uses polygons rather than grids to represent terrain, where the polygons define a "default" post spacing. To provide this "default" post spacing in the transmittal, the data provider would provide an "empty" <Property Grid> instance, attaching it to the hierarchy with a <Property Grid Hook Point> instance, as usual, with the following structure. <Property Grid> <> | |- <Classification Data> | tag = ECC_TERRAIN | | |- instances of <Axis> with spatial EAs as meanings | |- <Table Property Description> EAC_SURFACE_ELEVATION The spatial <Axis> instances define the extents and the spacing of the <Property Grid> instance. The data provider has the option of providing <Property Characteristic> components for the <Table Property Description> instance to supply the minimum and maximum elevation values. FAQS: Q. Since a <Property Grid> is a sub-class of <Data Table>, and the <Data Table Library> is composed of <Data Tables>, doesn't that mean that a <Property Grid> can be a component of a <Data Table Library>? A. Yes. Q. What are examples of non-spatial axes? A. Of course, any <Axis> that has no spatial meaning is non-spatial, for example, month, material index, density. There are also <Axis> instances that seem to have spatial meaning but are not "spatial" to SEDRIS, for example, atmospheric pressure height, height above or below terrain surface, azimuth. These are non-spatial to SEDRIS because they require either additional information (such as the location of the terrain surface) or a parametric formula (such as the standard atmosphere model) to convert their values into a <Location> instance in the SEDRIS spatial reference frame of the given <Property Grid> instance. Q. Why is a <Property Table> permitted to aggregate other <Data Tables>? A. This mechanism allows a <Property Grid> cell data element to specify an index into the set of ordered <Data Table> components, so that any component <Data Table> can be "re-used" by many data cells. See <Index Codes within Tables> for further details. Q. Why is a <Property Grid> allowed to associate directly with a <Feature Representation>? Couldn't the same functionality be achieved by associating the <Feature Representation> with a <Property Grid Hook Point>? A. No. A <Property Grid Hook Point> may aggregate several <Property Grids>, making the main connection between a <Feature Representation> and a <Property Grid> ambiguous. Q. What if a cell in a <Property Grid> is related to several <Feature Representations> simultaneously? A. This is easily handled by having the cell index to a component (nested) <Data Table> of related <Feature Representation> IDs (EAC_NUMERIC_OBJECT_IDENTIFIER). Such component <Data Tables> of related <Features> shall be classified as ECC_RELATED_OBJECT_SET. Q. What is the point of having an "empty" <Property Grid>, that is, with data_present == SE_FALSE? A. Because it provides an "outline" or "template" of the <Property Grid> information. It provides the size, orientation, spacing, and so on of the <Property Grid> instance - just without any cell values. This makes it possible, for instance, for a consumer who requires <Property Grid> rather than <Polygon> instances for terrain to derive the <Property Grid> representation from the <Polygon> representation (see example 3). Superclass: Data Table Constraints: Publishable Object Index Codes within Tables Axis Type Restrictions Non Crossing Associations Associated to (one-way) zero or more Feature Representation instances, each with a Base Association Data link object Associated by (one-way) zero or more Feature Representation instances, each with a Base Association Data link object Composed of (two-way) (inherited) one or more {ordered} Axis instances one Classification Data instance zero or more {ordered} Image Mapping Function instances one or more {ordered} Table Property Description instances Composed of (two-way) zero or more {ordered} Data Table instances zero or more Grid Overlap instances Composed of (two-way metadata) (inherited) zero or one Access instance zero or one Citation instance zero or more Cross Reference instances zero or one Data Quality instance zero or one Description instance zero or one Time Constraints Data instance Component of (two-way) (inherited) zero or one Data Table Library instance zero or more Property Grid instances Component of (two-way) zero or more Property Grid Hook Point instances Field Elements: SE_Short_Integer_Positive spatial_axes_count; /* * The spatial_axes_count field specifies how many axes of the * given <Property Grid> instance are spatial axes. */ SE_Short_Integer location_index[]; /* * This specifies up to three grid indices that identify the grid cell * that contains the location corresponding to that specified by the * <Location 3D> component of the <Property Grid Hook Point> aggregate * of the given <Property Grid> instance. * * The identified cell is the attachment cell of the given <Property Grid> * instance; it is where the <Location 3D> instance is attached to the * <Property Grid> instance. * * The location_index shall specify a valid cell within the given * <Property Grid> instance; that is, the indices shall be within * the appropriate bounds of the <Property Grid> instance. Only * the first spatial_axes_count entries of location_index are * significant. */ SE_SRF_Info srf_info; /* * This specifies the SRF within which the given <Property Grid> * instance is defined, rather than attempting to depend on the * SRF of the context in which the instance appears. * * The "griddedness" of spatial positions is dependent on the properties * of the SRF. Coordinate conversions and transformations are not, * in general, linear, so that a set of points that form a regular * array of positions in one SRF may not be regular in * another SRF. Therefore, in order to preserve * "griddedness", a <Property Grid> specifies a SRF in * which the data positions form a grid. */ SE_Boolean data_present; /* * If data_present = SE_TRUE (the default), the given <Property Grid> * instance contains cell values that can be extracted via the * appropriate Level 0 API calls. * * Otherwise, if data_present = SE_FALSE, the given <Property Grid> * instance does not contain any cell values, although it may provide * everything else that a populated <Property Grid> instance could * provide. */ ------------------------------------------------------------------------------- Class Name: Property Grid Hook Point Definition: An instance of this DRM class is used to "instance" a <Property Grid> into the spatial scope of an <Environment Root> or <Model>. In particular, the origin of the spatial axes of a component <Property Grid> is located at the <Property Grid Hook Point>'s component <Location>. Since a <Property Grid Hook Point> separates a <Property Grid>'s cell data from the <Location> of its origin, <Property Grid> instances can be shared by multiple <Property Grid Hook Point> instances. Primary Page in DRM Diagram: 6 Secondary Pages in DRM Diagram: 3 7 13 Example: 1. Consider a 1-dimensional <Property Grid> classified as ECC_WATER_BODY_BATHYMETRY_PROPERTY_SET that contains a depth axis only. The <Property Grid Hook Point> <Location> serves to position this grid into the currently scoped 'world' spatial reference frame. 2. Consider a 2-dimensional <Property Grid> instance classified as ECC_TERRAIN_ELEVATION that contains elevation relative to the south-west corner of the grid. The <Property Grid Hook Point> instance's <Location> component serves to position this grid corner into the currently scoped 'world' spatial reference frame. 3. A <Property Grid Hook Point> instance, connecting a <Property Grid> instance of terrain elevation data from DTED to the geometry of an <Environment Root> instance. FAQS: Q. If a <Property Grid> has all 3 spatial axes, isn't the hook <Location> redundant? A. No, the hook point <Location> serves several purposes. 1. Since the spatial axes are relative, the hook <Location> provides the axis offset origins. 2. It makes a <Location> associated with the grid visible to API search filters (in the currently scoped 'world' spatial reference frame). Superclass: Geometry Hierarchy Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Cyclic Aggregations Precedence of Property Set Index Non Crossing Associations Associated to (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object Associated by (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or one Hierarchy Summary Item instance zero or more Reference Surface instances Associated with (two-way) zero or one Geometry Node instance Composed of (two-way) (inherited) zero or one Classification Data instance zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or one Reference Surface instance zero or more Sound Instance instances Composed of (two-way) zero or more Base LOD Data instances one Location instance zero or one LSR Transformation instance one or more Property Grid instances zero or one Spatial Extent instance Composed of (two-way metadata) (inherited) zero or one Time Constraints Data instance zero or one Access instance zero or more Cross Reference instances zero or one Data Quality instance zero or one Description instance Component of (two-way) (inherited) zero or more Alternate Hierarchy Related Geometry instances, each with a Hierarchy Data link object zero or more Animation Related Geometry instances zero or more Classification Related Geometry instances, each with a Classification Data link object zero or one Environment Root instance zero or one Geometry Model instance zero or more LOD Related Geometry instances, each with a Base LOD Data link object zero or more Octant Related Geometry instances, each with a Octant Data link object zero or more Perimeter Related Geometry instances, each with a Perimeter Data link object zero or more Quadrant Related Geometry instances, each with a Quadrant Data link object zero or more Separating Plane Relations instances, each with a Separating Plane Data link object zero or more Spatial Index Related Geometry instances, each with a Spatial Index Data link object zero or more State Related Geometry instances, each with a State Data link object zero or more Time Related Geometry instances, each with a Time Constraints Data link object zero or more Union Of Geometry Hierarchy instances ------------------------------------------------------------------------------- Class Name: Property Set Definition: An instance of this DRM class groups together a set of instances of classes that - have formal component relationships with <Geometry Representation> and / or <Feature Representation>, and - that specify either 'attributes', such as <Rendering Priority Level>, or metadata. A <Property Set> instance provides a mechanism for a set of 'attributes' to be explicitly reused by many <Geometry Representation> and / or <Feature Representation> instances. Primary Page in DRM Diagram: 19 Secondary Pages in DRM Diagram: 6 Example: 1. A number of <Polygon> instances that are all coloured red and rendered using flat shading each contain the same <Property Set Index>, which references a <Property Set> containing a <Colour> instance specifying red and a <Rendering Properties> instance specifying flat shading. 2. A number of <Polygon> instances that are all coloured green, have grass texture that is modulated and have an EAC_SURFACE_MATERIAL_TYPE specifying EEC_SRF_MATTY_GRASS. A common <Property Set Index> specifies a <Property Set> containing: 1) a <Colour> instance specifying green, 2) an <Image Mapping Function> instance specifying image_mapping_method = SE_IMG_MAPNG_METH_MODULATE, and 3) a <Property Value> instance specifying an EAC_SURFACE_MATERIAL_TYPE value of EEC_SRF_MATTY_GRASS. 3. A number of <Polygon> instances that all have the same electromagnetic properties and are coloured grey. A common <Property Set> would contain a <Colour> instance specifying grey and a <Property Table Reference> into a <Property Table> of electromagnetic properties. 4. A <Feature Representation> is associated with a <Geometry Representation> that has been developed from it. Both reference the same <Property Set>, which contains a <Colour> instance, <Image Mapping Function> and <Browse Media>. The <Geometry Representation> would use the <Colour> and <Image Mapping Function> but ignore the <Browse Media>. 5. Consider a <Feature Representation> instance with a <Data Quality> component, the fictional field of which is set to SE_TRUE. This particular <Feature Representation> instance also has a <Property Set Index> component, referencing a <Property Set> containing a <Data Quality> instance, the fictional field of which is set to SE_FALSE. Since a <Feature Representation> may contain at most one <Data Quality> instance, the <Data Quality> instance with fictional set to SE_TRUE would be used, as it is contained directly by the <Feature Representation> instance. 6. Consider a <Geometry Representation> instance with two <Property Table Reference> components, which references a <Property Set> that contains another three <Property Table Reference> instances, where all five have distinct meanings. As a <Geometry Representation> may contain many <Property Table Reference> instances, all five will be used by the <Geometry Representation> as required. The two that are contained directly will be used first, then the three that are contained in the <Property Set>. 7. Consider a <Polygon> instance with two <Image Mapping Function> components, which references a <Property Set> that contains another two. As a <Primitive Geometry> may contain many ordered <Image Mapping Function> instances, all four will be used by the <Polygon> as required. The two that are contained directly will be used in order first, then the three that are contained in the <Property Set>, again in order. 8. A <Union Of Primitive Geometry> contains two <Property Table Reference> instances and references two <Property Set> instances. The first <Property Set> contains another <Property Table Reference> and the second <Property Set> contains another three <Property Table Reference> instances. As an <Aggregate Geometry> may contain many <Property Table Reference> instances, all six would be used by the <Union Of Primitive Geometry> as required. The two that are contained directly would be used first, then the one that is contained in the first <Property Set> and finally the three that are contained in the second <Property Set>. FAQS: Q. Where can users find more information on 'attribute' objects? A. See Part 4, Volume 9 Attribute Inheritance and Context Technical Guide of the SEDRIS Documentation Set for further information. Q. What is the order of precedence for 'attribute' objects within a single <Property Set> instance? A. See the constraint <<Precedence of Property Set Index>>. Q. What if a <Geometry Representation> or <Feature Representation> has more than one <Property Set Index>, where the referenced <Property Set> instances have conflicting attribute objects? A. See the constraint <<Precedence of Property Set Index>>. Q. What if a <Property Set> instance contains attribute objects that are related to <Feature Representation> but is referenced by a <Geometry Representation> instance? Or vice versa? A. See the constraint <<Property Set Components>>. Superclass: SEDRIS Abstract Base Constraints: Publishable Object No Attribute Conflicts Property Set Components Composed of (two-way) zero or one Classification Data instance zero or more Colour instances zero or more {ordered} Image Mapping Function instances zero or one Light Rendering Properties instance zero or one Presentation Domain instance zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or one Rendering Priority Level instance zero or one Rendering Properties instance zero or one Spatial Extent instance Composed of (two-way metadata) zero or one Access instance zero or one Citation instance zero or more Cross Reference instances zero or one Data Quality instance zero or one Description instance zero or one Time Constraints Data instance Component of (two-way) one Property Set Table instance ------------------------------------------------------------------------------- Class Name: Property Set Index Definition: An instance of this DRM class specifies the means of referencing the contents of a <Property Set> instance that is contained in a <Property Set Table> instance. A <Property Set Index> instance specifies an index into the primary <Property Set Table> component of the <Property Set Table Group> instance to which it is associated. The <Property Set Table Group> instance specifies which of its <Property Set Table> components is being used, while the <Property Set Index> instance specifies which <Property Set> component within that primary <Property Set Table> instance is being referenced. Primary Page in DRM Diagram: 19 Secondary Pages in DRM Diagram: 3 8 Example: 1. Consider a <Property Set Table Group> instance, such that its primary <Property Set Table> component's kth <Property Set> component consists of <Colour> and <Image Mapping Function> instances for sandy ground under normal, Out the Window (OTW) viewing conditions. A terrain <Polygon> instance that references this set will do so by having a <Property Set Index> component that is associated to the <Property Set Table Group> instance and the index value of which is set to k. FAQS: Q. Is a <Property Set Index> a 1-based index? A. Yes. Q. I am attempting to consume an object, such as a <Point Feature> instance, the attributes of which are specified by a <Property Set Index> instance. What can I do to get access to the actual attribute objects being referred to? A. A consumer can access the actual attribute objects contained within the <Property Set Table>, as though they had been directly attached to the object. See SE_InitializeComponentIterator()'s directly_attach_table_components parameter, and SE_GetComponent()'s directly_attach_table_components parameter. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Associated to (one-way) one Property Set Table Group instance Composed of (two-way) zero or one Property Set Index Control Link instance Component of (two-way) zero or more Feature Representation instances zero or more Geometry Representation instances Field Elements: SE_Integer_Positive index; /* * The index field specifies which <Property Set> instance is being * referred to within the primary <Property Set Table> component of * the associated <Property Set Table Group> instance. */ ------------------------------------------------------------------------------- Class Name: Property Set Index Control Link Definition: An instance of this DRM class specifies an <Expression> instance that determines the index field value of all target <Property Set Index> instances, thus controlling which <Property Set> instance is referenced by each such <Property Set Index> instance. Note that since each controlled <Property Set Index> instance may be bound to a different <Property Set Table Group> instance, and thus to a different primary <Property Set Table> instance, the fact that their index values are the same does not mean that the set of <Property Set Index> instances controlled by a given <Property Set Index Control Link> instance reference the same <Property Set> instance. Primary Page in DRM Diagram: 17 Secondary Pages in DRM Diagram: 19 Example: 1. A tree canopy appears different at different times of the year, with a different colour and texture. This could be achieved by using a different <Property Set> for each period of the year. Each <Property Set> would contain the appropriate <Colour> and <Image Mapping Function>. A <Property Set Index Control Link> would be used to allow the appropriate <Property Set> to be selected. FAQS: Q. What does a <Property Set Index Control Link> control? A. A <Property Set Index Control Link> controls the value of the index stored in the <Property Set Index> instances that reference it. Q. Can a <Property Set Index Control Link> be used to change which <Property Set Table> is accessed within a <Property Set Table Group>? A. No. The index always refers to the primary <Property Set Table>. Q. Can a <Property Set Index Control Link> be used to switch from one <Property Set Table Group> to a different <Property Set Table Group>? A. No. The link to the <Property Set Table Group> is an association within the transmittal, and associations cannot be changed dynamically. Superclass: Control Link Constraints: Publishable Object Composed of (two-way) (inherited) one or more {ordered} Expression instances Component of (two-way) one or more Property Set Index instances Inherited Field Elements: SE_String description; /* * The description field specifies a text description of the given * <Control Link> instance's purpose. */ Field Elements: SE_Integer_Positive expr_index; /* * The expr_index field specifies the component <Expression>, the * value of which controls the index of the affected * <Property Set Index>. */ ------------------------------------------------------------------------------- Class Name: Property Set Table Definition: An instance of this DRM class is conceptually an ordered collection of <Property Set> instances, where the ordering is required to permit the contents of the <Property Set Table> instance to be referenced by other objects. A <Property Set> instance within a <Property Set Table> instance is referenced by its ordinal position in the collection by means of <Property Set Index> instances, as specified in the definition of <Property Set Index>. Primary Page in DRM Diagram: 19 Example: 1. A <Property Set Table> specifying <Property Set> instances for normal, Out The Window (OTW) viewing. 2. A <Property Set Table> specifying <Property Set> instances for viewing through Night Vision Goggles (NVG). 3. A <Property Set Table> specifying <Property Set> instances for OTW viewing using an enhanced set of colours and textures. 4. A <Property Set Table> that contains <Property Set> instances that all contain a <Colour> and two <Image Mapping Function> instances. This <Property Set Table> would have regular set to SE_TRUE. FAQS: None. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Property Set Table Size Composed of (two-way) one or more {ordered} Property Set instances Composed of (two-way metadata) zero or one Access instance zero or one Citation instance zero or more Cross Reference instances zero or one Description instance Component of (two-way) one Property Set Table Group instance Field Elements: SE_String table_usage; /* * The table_usage field specifies the use for which the given * <Property Set Table> instance is provided. */ SE_Boolean regular; /* * If the value of the regular field is SE_TRUE, all <Property Set> * components of the * given <Property Set Table> instance contain the same number of * objects, and these objects are of the same types. Otherwise * <Property Set> instances in the table may contain very * different sets of objects. */ ------------------------------------------------------------------------------- Class Name: Property Set Table Group Definition: An instance of this DRM class specifies an interchangeable group of one or more <Property Set Table> instances. The primary <Property Set Table> in the group is indicated by the primary_table_index. When a reference is made to a <Property Set Table> (for example, from a <Property Set Index> component of a <Polygon>), the reference identifies the <Property Set Table Group> and the index within the <Property Set Table>, but not the specific <Property Set Table> within the <Property Set Table Group>. By definition, a <Property Set Index> refers to a <Property Set> from the primary <Property Set Table> of the indicated <Property Set Table Group>. An alternate <Property Set Table> from within the <Property Set Table Group> can be chosen at the discretion of the data consumer. Primary Page in DRM Diagram: 19 Secondary Pages in DRM Diagram: 10 Example: 1. One <Property Set Table Group> in the transmittal, and that group has only one <Property Set Table> within the group. That <Property Set Table> is the one and only <Property Set Table> for the entire transmittal. 2. A <Property Set Table Group> with two <Property Set Table> components, one for normal, Out The Window (OTW) viewing, the other to change the appearance of the view to be a view as seen through Night Vision Goggles (NVG). 3. A <Property Set Table Group> with three <Property Set Table> components with the same usage of OTW. Why three tables? One <Property Set Table> defines the colours and textures as originally created by the data modelers. The second <Property Set Table> has different shades of blue for the lakes and skies because a company VIP came through and didn't like the blues that were there. The third <Property Set Table> contains yet another set of blues for the lakes, different textures for the lakes and different shades of green for the trees and tanks, because the customer in charge of the program came through and didn't think the colours and textures were realistic. FAQS: Q. Can a transmittal in any way refer to an <Property Set Table> in a <Property Set Table Group> other than the primary <Property Set Table>? A. No. The only <Property Set Table> that can be referenced in any <Property Set Table Group> is the primary <Property Set Table>. Q. Since they cannot be referenced in a transmittal, why bother to have alternate <Property Set Table> instances within a <Property Set Table Group>? A. Because in real life, many run-time systems have multiple colour and material tables they can switch between for various reasons, and these tables should be shared to promote interoperability. See the example section, below. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Property Set Table Size Associated by (one-way) zero or more Property Set Index instances Composed of (two-way) one or more {ordered} Property Set Table instances Composed of (two-way metadata) zero or one Access instance zero or one Citation instance zero or more Cross Reference instances zero or one Description instance Component of (two-way) one Property Set Table Library instance Field Elements: SE_Integer_Positive primary_table_index; /* * The primary_table_index (which is 1-based) specifies the primary * <Property Set Table> component from the ordered * <Property Set Table> components of the given * <Property Set Table Group> instance. */ SE_Integer_Positive table_size; /* * The table_size field specifies the size of each * <Property Set Table> within the given * <Property Set Table Group> instance. */ ------------------------------------------------------------------------------- Class Name: Property Set Table Library Definition: An instance of this DRM class is a <Library> of <Property Set Table Group> instances. Primary Page in DRM Diagram: 10 Secondary Pages in DRM Diagram: 1 19 Example: 1. Consider a transmittal containing large stretches of various types of terrain, represented with texture-mapped <Polygon> instances, where the textures are blended with <Colour> instances. For efficiency, the source of this transmittal uses a library of terrain textures, which are repeated at intervals across the terrain. Consequently, a limited number of <Image Mapping Function>, <Colour> pairs are repeated across a large number of <Polygon> instances as components. Rather than creating many duplicate objects, the data provider creates a <Property Set Table Library>. Each of the <Image Mapping Function>, <Colour> pairs is placed in a <Property Set>, which is in turn stored in the primary <Property Set Table> of an <Property Set Table Group> within the library. Each <Polygon> is then given a <Property Set Index> component, which is associated to the appropriate <Property Set Table Group>. FAQS: None. Superclass: Library Constraints: Publishable Object Composed of (two-way) one or more {ordered} Property Set Table Group instances Composed of (two-way metadata) (inherited) zero or one Access instance zero or one Citation instance zero or one Description instance Component of (two-way) one Transmittal Root instance ------------------------------------------------------------------------------- Class Name: Property Table Definition: An instance of this DRM class is a <Data Table> instance containing no location information, and therefore has no spatial <Axis> components. Primary Page in DRM Diagram: 6 Secondary Pages in DRM Diagram: 3 8 18 19 Example: 1. Externally Controlled Table-Based Animation See <Scale Control Link>, example 1. 2. Cyclic Table-Based Animation See <Translation Control Link>, example 2. 3. Function-Driven Table-Based Animation See <Property Table Reference Control Link>, example 1. FAQS: Q. Why is a <Property Table> instance permitted to aggregate other <Property Table> instances? A. This mechanism allows a <Property Table> cell data element to specify an index into the set of ordered <Property Table> components, so that any component <Property Table> can be "re-used" by many data cells. See <Index Codes within Tables> for further details. Q. Why isn't a <Property Table> instance allowed to aggregate <Property Grid> instances? A. An object referencing a <Property Grid> shall specify a <Location> for the <Property Grid> origin, and a <Property Table> has no location information. Q. Why is a <Property Table> instance permitted to aggregate <Property Table Reference> instances? A. This mechanism allows a <Property Table> cell data element to specify an index into the set of ordered <Property Table Reference> components, so that any component <Property Table Reference> can be "re-used" by many data cells, therefore referring to "slices" of other <Property Table> instances without replicating the information. See <<Index Codes within Tables>> for further details. Q. Can values from a <Property Table> be used to drive <Control Link> instances? A. Yes; this is possible in the following way. 1) Store the values in cells of the <Property Table> such that their <Table Property Description>'s meaning is appropriate for the target <Control Link> that is to be driven. 2) Where the values are to be referenced in the controlling <Expression> of the target <Control Link>, place a <Predefined Function> SE_PREDEF_FUNC_TABLE_VALUE instance, which in turn contains an appropriate <Property Table Reference> as an argument, referencing the values in the <Property Table>. The <Predefined Function> will thereby return the value referenced from the <Property Table> as the value that drives the target <Control Link>. If desired, the <Property Table Reference> can itself be controlled using a <Property Table Reference Control Link>, allowing different values to be referenced from the <Property Table> based on a controlling <Expression>. See Part 4, Volume 5 Control Link Technical Guide of the SEDRIS Documentation Set for further details, as well as the examples shown here. Superclass: Data Table Constraints: Publishable Object Index Codes within Tables Axis Type Restrictions Finite Element Mesh Structure Non Cyclic Aggregations Associated by (one-way) zero or more Property Table Reference instances Composed of (two-way) (inherited) one or more {ordered} Axis instances one Classification Data instance zero or more {ordered} Image Mapping Function instances one or more {ordered} Table Property Description instances Composed of (two-way) zero or more {ordered} Property Table instances zero or more {ordered} Property Table Reference instances Composed of (two-way metadata) (inherited) zero or one Access instance zero or one Citation instance zero or more Cross Reference instances zero or one Data Quality instance zero or one Description instance zero or one Time Constraints Data instance Component of (two-way) (inherited) zero or one Data Table Library instance zero or more Property Grid instances Component of (two-way) zero or more Feature Representation instances zero or more Geometry Representation instances zero or more Property Set instances zero or more Property Table instances ------------------------------------------------------------------------------- Class Name: Property Table Reference Definition: An instance of this DRM class specifies a reference to an N-1 dimensional "slice" of an N-dimensional <Property Table> component of a <Data Table Library>, where N is the number of <Axis> components of the <Property Table>. <Property Table Reference> exists primarily to allow a data provider to select a set of parameters from a standard <Property Table> containing an indexed collection of alternatives. Since only one <Axis> requires a specific "tick mark" to be specified, <Property Table Reference> specifies the axis_type of the <Axis> to be matched, and the index_on_axis specifies the "tick mark" on that <Axis>. Primary Page in DRM Diagram: 18 Secondary Pages in DRM Diagram: 3 6 8 16 19 22 Example: 1. See <Property Table Reference Control Link>, example 1. FAQS: Q. Why not use a collection of <Property Value> instances instead of a <Property Table Reference> instance? A. In some cases this might be possible, and is not prohibited. However, some tables are multi-dimensional. It would not be possible to define <Property Value> instances to designate each combination of axis values that occur in a multi-dimensional table. Q. Why an N-1 dimensional slice? A. This is the only case for which there is a currently identified need, given the recursive composition capabilities of the <Property Table> class. Q. What restrictions are there on axis_type? A. The referenced <Property Table> shall contain an <Axis> with a matching axis_type; otherwise, there are no restrictions. Any <Axis> within the target <Property Table> may be specified. Q. Why is index_on_axis a zero-based index? A. Because the corresponding <Axis> data structures for "tick marks" are C arrays, and C uses zero-based indices for arrays. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Non Crossing Associations Reference To Data Table Library Associated to (one-way) one Property Table instance Composed of (two-way) zero or one Property Table Reference Control Link instance Component of (two-way) zero or more Feature Representation instances zero or more Geometry Representation instances zero or more Image instances zero or more Predefined Function instances zero or more Property Set instances zero or more Property Table instances zero or more Vertex instances Field Elements: EDCS_Attribute_Code axis_type; /* * The axis_type field specifies the property being described by * the target <Axis>. */ SE_Integer_Unsigned index_on_axis; /* * The index_on_axis field specifies the (0-based) index of the * "tick mark" being referenced on the specified <Axis>. This * allows the "tick mark" to be specified in a manner independent * of the class of the <Axis>. The only restriction is that the * value of index_on_axis shall be between zero and * axis_value_count-1 for the specified <Axis>. * * If index_on_axis specifies some value j, then the (j+1)th * "tick mark" on the <Axis> is being referenced, regardless * of the data type of the tick marks specified by the specific * subclass of <Axis> being used. */ ------------------------------------------------------------------------------- Class Name: Property Table Reference Control Link Definition: An instance of this DRM class specifies an <Expression> instance, the value of which determines the index_on_axis field value of all target <Property Table Reference> instances. Primary Page in DRM Diagram: 17 Secondary Pages in DRM Diagram: 18 Example: 1. Consider an instance of a geometric model of a wind sock, which is to be rotated depending on the wind direction; that is, whenever the wind changes, the <Geometry Model Instance> is rotated accordingly. The <Rotation> of the applicable <LSR Transformation> controlled by a <Rotation Control Link>, which is driven using values from a <Property Table>. That is, the <Rotation Control Link> is driven by a <Predefined Function>, SE_PREDEF_FUNC_TABLE_VALUE, containing a <Property Table Reference> referring to the <Property Table> containing the rotation values. <LSR Transformation> <> | <Rotation> axis = SE_LSR_TRNSFRM_Y angle = 0.0 <> | <Rotation Control Link> expr_index = 1 lower_index = 0 upper_index = 0 <> | <Predefined Function> function = SE_PREDEF_FUNC_TABLE_VALUE <> | <Property Table Reference> axis_type = { SE_ELEM_CODE_TYP_ATTRIBUTE, { EAC_WIND_SPEED }} index_on_axis = 0 <> | <Property Table Reference Control Link> expr_indx = 1 <> | <Variable> meaning = { SE_ELEM_CODE_TYP_ATTRIBUTE, { EAC_WIND_SPEED }} The wind sock rotates around the Y axis, depending on wind speed. (That is, if the wind speed is zero, it'll hang down toward the ground, while if the wind speed is higher, it'll straighten out parallel to the ground). The <Property Table> is classified as ECC_CONTROL_VALUE, and has a <Table Property Description> specified by SE_VAR_CODE_ROTATION_ANGLE. The <Property Table> specifies, for each EAC_WIND_SPEED value, the angle to which the wind sock should be rotated. <Property Table> <> | | |- <Classification Data> | ECC_CONTROL_VALUE | | |- <Regular Axis> | axis_type = { SE_ELEM_CODE_TYP_ATTRIBUTE, | { EAC_WIND_SPEED }} | interpolation_type = SE_INTERPOLATION_TYP_LINEAR | | |- <Table Property Description> meaning = { SE_ELEM_CODE_TYP_VARIABLE, SE_VAR_CODE_ROTATION_ANGLE } 2. Consider a <Translation Control Link> instance that is to be driven using values from a <Property Table>. The table values that are to be used are to be cycled through 8 times, with each cycle taking 10 seconds. This sequence of cycles is to be triggered from outside the transmittal. <Property Table> <> | |- <Classification Data> | ECC_CONTROL_VALUE | |- <Regular Axis> | EAC_PERIODIC_CYCLE_TIME | |- <Table Property Description> meaning = { SE_ELEM_CODE_TYP_VARIABLE, {SE_VAR_CODE_TRANSLATION_AMOUNT }} The <Translation Control Link>'s controlling <Expression> is a <Predefined Function> instance for SE_PREDEF_FUNC_TABLE_VALUE, whose argument is a <Property Table Reference> instance referring to the <Property Table> containing the translation values. <Translation Control Link> <> | <Predefined Function> function = SE_PREDEF_FUNC_TABLE_VALUE <> | <Property Table Reference> <> | <Property Table Reference Control Link> <> | <Predefined Function> function = SE_PREDEF_FUNC_CYCLE_TIME <> | ___________|________________________________________________ |A |B |C |D |E |F |G | | | | | | | Variable Literal Predefined Literal Literal Literal Literal (10) Function (8) (0) (10) (TRUE) (SE_PREDEF_FUNC_SIM_GMT) Note that the <Table Property Description> for the control values and the <Variable> instance controlling the referencing expression have the same meaning = { SE_ELEM_CODE_TYP_VARIABLE, {SE_VAR_CODE_TRANSLATION_AMOUNT }} The <Property Table Reference Control Link> controls which value is is referenced from the <Property Table>, and is itself driven by the SE_PREDEF_FUNC_CYCLE_TIME <Predefined Function>. The cycle length (10 seconds) and the number of cycles (8) are specified as arguments to the function. The <Variable> drives the <Property Table Reference Control Link> through the <Predefined Function>, so that it determines which value is referenced from the <Property Table>. To provide the hook for this <Variable> to be set from outside the transmittal, the <Variable> is associated with an <Interface Template> (not shown). If this <Translation Control Link> appears inside a <Model>, then to set the <Variable> using another variable from outside the transmittal, the data provider merely has to have the <Geometry Model Instance> supply a <Variable> from its own context for the value of the <Model>'s <Variable>. FAQS: None. Superclass: Control Link Constraints: Publishable Object Composed of (two-way) (inherited) one or more {ordered} Expression instances Component of (two-way) one or more Property Table Reference instances Inherited Field Elements: SE_String description; /* * The description field specifies a text description of the given * <Control Link> instance's purpose. */ Field Elements: SE_Integer_Positive expr_index; /* * For the given <Property Table Reference Control Link> instance, * the value of the expr_index field specifies which of the ordered * <Expression> components is that which controls the index_on_axis * value of the affected <Property Table Reference> instances. */ ------------------------------------------------------------------------------- Class Name: Property Value Definition: An instance of this DRM class specifies a property of the attributed SEDRIS object and its value. Primary Page in DRM Diagram: 6 Secondary Pages in DRM Diagram: 2 3 8 9 12 18 19 Example: 1. The <Property Value> instances of a representation of a lake might include its EAC_SURFACE_MATERIAL_TYPE. 2. Consider the man-made materials that can be found on any surface, such as cloth, carpet, asphalt, silk, metal, and natural materials, such as wood. To specify the material making up a wooden wall represented by a <Polygon> instance, the data provider represents it as <Polygon> <> | | <Property Value> meaning = { SE_PROP_CODE_TYP_ATTRIBUTE, { EAC_SURFACE_MATERIAL_TYPE }} value = { EDCS_AVT_ENUMERATION, { EEC_SRFMATTY_WOOD }} 3. Consider an <Areal Feature> representing a surface covered with vegetation. To specify the type of vegetation, the data provider gave it a <Property Value> component with a meaning of EAC_VEGETATION_TYPE, and the value specifying the exact type of vegetation. 4. Consider an <Areal Feature> labeled as "Red Field", because the surface represented has clay soil present. To describe the soil composition at some point or for some surface, <Property Value> instances are used, so a <Property Value> of the appropriate attribute is attached to the <Areal Feature>. 5. Consider acoustic response, that is, changes to characteristics of objects in response to acoustic stimuli, such as the resonant frequency of a plate, response (such as echo, phase shift, absorption, diffraction), or frequency. 6. Consider electromagnetic emission, that is, the emission characteristics of a geometric object or feature, including the electromagnetic wavelengths, amplitudes, and directionality. Examples include (A) The thermal signature of a rock at noon is described by its electromagnetic emission. (B) The headlight of a truck. 7. Consider electromagnetic response, that is, changes to characteristics of objects in response to electromagnetic stimuli. Some examples of such properties include reflective and specular characteristics of a surface. 8. Consider hydrology, that is, an attribute describing some aspect of the flow of water at a location or on a surface. For the <Polygon> instances that represent Salmon Creek, an example hydrology property represented by <Property Value> instances is the average speed of currents in the stream bed. 9. <Property Value> instances can provide metrics, measurements that that relate to scalar properties, such as the elevation at a particular location. FAQS: None. Superclass: Property Constraints: Publishable Object Property Characteristic Restrictions Property Meaning Restrictions No Attribute Conflicts Composed of (two-way) (inherited) zero or more Property Characteristic instances Component of (two-way) zero or more Camera Point instances zero or more Classification Data instances zero or more Environmental Domain Summary instances zero or more Feature Representation instances zero or more Feature Topology instances zero or more Geometry Representation instances zero or more Model instances zero or more Property Description instances zero or more Property Set instances zero or more Reference Surface instances zero or more Table Property Description instances Inherited Field Elements: SE_Property_Code meaning; /* * The meaning field specifies the meaning of the given * <Property> instance. */ Field Elements: EDCS_Attribute_Value value; /* * The value field specifies the value of the given property. */ ------------------------------------------------------------------------------- Class Name: Proximity Data Definition: An instance of this DRM class specifies the semantic meaning of the association relationship with which it is bound, which will represent a spatial relationship. Primary Page in DRM Diagram: 9 Example: None. FAQS: None. Superclass: Base Spatial Association Data Constraints: Publishable Object Inherited Field Elements: SE_Spatial_Association_Meaning_Type meaning; /* * The meaning field specifies the semantic meaning of the association * relationship with which the given instance of * <Base Spatial Association Data> is bound. */ Field Elements: SE_Long_Float distance; /* * The value of the distance field, which is measured in metres, * represents the shortest distance between any two points of thing1 * and thing2, where thing1 and thing2 are the environmental objects * represented by the SEDRIS object instances for which a relationship * is being represented by the given instance of <Proximity Data>. */ ------------------------------------------------------------------------------- Class Name: PS Augmented 3D Location Definition: An instance of this DRM class specifies a coordinate within the Augmented Polar Stereographic (APS) 3D SRF. See [I18026] for a complete definition. Primary Page in DRM Diagram: 15 Example: 1. The Augmented Polar Stereographic Reference Frame provides reduced distortion at the polar regions of the Earth. This spatial reference frame is used for polar region navigation. FAQS: Q. Where can users obtain further information on APS? A. See the SRM for additional details. Superclass: Location 3D Constraints: Publishable Object Environment Root Spatial Reference Frame Image Anchor Spatial Reference Frame Model Spatial Reference Frame Component of (two-way) (inherited) zero or more Arc instances zero or more Camera Point instances zero or more Directional Light Behaviour instances zero or one Distance LOD Data instance zero or more Ellipse instances zero or more Feature Edge instances zero or more Feature Face instances zero or one Feature Node instance zero or more Image Anchor instances zero or more Label instances zero or more Perimeter Data instances zero or more Point instances zero or more Property Grid Hook Point instances zero or one Reference Origin instance zero or more Reference Vector instances zero or more Spatial Extent instances zero or more Spatial Index Related Feature Topology instances zero or more Spatial Index Related Features instances zero or more Spatial Index Related Geometry instances zero or more Spatial Index Related Geometry Topology instances zero or more Tack Point instances zero or more Vertex instances zero or more World 3x3 instances zero or more World Transformation instances zero or one Attachment Point instance zero or more Base Positional Light instances zero or one Contact Point instance zero or more Geometric Centre instances zero or more Separating Plane instances zero or more Sound Instance instances zero or more Stamp Behaviour instances zero or more Volume instances zero or more Volume Light Behaviour instances zero or more Volume LOD Data instances zero or more Volume Object instances Field Elements: SRM_Map_Projection_3D_Coordinate coordinate; /* * The coordinate field specifies the coordinate values. */ ------------------------------------------------------------------------------- Class Name: PS Surface Location Definition: An instance of this DRM class specifies a coordinate within the Polar Stereographic (PS) Surface SRF. See [I18026] for a complete definition. Primary Page in DRM Diagram: 15 Example: 1. The Polar Stereographic Reference Frame provides reduced distortion at the polar regions of the globe. This spatial reference frame is used for polar region navigation. FAQS: Q. Where can users obtain further information on PS? A. See the SRM for additional details. Superclass: Location Surface Constraints: Publishable Object Environment Root Spatial Reference Frame Image Anchor Spatial Reference Frame Model Spatial Reference Frame Component of (two-way) (inherited) zero or more Arc instances zero or more Camera Point instances zero or more Directional Light Behaviour instances zero or one Distance LOD Data instance zero or more Ellipse instances zero or more Feature Edge instances zero or more Feature Face instances zero or one Feature Node instance zero or more Image Anchor instances zero or more Label instances zero or more Perimeter Data instances zero or more Point instances zero or more Property Grid Hook Point instances zero or one Reference Origin instance zero or more Reference Vector instances zero or more Spatial Extent instances zero or more Spatial Index Related Feature Topology instances zero or more Spatial Index Related Features instances zero or more Spatial Index Related Geometry instances zero or more Spatial Index Related Geometry Topology instances zero or more Tack Point instances zero or more Vertex instances zero or more World 3x3 instances zero or more World Transformation instances Field Elements: SRM_Map_Projection_Surface_Coordinate coordinate; /* * The coordinate field specifies the coordinate values. */ ------------------------------------------------------------------------------- Class Name: Pseudo Code Function Definition: An instance of this DRM class specifies the behaviour of a function that does not correspond to a <Predefined Function>. Primary Page in DRM Diagram: 16 Example: None. FAQS: Q. Why is <Pseudo Code Function> needed? Doesn't this leave room for ambiguity ? A. The decision to support <Pseudo Code Function> was based on three primary concerns. First, we felt that it would be nearly impossible to capture every possible function that would be used to define the behaviour of <Control Link> instances. Second, <Expression> instances lack the expressive power to define functions that require looping, branching, etc. Finally, given the first two, it is recognized that many functions that are relatively simple when viewed as pseudo code or code fragments, would become overly complicated when converted into an expression tree. It is important to keep in mind, that while any valid <Expression> instances could be converted into executable code or structures that could be directly used by a consuming system, most systems will not use them that way. Currently, the majority of consuming systems would require that the expression be recoded into the consuming system. For complex functions, pseudo code may be easier to convert. Superclass: Function Constraints: Publishable Object Non Cyclic Aggregations Composed of (two-way) (inherited) zero or more {ordered} Expression instances Component of (two-way) (inherited) zero or more Control Link instances zero or more Feature Model Instance instances, each with a Model Instance Template Indices link object zero or more Function instances zero or more Geometry Model Instance instances, each with a Model Instance Template Indices link object Inherited Field Elements: EDCS_Attribute_Value_Type value_type; /* * The value_type of a <Function> instance returns the type of value * produced when the <Function> instance is evaluated for its arguments. */ Field Elements: SE_String name; /* * The name field specifies the name of the function being represented. */ SE_String pseudo_code; /* * The pseudo_code field specifies the psuedo code describing the * behaviour of the function represented by the given * <Pseudo Code Function> instance. */ ------------------------------------------------------------------------------- Class Name: Pyramid Directional Light Definition: An instance of this DRM class specifies a light, the intensity of which varies depending on the observer's position relative to the light's location, direction, and lobe, which is pyramid-shaped. It is possible when defining the <Lobe Data> component of a <Pyramid Directional Light>, to set the horizontal_width or vertical_width to 0. When one of these values is set to 0, then it means infinity, and that there are no bounds in that direction. The shape of the light then becomes a wedge shape. If a secondary colour exists, then it is seen outside the lobe. Primary Page in DRM Diagram: 21 Example: 1. Consider a <Pyramid Directional Light> with a primary colour that is a <Colour Index> with intensity_level = 0.9, and which also has a secondary colour. The minimum_colour_intensity is 0.0. The use_full_intensity flag is SE_FALSE. The <Lobe Data> component has horizontal_width = 60.0 and vertical_width = 60.0. equation: final_intensity = minimum_colour_intensity + ((((width / 2.0) - degrees_away_from_direction_vector) / (width / 2.0)) * (full_intensity - minimum_colour_intensity)) At 10 degrees from the light direction vector in the horizontal direction, the final_intensity is 0.6 = 0.0 + ((((60.0 / 2.0) - 10.0) / (60.0 / 2.0)) * (0.9 - 0.0)) At 35 degrees from the light direction vector in the horizontal direction, the final_intensity is 1.0 (using the secondary colour), because this lies outside the lobe. 2. Consider a <Pyramid Directional Light> with a primary colour that is an <Inline Colour>, so that the full intensity is 1.0. The minimum_colour_intensity is 0.2. The use_full_intensity flag is SE_TRUE. The component <Lobe Data> horizontal_width is 20.0 and the vertical_width is 20.0. Lying on the light direction vector (that is, at 0 degrees), the final_intensity is 1.0. At 10 degrees from the light direction vector in the horizontal direction, the final_intensity is 0.2, since this position is outside the lobe. FAQS: None. Superclass: Directional Light Behaviour Constraints: Publishable Object Composed of (two-way) (inherited) one Lobe Data instance one Location instance Component of (two-way) (inherited) one or more Light Rendering Properties instances Field Elements: SE_Boolean use_full_intensity; /* * If SE_TRUE, the use_full_intensity field specifies that the full * intensity of the light is shown in the pyramid shaped area. * Otherwise, the intensity of the light decreases (towards the * minimum_colour_intensity value) as one moves away from the * SE_REF_VEC_TYP_LIGHT_DIRECTION vector. */ SE_Long_Float minimum_colour_intensity; /* * The minimum_colour_intensity field's value is used in conjunction * with the primary colour's intensity value. If the primary colour * is a <Colour Index> instance, the full intensity is specified by * its intensity_level field. If the primary colour is an * <Inline Colour> instance, the full intensity is 1.0. * * A location in the direct path of the <Lobe Data>'s * SE_REF_VEC_TYP_LIGHT_DIRECTION vector receives the * full intensity value. If use_full_intensity is SE_FALSE, * the intensity decreases with increasing distance from * the light direction vector, until the boundary * specified by the horizontal and vertical <Lobe Data> * widths is reached. Outside the lobe, the intensity is * minimum_colour_intensity. * * If the minimum_colour_intensity value is 0.0, the * secondary colour (if present) will be seen outside the * lobe. If no secondary colour is present, then nothing * is visible outside the lobe. */ SE_Boolean invisible_behind; /* * If the value of the invisible_behind field is SE_TRUE, the * directional light is invisible when viewed from behind the * plane of the directional light. */ ------------------------------------------------------------------------------- Class Name: Quadrant Data Definition: An instance of this DRM class specifies which quadrant of the quadtree is represented by the associated branch of the given quadrant-related aggregation, where the quadtree as a whole corresponds to the entire aggregation. Primary Page in DRM Diagram: 4 Secondary Pages in DRM Diagram: 8 Example: See <Quadrant Related Features>, <Quadrant Related Geometry> for examples. FAQS: None. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Quadrant Related Organizing Principle Field Elements: SE_Quadrant quadrant; /* * The quadrant field specifies the quadrant represented by the * associated branch of the given quadtree related organization. */ ------------------------------------------------------------------------------- Class Name: Quadrant Related Features Definition: An instance of this DRM class specifies an aggregation of <Feature Hierarchy> objects in which each component <Feature Hierarchy> represents a branch of a Quadrant. The quadrant represented by a branch is specified by the <Quadrant Data> associated with that branch. The bounding region that the <Feature Hierarchy> components occupy is defined by the <Spatial Extent> of the <Quadrant Related Features>. Primary Page in DRM Diagram: 8 Example: 1. Consider a region of terrain that is organized into quadrants, where the upper-right quadrant consists of ocean, and the other three quadrants consist of the terrain bordering the ocean. The ocean quadrant is not represented in the producer's system. The region is represented in SEDRIS by a <Quadrant Related Features> with 3 component <Union Of Features>. (Since the remaining quadrant had no <Feature Representation> instances, it was not represented.) 2. Consider a <Quadrant Related Features> instance linked to a <Union Of Features> instance representing its upper-right quadrant, via a <Quadrant Data> instance. The <Quadrant Data> instance's quadrant value is SE_QUADRANT_RIGHT_FRONT. <Quadrant Related Features> <> | |-- <Quadrant Data> | quadrant = SE_QUADRANT_RIGHT_FRONT | <Union Of Features> FAQS: Q. If a <Quadrant Related Features> has less than 4 components, why is the data being organized under a <Quadrant Related Features> at all? A. A <Quadrant Related Features> is used when an object in the hierarchy contains spatial components that occupy a certain quadrant. These quadrants might not contain <Primitive Feature> objects, which is why instances of this class can have less than four components. Q. Where is the <Spatial Extent> component? A. <Quadrant Related Features> automatically has a <Spatial Extent> component, because it is a <Feature Representation>. Unlike <Feature Representations> in general, however, <Quadrant Related Features> has a constraint stating that the <Spatial Extent> component is mandatory. Superclass: Aggregate Feature Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Crossing Associations Precedence of Property Set Index Non Cyclic Aggregations Colour Mapping Restrictions Image Mapping Functions and Texture Coordinates Distinct Link Objects Quadrant Related Organizing Principle Associated to (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or more Property Grid instances, each with a Base Association Data link object Associated by (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or more Property Grid instances, each with a Base Association Data link object zero or one Hierarchy Summary Item instance Composed of (two-way) (inherited) zero or one Classification Data instance zero or more Label instances zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or one Rendering Priority Level instance zero or one Reference Surface instance zero or more Sound Instance instances zero or more Base LOD Data instances zero or more Colour instances zero or more Feature Topology Hierarchy instances zero or more {ordered} Image Mapping Function instances zero or one Perimeter Data instance zero or one Presentation Domain instance zero or more Property Description instances zero or one Spatial Extent instance Composed of (two-way) a bounded set of 1..4 Feature Hierarchy instances, each with a Quadrant Data link object Composed of (two-way metadata) (inherited) zero or one Access instance zero or more Cross Reference instances zero or one Data Quality instance zero or one Description instance zero or one Time Constraints Data instance Component of (two-way) (inherited) zero or more Union Of Features instances zero or more Alternate Hierarchy Related Features instances, each with a Hierarchy Data link object zero or more Classification Related Features instances, each with a Classification Data link object zero or one Environment Root instance zero or one Feature Model instance zero or more LOD Related Features instances, each with a Base LOD Data link object zero or more Octant Related Features instances, each with a Octant Data link object zero or more Perimeter Related Features instances, each with a Perimeter Data link object zero or more Quadrant Related Features instances, each with a Quadrant Data link object zero or more Spatial Index Related Features instances, each with a Spatial Index Data link object zero or more State Related Features instances, each with a State Data link object zero or more Time Related Features instances, each with a Time Constraints Data link object Inherited Field Elements: SE_Boolean unique_descendants; /* * If the value of the unique_descendants field is SE_TRUE, each * descendant, that is, each <Feature Representation> instance that * exists in the component tree rooted at the given <Aggregate Feature>, * shall be unique, in the * sense that it shall appear in only one branch of this aggregation. * If unique_descendants is SE_FALSE, at least one * <Feature Representation> instance * appears in more than one branch of the aggregation. */ SE_Boolean strict_organizing_principle; /* * If the value of the strict_organizing_principle field is SE_TRUE, * each branch of this aggregation * strictly complies with the organizing principle for its * particular subclass. If this value is SE_FALSE, at least * one branch does not strictly comply with the given * organizing principle. See the organizing principle constraint * for each specific subclass for details. */ ------------------------------------------------------------------------------- Class Name: Quadrant Related Geometry Definition: An instance of this DRM class specifies an aggregation of <Geometry Hierarchy> objects in which each component <Geometry Hierarchy> represents a branch of a Quadrant. The quadrant represented by a branch is specified by the <Quadrant Data> associated with that branch. The bounding region that the <Geometry Hierarchy> components occupy is defined by the <Spatial Extent> of the <Quadrant Related Geometry>. Primary Page in DRM Diagram: 4 Example: 1. Consider a representation of a region of terrain that is organized into quadrants, where the upper-right quadrant consists of ocean, and the other three quadrants consist of the terrain bordering the ocean. The ocean quadrant is not represented in the producer's system. The region is represented in SEDRIS by a <Quadrant Related Geometry> instance with three <Union Of Primitive Geometry> components. (Since the remaining quadrant had no <Polygon> instances, it was not represented.) 2. Consider a quadtree that is represented in a transmittal by an <Quadrant Related Geometry> instance. The southwest quadrant of the quadtree is a <Union Of Primitive Geometry> aggregated by the <Quadrant Related Geometry> as follows: <Quadrant Related Geometry> <> | |-- <Quadrant Data> | quadrant = SE_QUADRANT_LEFT_BACK | <Union Of Primitive Geometry> FAQS: Q. If a <Quadrant Related Geometry> has less than 4 components, why is the data being organized under a <Quadrant Related Geometry> at all? A. A <Quadrant Related Geometry> is used when an object in the hierarchy contains spatial components that occupy a certain quadrant. These quadrants might not contain <Primitive Geometry> objects, which is why instances of this class can have less than four components. Q. Where is the <Spatial Extent> component? A. <Quadrant Related Geometry> automatically has a <Spatial Extent> component, because it is a <Geometry Hierarchy>. Unlike <Geometry Hierarchies> in general, however, <Quadrant Related Geometry> has a constraint stating that the <Spatial Extent> component is mandatory. Superclass: Aggregate Geometry Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Cyclic Aggregations Precedence of Property Set Index Non Crossing Associations Colour Mapping Restrictions Distinct Geometric Centre Image Mapping Functions and Texture Coordinates Distinct Link Objects Quadrant Related Organizing Principle Associated to (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object Associated by (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or one Hierarchy Summary Item instance zero or more Reference Surface instances Composed of (two-way) (inherited) zero or one Classification Data instance zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or one Reference Surface instance zero or more Sound Instance instances zero or more Base LOD Data instances zero or one Bounding Volume instance zero or more Camera Point instances zero or more Collision Volume instances zero or more Colour instances zero or one Conformal Behaviour instance a bounded set of 0..3 Geometric Centre instances zero or more Geometry Topology Hierarchy instances zero or more {ordered} Image Mapping Function instances zero or one Light Rendering Properties instance zero or more Light Source instances zero or one LSR Transformation instance zero or one Overload Priority Index instance zero or one Perimeter Data instance zero or one Presentation Domain instance zero or more Property Description instances zero or one Rendering Priority Level instance zero or one Rendering Properties instance zero or one Spatial Extent instance zero or one Stamp Behaviour instance Composed of (two-way) a bounded set of 1..4 Geometry Hierarchy instances, each with a Quadrant Data link object Composed of (two-way metadata) (inherited) zero or one Time Constraints Data instance zero or one Access instance zero or more Cross Reference instances zero or one Data Quality instance zero or one Description instance Component of (two-way) (inherited) zero or more Alternate Hierarchy Related Geometry instances, each with a Hierarchy Data link object zero or more Animation Related Geometry instances zero or more Classification Related Geometry instances, each with a Classification Data link object zero or one Environment Root instance zero or one Geometry Model instance zero or more LOD Related Geometry instances, each with a Base LOD Data link object zero or more Octant Related Geometry instances, each with a Octant Data link object zero or more Perimeter Related Geometry instances, each with a Perimeter Data link object zero or more Quadrant Related Geometry instances, each with a Quadrant Data link object zero or more Separating Plane Relations instances, each with a Separating Plane Data link object zero or more Spatial Index Related Geometry instances, each with a Spatial Index Data link object zero or more State Related Geometry instances, each with a State Data link object zero or more Time Related Geometry instances, each with a Time Constraints Data link object zero or more Union Of Geometry Hierarchy instances Inherited Field Elements: SE_Boolean unique_descendants; /* * If the value of the unique_descendants field is SE_TRUE, each * descendant of this aggregation, * that is, each <Geometry Representation> instance that exists * in the component tree * rooted at the given <Aggregate Geometry>, shall be unique, in the * sense that it shall appear in only one branch of this aggregation. * If unique_descendants is SE_FALSE, at least one * <Geometry Representation> instance * appears in more than one branch of the aggregation. */ SE_Boolean strict_organizing_principle; /* * If the value of the strict_organizing_principle field is SE_TRUE, * each branch of this aggregation * strictly complies with the organizing principle for its * particular subclass. If this value is SE_FALSE, at least * one branch does not strictly comply with the given * organizing principle. See the organizing principle constraint * for each specific subclass for details. */ ------------------------------------------------------------------------------- Class Name: Reference Origin Definition: An instance of this DRM class specifies a location representing the origin of the spatial reference frame in which the data was represented originally. This location is intended to convey information about how the original data was represented on the data provider's system. Primary Page in DRM Diagram: 1 Example: 1. A producer's image generator is configured to understand the Local (origin offset from the UTM zone origin) Augmented (Z added) UTM reference frame the database is built in. However, the producer stored the data in SEDRIS in the Augmented UTM reference frame with the local offset removed. For purposes of comparison, the consumer would like to know the offset used in the original database development. This is so the producer can do direct comparisons of the producer and consumer systems using their respective image generators. FAQS: Q. Is the <Reference Origin> needed to properly locate the data? A. No. The <Reference Origin> is not to be used for locating data. It is only intended to convey information about how the producer's native data is stored. Q. What would the <Reference Origin> be used for? A. Correlation of data between consumer and producer. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Composed of (two-way) one Location instance Component of (two-way) one Transmittal Root instance Field Elements: SE_SRF_Info srf_info; /* * The srf_info field specifies the spatial reference frame within * which the given <Reference Origin> instance is defined. */ ------------------------------------------------------------------------------- Class Name: Reference Surface Definition: An instance of this DRM class specifies, for the hierarchy instance(s) of which it is a component, a surface which is to be used to resolve the elevation of <Location 2D> instances in the component tree rooted at each hierarchy instance. In addition, a <Reference Surface> specifies how the surface is to be used in the resolution process. A hierarchy instance requires a <Reference Surface> if - there are <Location 2D> instances below the hierarchy, - the <Location 2D> instances are in the scope of a 3D spatial reference frame, and - the data provider wants the locations to lie on a surface other than the last default surface (The initial default is the spatial reference frame's vertical offset model). A <Geometry Hierarchy>'s and <Reference Surface>'s field values define a surface for the resolution process as follows; there are several cases. 1. The <Geometry Hierarchy> is a <Property Grid Hook Point> that aggregates at least one <Property Grid> with these qualifications: a. its <Classification Data> matches the <Reference Surface>'s classification field, b. it has 2 spatial axes corresponding to the horizontal coordinates of the SRF, and c. it has a <Table Property Description> for height, elevation, or bathymetry. If the <Property Grid> meets the above criteria, then it defines a resolution surface. 2. The <Geometry Hierarchy> is a <Union Of Primitive Geometry> that aggregates <Surface Geometry> with <Classification Data> matching the <Reference Surface>'s classification field. In this case, all such <Surface Geometry> instances combine to form the resolution surface. (Note that the multiplicity_rule field deals with surface complexity). 3. The <Geometry Hierarchy> is a Distance, Index, Map Scale, or Spatial Resolution <LOD Related Geometry> that aggregates (directly or indirectly) <Geometry Hierarchy> cases 1 and/or 2 above under an LOD branch selected by the <Reference Surface> lod_rule field. 4. The <Geometry Hierarchy> aggregates some combination of cases 1, 2, or 3. In general, the set of all <Surface Geometry> and <Property Grid> instances the <Geometry Hierarchy> is culled by matching the <Reference Surface> classification field (and <Property Grid> qualifications) and matching LOD branches to the lod_rule field. The remaining geometry is the resolution surface used for ray intersections. Primary Page in DRM Diagram: 3 Secondary Pages in DRM Diagram: 8 9 Example: 1. Consider an <Environment Root> ER, having both a <Union Of Geometry Hierarchy> component UGH and a <Union Of Features> component UF. The <Union Of Geometry Hierarchy> instance contains a <Union Of Primitive Geometry> instance UPG_1 with a <Classification Data> component specifying ECC_TERRAIN_ELEVATION, and contains <Polygon> instances, which inherit the <Classification Data>. That is, UPG_1 is a polygonal representation of terrain, forming part of the larger environmental representation ER. UF, the feature representation of ER, has a <Reference Surface> component, which associates to the <Union of Primitive Geometry> and has these field values: multiplicity_rule = SE_RS_ELEV_SEL_HIGHEST classification = ECC_TERRAIN_ELEVATION lod_rule = SE_RS_LOD_SEL_ALL <Environment Root> <> | ---------------------------------------------------- | | <Union Of Geometry Hierarchy> <Union Of Features> <> <> | | <Union Of Primitive Geometry> <-------------- <Reference Surface> <> | ------------------------------ | | ..... <Classification Data> <Polygon> ECC_TERRAIN_ELEVATION Consequently, <Location 2D> instances found in the <Union Of Features> aggregation tree of UF use the terrain polygons of UPG_1 to resolve elevation. 2. Continuing example 1, the <Union Of Geometry Hierarchy> UGH under ER contains another <Union Of Primitive Geometry> instance UPG_2 containing <Polygon> instances classified as ECC_INLAND_WATER_ELEVATION. UF, in turn, aggregates a <Union Of Features> instance UF_2, which is classified as ECC_ENGINEERING_BRIDGE and contains <Linear Feature> instances using <Location 2D> instances. UF_2 also contains a <Reference Surface> instance with <Classification Data> tagged as ECC_INLAND_WATER_ELEVATION, and associated to UPG_2. Consequently, the <Location 2D> instances of the ECC_ENGINEERING_BRIDGE UF_2 will have elevation values derived for them by being evaluated against UPG_2. 3. Consider a <Reference Surface> instance R for which the geometry is a <Spatial Index Related Geometry> instance S. Each branch of S is a polygonal representation, part of which represents terrain surface, part roads, and part forest canopy. R associates to S, and its classification field is set to ECC_TERRAIN_ELEVATION. The resolution process then ignores the road and canopy polygons, but sees all the terrain polygons regardless of which union they're in. Consider a <Linear Feature> L representing a road, which mostly stays on the road geometry but sometimes strays off. L is placed in a <Union Of Features> aggregating a different <Reference Surface> instance R2 with associates to the same <Spatial Index Related Geometry> but has classification = ECC_ROAD, but which like R associates to S. The resolution process for R2 sees the road <Polygon> instances and ignores the others. For <Feature Node> instances that stray off the road, the corresponding <Location 2D> instances' rays will fail to intersect any road polygon, so the resolution process (as per case 3) applies, and the resolution process falls back on the previous override, which was the terrain surface. 4. Consider a terrain representation organized in 3 minute regions, which are grouped into 1 degree cells that are collected under one <Union Of Geometry Hierarchy> instance. In the same transmittal, <Feature Representation> and non-terrain <Geometry Representation> instances are organized under a corresponding spatial organization. Each 3 minute hierarchy has a <Reference Surface> associated to the corresponding 3 minute terrain. Each 1 degree hierarchy has a <Reference Surface> associated to the corresponding 1 degree terrain. Each of the highest level feature and non-terrain geometry hierarchies has a <Reference Surface> associated to the terrain <Geometry Hierarchy>. In this scheme, a <Location 2D> in a 3 minute region finds its resolution surface in the corresponding 3 minute terrain. If a <Location 2D> "strays" outside its region (i.e., strict_organizing_principle=SE_FALSE), then the containing 1 degree terrain resolves the <Location 2D>. If the location ray fails to intersect the 1 degree surface, then the full terrain <Union Of Geometry Hierarchy> is used. If ray/surface intersection still fails, the elevation is resolved by the vertical offset model. FAQS: Q. *Why* does a hierarchy need a <Reference Surface>? What do you mean by "elevations" for <Location 2D> instances? They don't have elevation. A. In a 3D spatial reference frame, <Location 2D> instances are thought of as lying on a surface. Which surface is intended seems to be subjective at best. A cartographer may prefer the vertical offset model as the <Location 2D> surface, while others prefer the "terrain surface". "Terrain surface" is also a subjective term, and terrain surfaces have been mapped to the DRM in a variety of ways. Even if one notion of surface for <Location 2D> instances were mandated, it would not meet everyone's requirements. The solution is to mandate a clearly defined surface (the initial default) *and* provide a flexible mechanism to override the default for all or for selected parts of the transmittal. Q. How does a <Feature Hierarchy> or <Geometry Hierarchy> use a <Reference Surface> to resolve elevations for aggregated <Location 2D> instances? A. Consider a <Reference Surface> that is associated to a <Geometry Hierarchy> that contains a surface. A <Location 2D> corresponds to the (unique) ray which is: 1. normal to the surface of the SRF ellipsoid (*), 2. intersects the ellipsoid at the same horizontal coordinates as the <Location 2D>, and 3. extends below the surface of the ellipsoid to a depth equal to the minor radius of the ellipsoid. (*) NOTE: For augmented Projected SRFs, this is the projection ellipsoid. For LSR, use the z=0 plane, where z is the coordinate axis specified by the SRM_LSR_3D_Parameters up_direction value. The intersection of this ray with the resolution surface defines the candidate set for the corresponding 3D location. One 3D location is selected from the ray/surface intersection set according to the following three cases: 1) If the set contains 1 and only 1 element, the spatial position of that point resolves the <Location 2D> instance. 2) If the set contains more than one element, the <Reference Surface> field multiplicity_rule value is used to select exactly one element. (For instance, if several overlapping <Property Grids> with <Grid Overlap> components are part of the <Reference Surface>, use <Grid Overlap>'s rules to define the <Reference Surface> in the overlap region of two or more of the surface grids. If the intersection set still has more than one point, use multiplicity_rule.) 3) If the intersection is empty, then look for other <Reference Surface> instances higher up the aggregation tree and repeat this resolution process with that surface instead. If there are no other <Reference Surface> instances higher up the aggregation tree, then use the vertical offset model, which is guaranteed to be a case 1 surface. (See also example 5). Q. What if there is no single <Union Of Primitive Geometry> that defines the <Reference Surface>? A. There is no requirement that the aggregate be free of non-reference surface geometry (See example 3). In this case, find the higher level <Geometry Hierarchy> that aggregates the desired <Union Of Primitive Geometry> sub-hierarchies, and use that for the <Reference Surface> association. Q. What happens to <LSR 2D Location> instances in an LSR <Model> when the <Model> is instanced by a model instance object in a non-LSR 3D spatial reference frame? A. That depends on whether or not the scoping SRF supports <Location 2D> instances. - If <Location 2D> instances are supported in the scoping SRF, (for example, if the scoping SRF is 3D geodetic, for which 2D geodetic exists), these <LSR 2D Location> instances are converted to <Location 2D> instances in the instancing 3D SRF using a 3 step process: Step 1) An <LSR 2D Location> is converted to <LSR 3D Location> by resolving to the LSR vertical offset model (z=0 plane, where z is the coordinate axis specified by the SRM_LSR_3D_Parameters up_direction). Step 2) The resulting <LSR 3D Location> is converted to a <Location 3D> in the scoping 3D SRF in the usual (model instance) way. Step 3) If the SRF supports <Location 2D> instances (e.g. geodetic), then the <Location 3D> is collapsed to a <Location 2D> with the same horizontal coordinates. - Otherwise, if the scoping SRF does not support <Location 2D> instances, then the <LSR 2D 2D Location> is converted to 3D by setting the tertiary axis value to zero. (Note 1): LSR models are not permitted to contain <Reference Surface> instances; see constraints. (Note 2): Conformal behaviour may also be modeled with <LSR 3D Location Control Link> instances. Q. Can a <Geometry Model Instance> be used for a <Reference Surface> association? A. Yes, if the <Model>'s spatial reference frame matches the currently scoped 'world' spatial reference frame. Q. How are <2D Location> instances converted consuming data in a different spatial reference frame? A. There are two cases. Case 1 - both SRFs have the same ORM. Case 2 - The two SRFs have different ORMs. In case 1 (Same ORM), the ray determined by the <2D Location> is invariant, so the horizontal coordinates are converted in the usual way. In case 2 (Different ORMs), the ray may change, so three steps are needed: Step 1) Resolve elevation in the originating SRF and convert the <Location 2D> to <Location 3D>. Step 2) Convert the <Location 3D> to the second SRF (conversion not currently supported). Step 3) Collapse the <Location 3D> to a <2D Location>. Q. If a transmittal is consumed in an SRF other than its native SRF, should elevations be resolved in the originating or the consuming SRF? A. It should not make a difference if the two SRFs are both "real world" or both Augmented Projected Coordinate Systems (APCS). In the case in which one is "real" world and the other is APCS, there are two ways to deal with the "conversion distortion" that tends to bend flat surfaces. Consider a <Location 2D> whose ray intersects the resolution surface near the centre of exactly one triangular <Polygon> instance. The intersection point determines the elevation, and therefore a corresponding <Location 3D>. If elevations are resolved in the first SRF, and the <Location 3D> is then converted, the location will match the transmittal point, but it may no longer lie on the triangle's surface. On the other hand, if the <Location 2D> is converted and then elevations are resolved in the second SRF, the corresponding <Location 3D> will lie on the triangle's surface, but may differ a little in elevation from the originating point. Therefore if absolute location is more important than conformality, resolve in the originating SRF. If conformality is more important, resolve in the consuming SRF. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Model Spatial Reference Frame Associated to (one-way) one Geometry Hierarchy instance Composed of (two-way) zero or more Property Value instances Component of (two-way) zero or more Feature Hierarchy instances zero or more Geometry Hierarchy instances Field Elements: EDCS_Classification_Code classification; /* * Within the resolution surface, use only geometry matching * the (possibly elaborated) classification specified by the * classification field. */ SE_RS_Elevation_Select multiplicity_rule; /* * The multiplicity_rule field specifies a rule to select a single * point from multiple intersections of a ray with a resolution surface. */ SE_RS_LOD_Select lod_rule; /* * The lod_rule field specifies a rule to select one LOD branch. */ ------------------------------------------------------------------------------- Class Name: Reference Vector Definition: An instance of this DRM class specifies a unit vector, the meaning of which is specified by its vector_type field. Primary Page in DRM Diagram: 7 Secondary Pages in DRM Diagram: 4 5 9 18 21 Example: 1. Consider a <Polygon> specified in a 3D LSR spatial reference frame, for which a data provider wishes to explicitly provide the surface normal vector so that consumers do not need to calculate the surface normal when consuming that particular <Polygon>. The data provider specifies this vector information as a <Reference Vector> component of the <Polygon> as follows: <Polygon> <> | ------------------------------- | | (other components) <Reference Vector> unit_vector = ... vector_type = SE_REF_VEC_TYP_FACE_NORMAL <> | <LSR 3D Location> Note that since the <Reference Vector> is a component of a <Polygon>, it specifies an <LSR 3D Location> component in order to comply with <<Required Reference Vector Location>>. 2. A <Reference Vector> contained by a <Polygon>, representing a normal vector that is used for rendering purposes, i.e. to calculate colour and shading when rendering the <Polygon>. This <Reference Vector> would have a vector_type of SE_REF_VEC_TYP_RENDERING_NORMAL. 3. Consider a <Polygon> instance F that represents an ECC_FENCE, where F is a quadrilateral as shown below. ---------------------------------------- | | | | | | ---------------------------------------- F is instanced on some terrain representation, such that the plane of F is perpendicular to the surrounding terrain. F has radar cross sections that are dependent on aspect angles (azimuth and elevation). These aspect angles are defined with respect to F's normal vector and F's azimuth vector. Consequently, F has two <Reference Vector> components. <Polygon> "F" <> ------------------------- (other components) | | - <Reference Vector> | unit_vector = ... | vector_type = SE_REF_VEC_TYP_FACE_NORMAL | | | - <Reference Vector> unit_vector = ... vector_type = ? AZIMUTH The SE_REF_VEC_TYP_FACE_NORMAL <Reference Vector> is the unit vector that is perpendicular to the plane of F, and which points away from F on its outside face. The AZIMUTH <Reference Vector> is the unit vector that lies in the plane of F and points straight up (that is, like F is normal to the plane of the terrain). 4. A segment of the road has a reflector (actually, a retro-reflector) on it and is modeled as a <Line>. The <Line> has a normal vector that is perpendicular to it and an azimuth reference parallel to it. This is sufficient to describe radar cross sections of the road as a function of aspect angles. However, the normal vector for the infrared bands depends on the orientation of the retro-reflector, not the road. This because radars "see" the road but infrared (or more obviously, car lights) "sees" the retro-reflector. In this example, the <Line> instance has four <Reference Vector> components (radar-normal, radar-azimuth, infrared-normal, and infrared-azimuth). 5. A normal vector used for reflectivity/emissivity calculations. This would have vector_type = SE_REF_VEC_TYP_REFLECTIVITY_EMISSIVITY_NORMAL. 6. A vector specifying the direction an <Infinite Light> illuminates. This would have a vector_type of SE_REF_VEC_TYP_LIGHT_DIRECTION. FAQS: Q. Why does SE_Reference_Vector_Type have so many entries that appear to be mathematically similar, such as the several different varieties of normal? A. In the general case, a location on an environmental object may have distinct vectors for each of these SE_Reference_Vector_Type entries, although in specific instances such vectors may coincide with one another. For example, consider a large flat window, represented by a <Polygon> instance. The geometric normal (SE_REF_VEC_TYP_FACE_NORMAL) in this example coincides with the radar SE_REF_VEC_TYP_EMISSIVITY_NORMAL and with the infrared SE_REF_VEC_TYP_EMISSIVITY_NORMAL. However, consider a more complex geometric representation - in this example, a representation of an aircraft. Here the SE_REF_VEC_TYP_FACE_NORMAL is not applicable, and the radar and infrared SE_REF_VEC_TYP_EMISSIVITY_NORMAL <Reference Vector> instances do not coincide. Q. Why can a <Vertex> have only one <Reference Vector> component, when a <Polygon>, <Point>, or <Line> can have more than one? A. A <Vertex>, unlike a <Primitive Geometry> such as a <Point>, does not represent an environmental object, but only part of an environmental object. -------------------------- Examples: - A ship may be represented by a <Point>. The fact that the <Point> represents an environmental object is indicated by providing it with an appropriate <Classification Data> component. - An ECC_EXTERNAL_WALL within an ECC_BUILDING may be represented by a <Polygon> instance, but the individual <Vertex> instances specifying that <Polygon> are not, themselves, representations of environmental objects. - An ECC_BRIDGE may be represented by a <Line> instance, while the individual <Vertex> instances of which the <Line> is composed do not themselves represent environmental objects. -------------------------- To fully describe aspect dependent characteristics as part of the representation of an environmental object, the representation requires at least 2 <Reference Vector> components: NORMAL and AZIMUTH. In addition, a representation of an environmental object may need to represent a combination of geometric and/or sensor-related vectors simultaneously. Since a <Vertex> does not itself constitute a representation of an environmental object, it does not require the capability of specifying multiple <Reference Vector> components. However, a <Vertex> may need a SE_REF_VEC_TYP_RENDERING_NORMAL <Reference Vector> for use in smooth shading, so a single <Reference Vector> component may be needed for a given <Vertex> instance. Q. Why does <Reference Vector> have an optional <Location> component, and if the <Location> component is needed to support functionality, why is it optional? A. The SEDRIS API provides the capability of converting <Reference Vector> instances between spatial reference frames. These spatial reference frames include non-vector space coordinates, such as geodetic. To support those cases, a <Reference Vector> requires a <Location> component. However, in most contexts where a <Reference Vector> can appear in a transmittal, the <Reference Vector> inherits the appropriate <Location> component from its context, and does not require a direct <Location> component. See <<Required Reference Vector Location>> for the cases where an appropriate <Location> instance cannot be inherited, so that the data provider is required to specify such a component directly for the <Reference Vector>. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Required Reference Vector Location Composed of (two-way) zero or one Location instance zero or one Reference Vector Control Link instance Component of (two-way) zero or more Camera Point instances zero or more Cylindrical Volume Extent instances zero or more Ellipse instances zero or more Infinite Light instances zero or more Line instances zero or more Lobe Data instances zero or more LSR Transformation Step instances zero or more Moving Light Behaviour instances zero or more Parallelepiped Volume Extent instances zero or more Point instances zero or more Polygon instances zero or more Union Of Geometry instances zero or more Vertex instances Field Elements: SRM_Vector_3D unit_vector; /* * The unit_vector field specifies the unit vector. */ SE_Reference_Vector_Type vector_type; /* * The vector_type field specifies the semantic meaning of the vector data * being represented by the given instance of * <Reference Vector>. */ ------------------------------------------------------------------------------- Class Name: Reference Vector Control Link Definition: An instance of this DRM class is a specialized <Control Link> instance used to provide the connection between an ordered aggregation of <Expression> instances and the target field values of one or more <Reference Vector> instances. Primary Page in DRM Diagram: 17 Secondary Pages in DRM Diagram: 5 7 Example: 1. For the <Reference Vector> component of a <Polygon> the <Reference Vector> is its normal, so the <Expression>s would compute the 3 fields of the normal of a <Polygon>. 2. A <Model> of a lighthouse has a <Geometry Model> with a <Union Of Geometry Hierarchy>, to which is attached an <Spot Light> representing the lighthouse's light. The <Spot Light> has a <Lobe Data> describing the shape of the light code, in which a <Reference Vector> specifies the light direction. The SE_REF_VEC_TYP_LIGHT_DIRECTION <Reference Vector> has a <Reference Vector Control Link> to change the direction vector of the light so that the lighthouse light sweeps over an area rather than holding stationary. FAQS: None. Superclass: Control Link Constraints: Publishable Object Composed of (two-way) (inherited) one or more {ordered} Expression instances Component of (two-way) one or more Reference Vector instances Inherited Field Elements: SE_String description; /* * The description field specifies a text description of the given * <Control Link> instance's purpose. */ Field Elements: SE_Integer_Unsigned v0_expr_index; /* * The value of the v0_expr_index field specifies which * <Expression> component, if any, * controls the unit_vector.vector[0] field value of the * affected <Reference Vector> instances. If the value is * zero, the unit_vector.vector[0] field of those instances * is not controlled; otherwise, the value is a 1-based index * into the ordered aggregation of <Expression> instances. */ SE_Integer_Unsigned v1_expr_index; /* * The value of the v1_expr_index field specifies which * <Expression> component, if any, * controls the unit_vector.vector[1] field value of the * affected <Reference Vector> instances. If the value is * zero, the unit_vector.vector[1] field of those instances * is not controlled; otherwise, the value is a 1-based index * into the ordered aggregation of <Expression> instances. */ SE_Integer_Unsigned v2_expr_index; /* * The value of the v2_expr_index field specifies which * <Expression> component, if any, * controls the unit_vector.vector[2] field value of the * affected <Reference Vector> instances. If the value is * zero, the unit_vector.vector[2] field of those instances * is not controlled; otherwise, the value is a 1-based index * into the ordered aggregation of <Expression> instances. */ ------------------------------------------------------------------------------- Class Name: Regular Axis Definition: An instance of this DRM class is an <Axis> that uses a constant spacing between hash marks and numerical values. Primary Page in DRM Diagram: 6 Example: 1. Digital Terrain Elevation Data (DTED) is sampled in a regular grid of latitude and longitude points. Accordingly, the latitude and longitude <Axis> resulting <Data Table> are <Regular Axis> instances. 2. A table of wind-chill values has axes of air temperature and wind speed. Air temperature typically starts at 0 degree Celsius and is decremented in intervals of 1 degree. Wind speed starts at calm (0 mph) and is incremented at intervals of 5 mph. Consequently, the air temperature and wind-speed axes of this table are <Regular Axis> instances. FAQS: Q. What is the purpose of the axis_alignment field? A. The axis_alignment field provides flexibility in specifying how cells are centred with respect to middle, edge, corner, and so on. Consider the following 4 (of 9 possible) cases for 2-D grids. The * indicates the location where the tick mark coordinates intersect in the cell relative to the cell edges. The grid of points determined by axis tick marks represent the location of, to name a few examples, the centre, lower left corner, upper right corner, or edge, respectively, of the corresponding cell. The axis_alignment field therefore indicates the axis alignment being used. FACE CNTR LR LFT CORNER UP RT CORNER EDGE Axis 1 ------- ------- ------* ------- ^ | | | | | | | | | | * | | | | | * | | | | | | | | | | --> Axis 0 ------- *------ ------- ------- Axis 0: SE_AXIS_ALNMNT_MIDDLE SE_AXIS_ALNMNT_LOWER SE_AXIS_ALNMNT_UPPER SE_AXIS_ALNMNT_LOWER Axis 1: SE_AXIS_ALNMNT_MIDDLE SE_AXIS_ALNMNT_LOWER SE_AXIS_ALNMNT_UPPER SE_AXIS_ALNMNT_MIDDLE Superclass: Axis Constraints: Publishable Object Axis Type Restrictions Component of (two-way) (inherited) one or more Data Table instances Inherited Field Elements: EDCS_Attribute_Code axis_type; /* * The axis_type field specifies the property being described by the * given <Axis> instance. */ SE_Short_Integer_Positive axis_value_count; /* * The axis_value_count field specifies the number of "hash marks" * along the given <Axis> instance. */ Field Elements: EDCS_Unit_Code value_unit; /* * The value_unit field specifies the unit of measurement of the given * <Regular Axis> instance, which shall be compatible with the * requirements imposed by axis_type. * * If axis_type does not require a unit of measurement (for example, * if axis_type requires a value type of STRING), then value_unit * shall be set to EUC_UNITLESS. */ EDCS_Scale_Code value_scale; /* * The value_scale field specifies the scale applicable to value_unit. * * If axis_type does not require a unit of measurement (for example, * if axis_type requires a value type of STRING), then value_scale * shall be set to ESC_UNI. */ SE_Interpolation_Type interpolation_type; /* * The interpolation_type field allows the data provider to indicate * how best to interpolate the data to points that are between grid * points on the axis. When a <Data Table> has more than one axis, * the order of the interpolations is in the order of axis definitions. */ SE_Single_Value first_value; /* * The first_value field specifies the first numeric value on the axis. */ SE_Single_Value spacing; /* * The spacing field specifies the distance between tick marks. * * For SE_SPACING_TYP_ARITHMETIC, spacing is the * arithmetic difference between tick marks, such * that Tick(N) = first_value + (N * spacing) * * For SE_SPACING_TYP_GEOMETRIC, spacing is the * difference between tick marks such * that Tick(N) = first_value * (spacing^N) */ SE_Spacing_Type spacing_type; /* * The spacing_type field specifies how the spacing value is used to * compute tick marks. */ SE_Axis_Alignment axis_alignment; /* * The axis_alignment field specifies the position of the axis * with respect to the axis interval. Note that "lower" and "upper" * refer to the axis INDEX; for example, "lower" means * "aligned to the side with the lower index". */ ------------------------------------------------------------------------------- Class Name: Relative Time Interval Definition: An instance of this DRM class specifies an interval of time, defined by a start time and a stop time that are relative to another time. Primary Page in DRM Diagram: 20 Example: 1. The time period for which a SEDRIS transmittal should be considered to be valid. The stop time can be considered to be an "expiration date". FAQS: Q. What is the purpose of this class? A. This class provides a means to specify a time interval in terms of times relative to another time. The time interval is used to specify ISO 19115-compliant metadata that describes the time period within which a high-level SEDRIS object (e.g. <Transmittal Root>, <Model>, <Image>, etc.) and as a general-purpose mechanism for describing time intervals. <Relative Time Interval> allows potential users of a SEDRIS transmittal to evaluate the time period covered by the transmittal or object, without necessarily having to actually obtain or examine the transmittal or object directly. Q. How can a data provider specify a time interval relative to start of simulation? A. Do not include the component <Absolute Time>. If there is no component <Absolute Time>, the deltas are relative to simulation start. Superclass: Time Interval Constraints: Publishable Object Legal Time Ranges Time Dependency Time Interval Calculation Composed of (two-way) zero or one Absolute Time instance Component of (two-way) (inherited) zero or more Environment Root instances zero or more Time Constraints Data instances zero or one Transmittal Root instance zero or more Season instances zero or more Sound Instance instances zero or more Source instances Inherited Field Elements: SE_Time_Significance time_significance; /* * The time_significance field specifies the significance of * the time information. */ Field Elements: SE_Integer delta_start_days; /* * The delta_start_days field specifies the starting day of the * interval, relative to the specified time. */ SE_Integer delta_stop_days; /* * The delta_stop_days field specifies the stop day of the * interval, relative to the specified time. */ SE_Byte_Unsigned delta_start_hours; /* * The delta_start_hours field specifies the starting hour of the * interval, relative to the specified time. */ SE_Byte_Unsigned delta_stop_hours; /* * The delta_stop_hours field specifies the stop hour of the interval, * relative to the specified time. */ SE_Byte_Unsigned delta_start_minutes; /* * The delta_start_minutes field specifies the starting minute of * the interval, relative to the specified time. */ SE_Byte_Unsigned delta_stop_minutes; /* * The delta_stop_minutes field specifies the stop minute of the * interval, relative to the specified time. */ SE_Long_Float delta_start_seconds; /* * The delta_start_seconds field specifies the starting second of * the interval, relative to the specified time. */ SE_Long_Float delta_stop_seconds; /* * The delta_stop_seconds field specifies the stop second of the * interval, relative to the specified time. */ ------------------------------------------------------------------------------- Class Name: Relative Time Definition: An instance of this DRM class specifies a date and time relative to either a specified GMT (<Absolute Time>); or if an <Absolute Time> instance is not specified, relative to the simulation start time. Primary Page in DRM Diagram: 20 Example: 1. The date/time is a astronomical Julian day of 2449143.77083 (June 5, 1993 0630Z). Astronomical Julian dates are referenced to - 1 January 4712 BCE at 12Z. Since the fractional days shall be converted to hours, minutes and seconds, the fields in the <Relative Time> instance are as follows. delta_days = 2449143 delta_hours = 18 delta_minutes = 30 delta_seconds = 0.0 The fields in the component <Absolute Time> are as follows. time_value.configuration = SE_TIME_CFG_DATE_YMD_AND_TIME_H time_value.value.ymd_h.year = -4712 time_value.value.ymd_h.month = SE_MONTH_JANUARY time_value.value.ymd_h.day = 1 time_value.value.ymd_h.hour = 12 2. The time is 6 hours 25 minutes and 30 seconds after the start of the simulation. The fields of the <Relative Time> instance are set as follows. delta_days = 0 delta_hours = 6 delta_minutes = 25 delta_seconds = 30.0 3. An object becomes active 20 minutes after the simulation starts. That is, its activation time is expressed in simulation time (relative to the start of the simulation), so the activation time would be specified using <Relative Time>. The time_significance field would be set to SE_TIME_SIGNIF_OCCURRENCE. FAQS: Q. What is the purpose of this class? A. This class provides a means to specify a time relative to another time. It can be used in the same manner as <Absolute Time>. Q. How can a data provider indicate the Julian day of the year? A. Specify a component <Absolute Time> to indicate the reference date/time as 0Z 1 January of the appropriate year. If year = -1, the date applies to any year. See example 1. Q. Can a data provider specify times relative to date/times other than January 1? A. Yes. See example 2. Q. How can a data provider indicate a time relative to start of the simulation? A. If a <Relative Time> does not have an <Absolute Time> component, the time is relative to the start of the simulation. See example 3. Superclass: Time Point Constraints: Publishable Object Legal Time Ranges Time Dependency Composed of (two-way) zero or one Absolute Time instance Component of (two-way) (inherited) zero or more Environment Root instances zero or more Time Constraints Data instances zero or one Transmittal Root instance Inherited Field Elements: SE_Time_Significance time_significance; /* * The time_significance field specifies the significance of * the time information. */ Field Elements: SE_Integer delta_days; /* * The delta_days field specifies the number of days relative to * the specified time. */ SE_Byte_Unsigned delta_hours; /* * The delta_hours field specifies the number of hours relative * to the specified time, after delta_days has been taken into * account. */ SE_Byte_Unsigned delta_minutes; /* * The delta_minutes field specifies the number of minutes relative * to the specified time, after delta_days and delta_hours have been * taken into account. */ SE_Long_Float delta_seconds; /* * Fractions of the delta_seconds field value provide higher accuracy * if needed, such as milliseconds. */ ------------------------------------------------------------------------------- Class Name: Rendering Priority Level Definition: An instance of this DRM class specifies the method used to describe the relative priority used to resolve occlusion between 2 or more overlapping (or potentially overlapping) objects. Priority is indicated by the group ID (rendering_group) and priority index (rendering_priority). The rendering_priority is relative to the rendering_group, and is intended to assign priority order (or layer) to coplanar <Polygon> instances or coplanar <Feature Representation> instances. A higher index indicates a higher rendering priority (rendered last). Objects that do not contain a <Rendering Priority Level> are assumed to have a rendering priority value of 0. Primary Page in DRM Diagram: 3 Secondary Pages in DRM Diagram: 4 5 7 8 19 Example: 1. A particular SEDRIS transmittal may represent a lake as a single <Polygon> located within a much larger <Polygon> that represents the surrounding terrain. The larger terrain polygon and the smaller lake polygon that it contains may be coplanar, so the modeler assigns a group of 1, rendering_priority of 1 to the terrain <Polygon>, and a group of 1, priority of 2 to the lake <Polygon>, so that the lake polygon will be rendered on top of the terrain <Polygon>. 2. The side of a <Model> can be represented by a brown <Polygon>, and a window in the side of a <Model> can be represented by a grey <Polygon> where the grey <Polygon> is coplanar with the brown <Polygon>. The grey <Polygon> would be given a higher priority (but with the same group ID) than the brown <Polygon> so that the window would be drawn correctly on the side of the <Model> (where the <Model> could be either a building or a vehicle). 3. A Plan View Display (PVD) can display <Point Feature>, <Areal Feature>, and <Linear Feature> instances. Since <Feature Representation> instances are usually considered to be 'flat', many <Feature Representation> instances are, by definition, coplanar. A <Rendering Priority Level> can be used to indicate the relative drawing order (or layer) within a set of overlapping <Feature Representation> instances. For example, it is common for a single <Areal Feature> to cover the entire <Environment Root> area as a 'default, background' <Feature Representation>. This <Areal Feature> could be given a rendering priority of SE_RENDER_PRIORITY_BOTTOMMOST so that it would always be drawn first, and thus would always be in the background. 4. The following instance diagram shows how Rendering Priority Level can be used to override the layering of a fixed list of objects. The objects would render in this order Polygon_C, Polygon_B, Polygon_A, Polygon_E, Polygon_F, Polygon_D. Union Of Geometry Hierarchy (fixed listed Unions) <> | -------------------------------------------------- | | Union Of Primitive Geometry Union Of Primitive Geometry (fixed listed polygons) (fixed listed polygons) <> <> | | ------------------------------------- ----------------- | | | | | | Polygon_A Polygon_B Polygon_C Polygon_D Polygon_E Polygon_F <> <> <> | | | | ------- --------- | | | Rendering Rendering Rendering Priority Level Priority Level Priority Level (group 1, priority 2) (group 1, priority 1) (group 2, priority 1) FAQS: Q. Is this the only way to order data for rendering purposes? A. No. There are other ways to achieve scope-limited, fixed-ordered rendering; see ordered <Union Of Geometry>. Q. When should a data provider use a <Rendering Priority Level>? A. A <Rendering Priority Level> should be used to globally resolve rendering priority after scope limited occlusion is resolved. After all <Geometry Representation> is rendered that has a rendering priority <= 0, then rendering successive levels of <Geometry Representation> should resolve occlusion. <Rendering Priority Level> can be viewed as a sorting bin assignment in some occlusion schemes. Q. Are there any 'special' sentinel values for a rendering priority? A. Yes. A rendering priority of SE_RENDER_PRIORITY_TOPMOST means always render 'on top' (last), and a priority of SE_RENDER_PRIORITY_BOTTOMMOST means always render 'on bottom' (first) Superclass: SEDRIS Abstract Base Constraints: Publishable Object Component of (two-way) zero or more Aggregate Geometry instances zero or more Feature Representation instances zero or more Geometry Model Instance instances zero or more Primitive Geometry instances zero or more Property Set instances Field Elements: SE_Short_Integer_Positive rendering_group; /* * The rendering_group field establishes a group to which objects' * priorities are relative. */ SE_Short_Integer rendering_priority; /* * The rendering_priority field indicates priority between coplanar * objects within the same rendering_group, such that a higher value * indicates a higher priority. * * For example, a <Polygon> instance with a <Rendering Priority Level> * component having rendering_group = 1, rendering_priority = 2 will be * "on top" of a <Polygon> instance with a <Rendering Priority Level> * component with rendering_group = 1, rendering_priority = 1. */ ------------------------------------------------------------------------------- Class Name: Rendering Properties Definition: An instance of this DRM class specifies a selection of shading algorithms, display sides, and presentation styles suggested to use when rendering <Geometry Representation> instances, particularly <Polygon> instances. Primary Page in DRM Diagram: 4 Secondary Pages in DRM Diagram: 5 19 21 Example: 1. Render flat shaded, solid, front-sides of polygons. 2. Render interpolation shaded, solid, front-sides of polygons. 3. Render Gouraud shaded, wire-frame, both-sides of polygons. 4. Render Phong shaded, solid, back-sides of polygons (possibly for a transmittal that describes an enclosed volume, and all of the polygons defining the enclosed volume face outwards, and the simulation would occur inside the enclosed volume, so only the back sides of the polygons shall be rendered). FAQS: None. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Composed of (two-way) zero or one Presentation Domain instance Component of (two-way) zero or more Aggregate Geometry instances zero or more Primitive Geometry instances zero or more Property Set instances Field Elements: SE_Pixel_Fill_Method fill_method; /* * The fill_method field specifies the colour blending method to be used. */ SE_Shading_Method shading_method; /* * The shading_method field specifies the shading algorithm to be used. */ SE_Colour_Binding colour_binding; /* * The colour_binding field specifies the colour inheritance / * overload rule in effect. */ SE_Display_Style style; /* * The style field specifies the set of SE_Display_Style tokens * specifying what combination of wire vs. solid style is to be used. */ SE_Display_Side side; /* * The side field specifies the set of SE_Display_Side tokens * specifying which side(s) to display. * * The front side of a <Polygon> is the side that has a counterclockwise * orientation of the ordered <Vertex> components of the <Polygon>. * Normally either both sides or just the front sides of <Polygon> * instances are rendered; rendering just the front side of a <Polygon> * culls out the back face of the <Polygon>. */ ------------------------------------------------------------------------------- Class Name: Responsible Party Definition: An instance of this DRM class provides identification of, and means of communication with, person(s) and organization(s) associated with the data set being described. In the documentation for this class, the phrase "the data set" refers to "the data set being described by the given <Responsible Party> instance". This, in turn, refers to the object tree rooted at the aggregate of the <Responsible Party> instance. If a <Responsible Party> is shared by multiple aggregates, "the data set" refers to the collection of object trees rooted at its various aggregates. Primary Page in DRM Diagram: 20 Example: 1. Consider a data provider creating a <Citation> instance for a MEL Thesaurus consulted in creating <Keywords> information. The <Responsible Party> for the <Citation> instance in this example contains the following data. <Responsible Party> individual_name = (empty string) organization_name = {SE_LOCALE_DEFAULT, 34, "Master Environmental Library (MEL)" } position_name = (empty string) contact_information.voice_phone = contact_information.fax_phone = (empty string) contact_information.tdd_tty_phone = (empty string) contact_information.address contact_information.online_resource contact_information.hours_of_service contact_information.contact_instructions role = SE_RESP_PTY_RL_CODE_POINT_OF_CONTACT FAQS: None. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Mandatory Metadata Component of (two-way) zero or more Citation instances zero or more Description instances zero or more Process Step instances Field Elements: SE_String individual_name; /* * If supplied, the individual_name field specifies the name of * the responsible person, in the form surname, given name, * title separated by delimiters. */ SE_String organization_name; /* * The organization_name field specifies the name of the * supporting organization. */ SE_String position_name; /* * If supplied, the position_name field specifies the role or * position of the responsible person. */ SE_Contact_Information contact_information; /* * The contact_information field specifies the address of * the responsible party. */ SE_Responsible_Party_Role_Code role; /* * The role field specifies the function performed by the * responsible party. */ ------------------------------------------------------------------------------- Class Name: RGB Colour Definition: An instance of this DRM class specifies the actual Red, Green, and Blue data values for a colour defined within the Red Green Blue colour model. These values shall between 0.0 and 1.0, inclusive. The RGB colour model is probably the best known colour model, and is often visualized as a cube, where the Red, Green, and Blue values define coordinates within the cube. Primary Page in DRM Diagram: 14 Example: 1. A RGB colour for pure black (rgb_data.red = 0.0, rgb_data.green = 0.0, rgb_data.blue = 0.0). 2. A RGB colour for bright red (rgb_data.red = 1.0, rgb_data.green = 0.0, rgb_data.blue = 0.0). FAQS: Q. How can a data consumer who doesn't use the RGB colour model retrieve the colour values in the model he or she does use? A. Data consumers who use the CMY, CMYK, or HSV colour models, are in luck. If you tell it to, before you retrieve any colour objects, the SEDRIS Level 0 Read API will change all of the colour objects into <RGB Colour>, <CMY Colour>, or <HSV Colour> instances. And if you need CMYK, ask for CMY, then use the utility functions provided in the DRM API to convert from CMY to CMYK. To tell the SEDRIS Level 0 Read API which colour model you want, after opening the transmittal, before you retrieve any <Colour Data> instances, (or even before you open the transmittal), call the SE_SetColourModel() function, passing in the colour model you want to use. Also, if you ever have colour data you want to convert from one colour model to another (such as from CMY to RGB), standard utility functions are provided in the DRM API to carry out these data conversions. Superclass: Colour Data Constraints: Publishable Object Composed of (two-way) zero or one RGB Colour Control Link instance Component of (two-way) (inherited) zero or more Ambient Colour instances zero or more Diffuse Colour instances zero or more Emissive Colour instances zero or more Specular Colour instances Field Elements: SE_RGB_Data rgb_data; /* * The rgb_data field specifies the RGB colour coordinate. */ ------------------------------------------------------------------------------- Class Name: RGB Colour Control Link Definition: An instance of this DRM class is a specialized <Control Link> instance used to provide the connection between an ordered aggregation of <Expression> instances and the target fields of one or more <RGB Colour> instances. Primary Page in DRM Diagram: 17 Secondary Pages in DRM Diagram: 14 Example: See the example for <CMY Colour Control Link>, which is analogous to how this class is used. FAQS: None. Superclass: Control Link Constraints: Publishable Object Composed of (two-way) (inherited) one or more {ordered} Expression instances Component of (two-way) one or more RGB Colour instances Inherited Field Elements: SE_String description; /* * The description field specifies a text description of the given * <Control Link> instance's purpose. */ Field Elements: SE_Integer_Unsigned red_expr_index; /* * The red_expr_index field is a 1-based index into the ordered * aggregation of <Expression> instances, and is used to select * the specific <Expression> instance (if any) that controls the * target <RGB Colour> instances' rgb_data.red field values. * If the value is zero, the rgb_data.red field of those instances * is not controlled. */ SE_Integer_Unsigned green_expr_index; /* * The green_expr_index field is a 1-based index into the ordered * aggregation of <Expression> instances, and is used to select * the specific <Expression> instance (if any) that controls the * target <RGB Colour> instances' rgb_data.green field values. * If the value is zero, the rgb_data.green field of those instances * is not controlled. */ SE_Integer_Unsigned blue_expr_index; /* * The blue_expr_index field is a 1-based index into the ordered * aggregation of <Expression> instances, and is used to select * the specific <Expression> instance (if any) that controls the * target <RGB Colour> instances' rgb_data.blue field values. * If the value is zero, the rgb_data.blue field of those instances * is not controlled. */ ------------------------------------------------------------------------------- Class Name: Rotating Light Behaviour Definition: An instance of this DRM class is a <Light Rendering Behaviour> indicating that the light rotates at the speed specified. Primary Page in DRM Diagram: 21 Example: None. FAQS: None. Superclass: Light Rendering Behaviour Constraints: Publishable Object Component of (two-way) (inherited) one or more Light Rendering Properties instances Field Elements: SE_Long_Float period; /* * The period field specifies the rotational period of the light, * in seconds; that is, the amount of time in which the light will * complete one revolution. */ ------------------------------------------------------------------------------- Class Name: Rotation Definition: An instance of this DRM class specifies a rotation of the given angle about the specified axis, in the direction determined by the right-hand rule. Primary Page in DRM Diagram: 7 Example: 1. Rotate 145.0 pi / 180.0 radians about the u axis 2. Rotate -38.5 pi / 180.0 radians about the w axis 3. Rotate 97.0 pi / 180.0 radians about the v axis FAQS: Q. How can a data provider specify a rotation about a point other than the origin? A. To specify a rotation about a point other than the origin of the given LSR spatial reference frame for a given <LSR Transformation> instance, the data provider would precede the given <Rotation> instance by a <Translation> that translates to the desired rotation point. Superclass: LSR Transformation Step Constraints: Publishable Object Composed of (two-way) (inherited) zero or one Reference Vector instance Composed of (two-way) zero or one Rotation Control Link instance Component of (two-way) (inherited) zero or one LSR Transformation instance Field Elements: SE_LSR_Transformation_Axis axis; /* * The axis field specifies which axis to rotate around: X, Y, Z, or a * <Reference Vector> instance. Note that SE_LSR_TRNSFRM_AXIS_ALL is * not a valid value for a <Rotation> instance. */ SE_Long_Float angle; /* * The angle field specifies the angle of rotation, measured * counterclockwise about the given axis, in radians. */ ------------------------------------------------------------------------------- Class Name: Rotation Control Link Definition: An instance of this DRM class is a specialized <Control Link> instance used to provide the connection between an ordered aggregation of <Expression> instances and the target fields of one or more <Rotation> instances. Primary Page in DRM Diagram: 17 Secondary Pages in DRM Diagram: 7 Example: 1. A <Model> of a weather vane has a <Geometry Model> with a <Union of Geometry Hierarchy> component, to which is attached an <LSR Transformation> with a <Rotation> instance, indicating that the weather vane can turn to match the direction that the wind is blowing. The <Rotation> instance has a <Rotation Control Link>, which changes the angle of rotation to match the wind direction. 2. See <Property Table Reference Control Link>, example 1. FAQS: None. Superclass: Control Link Constraints: Publishable Object Composed of (two-way) (inherited) one or more {ordered} Expression instances Component of (two-way) one or more Rotation instances Inherited Field Elements: SE_String description; /* * The description field specifies a text description of the given * <Control Link> instance's purpose. */ Field Elements: SE_Integer_Positive expr_index; /* * The expr_index field specifies which <Expression> component specifies * the angle field value of the affected <Rotation> instances, by * specifying a 1-based index into the ordered aggregation of * <Expression> instances. */ SE_Integer_Unsigned lower_expr_index; /* * The lower_expr_index field specifies which <Expression> component, * if any, defines the lower limit of the angle field value of the * affected <Rotation> instances. A value of zero (0) indicates that * no lower limit is specified; otherwise, the value specifies a * 1-based index into the ordered aggregation of <Expression> * instances. */ SE_Integer_Unsigned upper_expr_index; /* * The lower_expr_index field specifies which <Expression> component, * if any, defines the upper limit of the angle field value of the * affected <Rotation> instances. A value of zero (0) indicates that * no upper limit is specified; otherwise, the value specifies a * 1-based index into the ordered aggregation of <Expression> * instances. */ ------------------------------------------------------------------------------- Class Name: SEC 3D Location Definition: An instance of this DRM class specifies a coordinate within the Geocentric Solar Ecliptic (GSE) 3D SRF. See [I18026] for a complete definition. Primary Page in DRM Diagram: 15 Example: 1. SEC provides a convenient spatial reference frame for representing a. Interplanetary magnetic field observations. b. Solar wind velocity data. c. Satellite trajectories. FAQS: Q. Is GSE an inertial coordinate system? A. GSE is quasi-inertial in that it has a yearly rotation. Q. Where can users obtain further information on GSE? A. See the SRM for additional details. Superclass: Location 3D Constraints: Publishable Object Environment Root Spatial Reference Frame Image Anchor Spatial Reference Frame Model Spatial Reference Frame Component of (two-way) (inherited) zero or more Arc instances zero or more Camera Point instances zero or more Directional Light Behaviour instances zero or one Distance LOD Data instance zero or more Ellipse instances zero or more Feature Edge instances zero or more Feature Face instances zero or one Feature Node instance zero or more Image Anchor instances zero or more Label instances zero or more Perimeter Data instances zero or more Point instances zero or more Property Grid Hook Point instances zero or one Reference Origin instance zero or more Reference Vector instances zero or more Spatial Extent instances zero or more Spatial Index Related Feature Topology instances zero or more Spatial Index Related Features instances zero or more Spatial Index Related Geometry instances zero or more Spatial Index Related Geometry Topology instances zero or more Tack Point instances zero or more Vertex instances zero or more World 3x3 instances zero or more World Transformation instances zero or one Attachment Point instance zero or more Base Positional Light instances zero or one Contact Point instance zero or more Geometric Centre instances zero or more Separating Plane instances zero or more Sound Instance instances zero or more Stamp Behaviour instances zero or more Volume instances zero or more Volume Light Behaviour instances zero or more Volume LOD Data instances zero or more Volume Object instances Field Elements: SRM_Spherical_3D_Coordinate coordinate; /* * The coordinate field specifies the coordinate values. */ ------------------------------------------------------------------------------- Class Name: SMS 3D Location Definition: An instance of this DRM class specifies a coordinate within the Geocentric Solar Magnetic (SMS) 3D SRF. See [I18026] for a complete definition. Primary Page in DRM Diagram: 15 Example: 1. SMS provides a convenient spatial reference frame for representing a. magnetopause and shock boundary positions b. magnetosheath and magnetotail fields c. magnetosheath solar wind velocities (since the orientation of the magnetic dipole axis alters the otherwise cylindrical symmetry of the solar wind flow). FAQS: Q. What kind of data is ordinarily represented in SMS? A. SMS is quasi-inertial in that it rocks about the solar direction on both yearly (23.4 degrees +- 11.2 degrees) and 24 hour (+- 11.2 degree) cycles. Superclass: Location 3D Constraints: Publishable Object Environment Root Spatial Reference Frame Image Anchor Spatial Reference Frame Model Spatial Reference Frame Component of (two-way) (inherited) zero or more Arc instances zero or more Camera Point instances zero or more Directional Light Behaviour instances zero or one Distance LOD Data instance zero or more Ellipse instances zero or more Feature Edge instances zero or more Feature Face instances zero or one Feature Node instance zero or more Image Anchor instances zero or more Label instances zero or more Perimeter Data instances zero or more Point instances zero or more Property Grid Hook Point instances zero or one Reference Origin instance zero or more Reference Vector instances zero or more Spatial Extent instances zero or more Spatial Index Related Feature Topology instances zero or more Spatial Index Related Features instances zero or more Spatial Index Related Geometry instances zero or more Spatial Index Related Geometry Topology instances zero or more Tack Point instances zero or more Vertex instances zero or more World 3x3 instances zero or more World Transformation instances zero or one Attachment Point instance zero or more Base Positional Light instances zero or one Contact Point instance zero or more Geometric Centre instances zero or more Separating Plane instances zero or more Sound Instance instances zero or more Stamp Behaviour instances zero or more Volume instances zero or more Volume Light Behaviour instances zero or more Volume LOD Data instances zero or more Volume Object instances Field Elements: SRM_Spherical_3D_Coordinate coordinate; /* * The coordinate field specifies the coordinate values. */ ------------------------------------------------------------------------------- Class Name: Scale Definition: An instance of this DRM class specifies a scaling percentage along the given axis. If the absolute value of the scaling percentage is greater than 1.0, then the <Scale> operation will stretch any target object along the given axis. On the other hand, if the absolute value is less than 1.0, any target object will be shrunk along the given axis. If the scaling value is negative, then the <Scale> operation will reflect any target object across the origin along the given axis, as well as shrinking or stretching the object based on the magnitude of the scale amount. Primary Page in DRM Diagram: 7 Example: 1. Scale by 2.0 along the Z axis. 2. Scale by 0.5 along the Y axis. 3. Scale by -0.75 along the X axis. 4. Scale by 0.0 along the Z axis. FAQS: None. Superclass: LSR Transformation Step Constraints: Publishable Object Composed of (two-way) (inherited) zero or one Reference Vector instance Composed of (two-way) zero or one Scale Control Link instance Component of (two-way) (inherited) zero or one LSR Transformation instance Field Elements: SE_LSR_Transformation_Axis axis; /* * The axis field specifies the axis to scale along. */ SE_Long_Float scale_amount; /* * The scale_amount field specifies the percentage to scale by. */ ------------------------------------------------------------------------------- Class Name: Scale Control Link Definition: An instance of this DRM class is a specialized <Control Link> used to provide the connection between an ordered aggregation of <Expression> instances and the target fields of a <Scale>. Primary Page in DRM Diagram: 17 Secondary Pages in DRM Diagram: 7 Example: 1. Externally Controlled Table-Based Animation Consider a <Scale Control Link> instance that is to be driven using values from a <Property Table>. The table value that is to be used is to be specified from outside the transmittal. For simplicity, in this example the controlling <Expression> is just the table value itself, rather than some more complex <Function> using the table value as an argument. Specifically, the <Scale Control Link> instance's controlling <Expression> is the <Predefined Function> SE_PREDEF_FUNC_TABLE_VALUE, the argument of which is a <Property Table Reference> referring to the <Property Table> containing the scale values, as shown in the instance diagram. <Scale Control Link> <> | <Predefined Function> (SE_PREDEF_FUNC_TABLE_VALUE) <> | <Property Table Reference> ----> <Property Table> <> <> | | <Property Table Reference |____<Classification Data> Control Link> | ECC_CONTROL_VALUE <> | | |----<Regular Axis> <Variable> | $$$ meaning = $$$ | |----<Table Property Description> meaning = { SE_ELEM_CODE_TYP_VARIABLE, {SE_VAR_CODE_SCALE_AMOUNT}} The <Variable> instance drives the <Property Table Reference Control Link>, so that it determines which value is referenced from the <Property Table>. To provide the hook for this <Variable> to be set from outside the transmittal, the <Variable> is associated with an <Interface Template> (not shown). FAQS: None. Superclass: Control Link Constraints: Publishable Object Composed of (two-way) (inherited) one or more {ordered} Expression instances Component of (two-way) one or more Scale instances Inherited Field Elements: SE_String description; /* * The description field specifies a text description of the given * <Control Link> instance's purpose. */ Field Elements: SE_Integer_Positive expr_index; /* * The expr_index field specifies a component <Expression>, the value * of which specifies the value of the scale_amount field of the * affected <Scale> instances. */ SE_Integer_Unsigned lower_expr_index; /* * If non-zero, the lower_expr_index field specifies the index of * the component <Expression> defining the lower limit of the * scaling. A value of zero means no lower limit was defined. */ SE_Integer_Unsigned upper_expr_index; /* * If non-zero, the upper_expr_index field specifies the index of * the component <Expression> defining the upper limit of the * scaling. A value of zero means no upper limit was defined. */ ------------------------------------------------------------------------------- Class Name: Season Definition: An instance of this DRM class specifies the season of the year for which the attributed object is applicable. (See examples). Since the definition of a season of the year is relative to the hemisphere being described, a <Time Interval> component is required to specify the data provider's definition of the specified season. Primary Page in DRM Diagram: 20 Example: 1. Consider a <Time Related Geometry> representing a forest in the northern hemisphere in winter, spring, summer, and autumn. The branch for summer has a <Time Constraints Data> link object with a <Season> component resembling that in example 1. FAQS: None. Superclass: Base Time Data Constraints: Publishable Object Composed of (two-way) one Time Interval instance Component of (two-way) (inherited) zero or more Environment Root instances zero or more Time Constraints Data instances zero or one Transmittal Root instance Inherited Field Elements: SE_Time_Significance time_significance; /* * The time_significance field specifies the significance of * the time information. */ Field Elements: SE_Season season; /* * The season field specifies a season of the year. */ ------------------------------------------------------------------------------- Abstract Class Name: SEDRIS Abstract Base Definition: An instance of a concrete class derived from this DRM class specifies a valid instance within a transmittal. Primary Page in DRM Diagram: 23 Secondary Pages in DRM Diagram: 9 Example: See concrete classes for examples. FAQS: Q. What functionality does this class provide? A. The SEDRIS API treats all SEDRIS objects as belonging to a common abstract class; this is that class. All other DRM classes descend from this class. Subclasses: Access Ambient Colour Animation Behaviour Attachment Point Axis Base Association Data Base LOD Data Base Summary Item Base Time Data Browse Media Camera Point Citation Classification Data Colour Colour Data Colour Shininess Colour Table Colour Table Group Conformal Behaviour Contact Point Control Link Cross Reference Data Quality Data Table Description Diffuse Colour EDCS Use Summary Item Edge Direction Emissive Colour Environment Root Environmental Domain Summary Expression Face Direction Fade Range Feature Face Ring Feature Model Feature Representation Feature Topology Feature Topology Hierarchy Feature Volume Shell Geometric Centre Geometry Model Geometry Representation Geometry Topology Geometry Topology Hierarchy Grid Overlap Hierarchy Data Icon Image Image Anchor Image Lookup Image Mapping Function In Out Interface Template Keywords Label Library Light Rendering Behaviour Light Rendering Properties Light Source Lineage Lobe Data Local 4x4 Location LSR Transformation Step Mesh Face Table Model Model Instance Template Index Octant Data Overload Priority Index Perimeter Data Presentation Domain Primitive Colour Process Step Property Property Characteristic Property Set Property Set Index Property Set Table Property Set Table Group Property Table Reference Quadrant Data Reference Origin Reference Surface Reference Vector Rendering Priority Level Rendering Properties Responsible Party Separating Plane Separating Plane Data Separating Plane Relations Sound Sound Instance Source Spatial Extent Spatial Index Data Specular Colour SRF Summary Stamp Behaviour State Data Table Property Description Tack Point Texture Coordinate Time Constraints Data Transformation Translucency Transmittal Root Transmittal Summary Vertex Volume Volume Extent World 3x3 Constraints: Publishable Object ------------------------------------------------------------------------------- Class Name: Separating Plane Definition: An instance of this DRM class specifies a plane used to divide a given volume into positive and negative half spaces. Primary Page in DRM Diagram: 4 Example: 1. A diagonal plane separating a building's visible and occulted portions for a given viewing angle/direction. FAQS: None. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Separating Plane Related Organizing Principle Composed of (two-way) exactly 3 {ordered} Location 3D instances Component of (two-way) one or more Separating Plane Relations instances ------------------------------------------------------------------------------- Class Name: Separating Plane Data Definition: An instance of this DRM class distinguishes sibling <Geometry Hierarchy> components within a <Separating Plane Related Geometry> aggregation, indicating whether the data associated with this object is in the positive or negative half-space specified by the associated <Separating Plane> instance. Primary Page in DRM Diagram: 4 Example: See <Separating Plane Related Geometry> for examples. FAQS: None. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Separating Plane Related Organizing Principle Field Elements: SE_Boolean positive; /* * If the value of the positive field is SE_TRUE, the data * associated with the given instance of <Separating Plane Data> * is in the positive half-space specified by the associated * instance of <Separating Plane>; otherwise, the data is in the * negative half-space. */ ------------------------------------------------------------------------------- Class Name: Separating Plane Related Geometry Definition: An instance of this DRM class specifies an aggregation of <Geometry Representation> instances, where the components are organized based on their relationships with a set of <Separating Plane> instances. A component is either on the SE_TRUE or SE_FALSE side of any <Separating Plane> instance to which the component is related. Primary Page in DRM Diagram: 4 Example: 1. Consider a <Geometry Model> instance representing a house, consisting of a <Geometry Model Instance> instance of a <Model> instance representing a chimney, and a <Union of Primitive Geometry> instance containing the <Polygon> instances representing the rest of the structure. The <Geometry Model> instance's geometry in this case is organized as a <Separating Plane Related Geometry> instance, containing one <Separating Plane Relations> instance, the <Separating Plane> component of which describes the plane of the portion of the roof on which the chimney is placed. The SE_TRUE branch of the <Separating Plane Relations> instance contains the chimney <Geometry Model Instance>, while the other branch contains the rest of the house <Model> instance's geometry. <Geometry Model> (house) <> | <Separating Plane Related Geometry> <> | <Separating Plane Relations> <> ---------------------------------------------------------- | | | |-<Separating |-<Separating <Separating | Plane Data> | Plane Data> Plane> | positive = SE_TRUE | positive = SE_FALSE | | | | <Geometry Model Instance> <Union of Primitive Geometry> (chimney) FAQS: None. Superclass: Aggregate Geometry Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Cyclic Aggregations Precedence of Property Set Index Non Crossing Associations Colour Mapping Restrictions Distinct Geometric Centre Image Mapping Functions and Texture Coordinates Separating Plane Related Organizing Principle Associated to (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object Associated by (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or one Hierarchy Summary Item instance zero or more Reference Surface instances Composed of (two-way) (inherited) zero or one Classification Data instance zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or one Reference Surface instance zero or more Sound Instance instances zero or more Base LOD Data instances zero or one Bounding Volume instance zero or more Camera Point instances zero or more Collision Volume instances zero or more Colour instances zero or one Conformal Behaviour instance a bounded set of 0..3 Geometric Centre instances zero or more Geometry Topology Hierarchy instances zero or more {ordered} Image Mapping Function instances zero or one Light Rendering Properties instance zero or more Light Source instances zero or one LSR Transformation instance zero or one Overload Priority Index instance zero or one Perimeter Data instance zero or one Presentation Domain instance zero or more Property Description instances zero or one Rendering Priority Level instance zero or one Rendering Properties instance zero or one Spatial Extent instance zero or one Stamp Behaviour instance Composed of (two-way) one or more Separating Plane Relations instances Composed of (two-way metadata) (inherited) zero or one Time Constraints Data instance zero or one Access instance zero or more Cross Reference instances zero or one Data Quality instance zero or one Description instance Component of (two-way) (inherited) zero or more Alternate Hierarchy Related Geometry instances, each with a Hierarchy Data link object zero or more Animation Related Geometry instances zero or more Classification Related Geometry instances, each with a Classification Data link object zero or one Environment Root instance zero or one Geometry Model instance zero or more LOD Related Geometry instances, each with a Base LOD Data link object zero or more Octant Related Geometry instances, each with a Octant Data link object zero or more Perimeter Related Geometry instances, each with a Perimeter Data link object zero or more Quadrant Related Geometry instances, each with a Quadrant Data link object zero or more Separating Plane Relations instances, each with a Separating Plane Data link object zero or more Spatial Index Related Geometry instances, each with a Spatial Index Data link object zero or more State Related Geometry instances, each with a State Data link object zero or more Time Related Geometry instances, each with a Time Constraints Data link object zero or more Union Of Geometry Hierarchy instances Inherited Field Elements: SE_Boolean unique_descendants; /* * If the value of the unique_descendants field is SE_TRUE, each * descendant of this aggregation, * that is, each <Geometry Representation> instance that exists * in the component tree * rooted at the given <Aggregate Geometry>, shall be unique, in the * sense that it shall appear in only one branch of this aggregation. * If unique_descendants is SE_FALSE, at least one * <Geometry Representation> instance * appears in more than one branch of the aggregation. */ SE_Boolean strict_organizing_principle; /* * If the value of the strict_organizing_principle field is SE_TRUE, * each branch of this aggregation * strictly complies with the organizing principle for its * particular subclass. If this value is SE_FALSE, at least * one branch does not strictly comply with the given * organizing principle. See the organizing principle constraint * for each specific subclass for details. */ ------------------------------------------------------------------------------- Class Name: Separating Plane Relations Definition: An instance of this DRM class specifies a collection of <Geometry Hierarchy> instances that are on either the SE_TRUE or SE_FALSE side of the associated <Separating Plane> instance. Whether a component is on the SE_TRUE or SE_FALSE side is indicated by the data contained within the <Separating Plane Data> link object for that component). Primary Page in DRM Diagram: 4 Example: See <Separating Plane Related Geometry> for examples. FAQS: None. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Distinct Link Objects Separating Plane Related Organizing Principle Composed of (two-way) a bounded set of 1..2 Geometry Hierarchy instances, each with a Separating Plane Data link object one Separating Plane instance Component of (two-way) one Separating Plane Related Geometry instance ------------------------------------------------------------------------------- Class Name: SEQ 3D Location Definition: An instance of this DRM class specifies a coordinate within the Solar Equatorial (SEQ) 3D SRF. See [I18026] for a complete definition. Primary Page in DRM Diagram: 15 Example: None. FAQS: None. Superclass: Location 3D Constraints: Publishable Object Environment Root Spatial Reference Frame Image Anchor Spatial Reference Frame Model Spatial Reference Frame Component of (two-way) (inherited) zero or more Arc instances zero or more Camera Point instances zero or more Directional Light Behaviour instances zero or one Distance LOD Data instance zero or more Ellipse instances zero or more Feature Edge instances zero or more Feature Face instances zero or one Feature Node instance zero or more Image Anchor instances zero or more Label instances zero or more Perimeter Data instances zero or more Point instances zero or more Property Grid Hook Point instances zero or one Reference Origin instance zero or more Reference Vector instances zero or more Spatial Extent instances zero or more Spatial Index Related Feature Topology instances zero or more Spatial Index Related Features instances zero or more Spatial Index Related Geometry instances zero or more Spatial Index Related Geometry Topology instances zero or more Tack Point instances zero or more Vertex instances zero or more World 3x3 instances zero or more World Transformation instances zero or one Attachment Point instance zero or more Base Positional Light instances zero or one Contact Point instance zero or more Geometric Centre instances zero or more Separating Plane instances zero or more Sound Instance instances zero or more Stamp Behaviour instances zero or more Volume instances zero or more Volume Light Behaviour instances zero or more Volume LOD Data instances zero or more Volume Object instances Field Elements: SRM_Spherical_3D_Coordinate coordinate; /* * The coordinate field specifies the coordinate values. */ ------------------------------------------------------------------------------- Class Name: SM 3D Location Definition: An instance of this DRM class specifies a coordinate within the Solar Magnetic (SM) 3D SRF. See [I18026] for a complete definition. Primary Page in DRM Diagram: 15 Example: 1. SM provides a convenient spatial reference frame for ordering data controlled more strongly by the Earth's dipole field than by solar wind. It has been used for representing magnetopause cross-sections and magnetospheric magnetic fields. FAQS: Q. Is SM inertial? A. SM is quasi-inertial in that it rotates with both a yearly and daily period. Q. Where can users obtain further information on SM? A. See the SRM for additional details. Superclass: Location 3D Constraints: Publishable Object Environment Root Spatial Reference Frame Image Anchor Spatial Reference Frame Model Spatial Reference Frame Component of (two-way) (inherited) zero or more Arc instances zero or more Camera Point instances zero or more Directional Light Behaviour instances zero or one Distance LOD Data instance zero or more Ellipse instances zero or more Feature Edge instances zero or more Feature Face instances zero or one Feature Node instance zero or more Image Anchor instances zero or more Label instances zero or more Perimeter Data instances zero or more Point instances zero or more Property Grid Hook Point instances zero or one Reference Origin instance zero or more Reference Vector instances zero or more Spatial Extent instances zero or more Spatial Index Related Feature Topology instances zero or more Spatial Index Related Features instances zero or more Spatial Index Related Geometry instances zero or more Spatial Index Related Geometry Topology instances zero or more Tack Point instances zero or more Vertex instances zero or more World 3x3 instances zero or more World Transformation instances zero or one Attachment Point instance zero or more Base Positional Light instances zero or one Contact Point instance zero or more Geometric Centre instances zero or more Separating Plane instances zero or more Sound Instance instances zero or more Stamp Behaviour instances zero or more Volume instances zero or more Volume Light Behaviour instances zero or more Volume LOD Data instances zero or more Volume Object instances Field Elements: SRM_Spherical_3D_Coordinate coordinate; /* * The coordinate field specifies the coordinate values. */ ------------------------------------------------------------------------------- Class Name: Sound Definition: An instance of this DRM class specifies a digital representation of an acoustic phenomenon. Primary Page in DRM Diagram: 22 Secondary Pages in DRM Diagram: 10 Example: 1. A sound, such as a siren that can be used by different models such as ambulances, fire engines, or police vehicles. FAQS: Q. How can a data provider reference a <Sound> in a transmittal? A. See <Sound Instance>. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Associated by (one-way) zero or more Sound Instance instances Composed of (two-way) zero or one Classification Data instance zero or one Lineage instance Composed of (two-way metadata) zero or one Access instance zero or one Citation instance zero or more Cross Reference instances zero or one Description instance Component of (two-way) one Sound Library instance Field Elements: SE_String name; /* * The name field specifies a meaningful short name. */ SE_Sound_Format sound_format; /* * The sound_format field specifies the sound format of the resource. */ SE_URN sound_urn; /* * The sound_urn field specifies a SEDRIS sound URN, in the form * urn:x-sedris:<DNAS>:sound=<SN> * where: * <DNAS> is domain name authority name string, and * <SN> is a scoped sound resource name string. */ SE_Float duration; /* * The duration field specifies the length of the sound clip in seconds. */ SE_Float sampling_rate; /* * The sampling_rate field specifies the number of samples per second. * For example, a standard CD has a sampling of 44.1 kHz, which would * be a sampling rate of 44100. */ SE_Byte_Positive bits_per_sample; /* * The bits_per_sample field is also called *sample size* or * *quantization*; for example, a standard CD has 16 bits per sample. */ SE_Byte_Positive channel_count; /* * Note that a channel_count of 1 = mono, 2 = stereo * (CDs can be recorded with 4 channels). */ SE_String method; /* * The method field specifies the encoding scheme (such as MULAW, * ALAW, ACE, ADPCM, CELP, LPC) and compression scheme (CODEC) * used, if any. */ ------------------------------------------------------------------------------- Class Name: Sound Instance Definition: An instance of this DRM class is a single case of the existence of a <Sound> within a given transmittal, including variations or specialization unique to that case. A <Sound Instance> can represent environmental audio, region-based audio, or spatialized audio. 1. Environmental audio is audio that is non-localized and non-attenuated. It is constant over the entire transmittal. Environmental audio can be thought of as "background" sound. It has no <Location 3D>, <Perimeter Data>, or <Sound Volume>. An example would be the constant sound of rainfall over an entire transmittal. 2. Region-based audio is similar to environment audio, except that it is constant over either an areal region (if it has a <Perimeter Data>) or a three dimensional volume (if it has a <Sound Volume>). Region-based audio is non-localized, but it may be attenuated to support fade out at the boundary of the region. (See examples for <Perimeter Data>, <Sound Volume>). 3. Spatialized audio may be either two dimensional or three dimensional. The method of rendering spatialized audio is left to the consuming application. In this case, a <Location 3D> is associated with the <Sound Instance> if spatialized audio is desired. Primary Page in DRM Diagram: 22 Secondary Pages in DRM Diagram: 3 8 9 Example: 1. Given a <Geometry Model Instance> of an M1, a <Sound Instance> for the <Geometry Model Instance> uses the <Location 3D> of the M1 for the location of the audio. 2. Given a <Geometry Model Instance> of an F16, a <Sound Instance> for the <Geometry Model Instance> specifies a unique <Location 3D> for the audio in order to simulate propagation of sound delay (one would hear the audio in a slightly different location than one would see the F16). 3. Create a 2-stage sound effect for an engine. The stages are "engine crank" and "engine running". a. The first <Sound> is instanced by a <Sound Instance> with a <Time Interval> from 0.0 to 1.5 seconds. b. The second <Sound> is a looped sound, and is instanced by a <Sound Instance> with a start delay (via the Time Interval) of 1.5 seconds, and no end time. The application would set the <Sound Instance Control Link> instances of both <Sound Instance> instances to "on" to start the sound, at which point the crank sound would play for 1.5 seconds followed by the (looped) engine running sound. The engine running sound would continue to play until the application set the <Sound Instance Control Link> for the engine running sound to "off". FAQS: Q. Can multiple sound effects be chained together? A. Yes. The <Time Interval> component of <Sound Instance> can be used to daisy-chain multiple sound effects. In Example 3 (below) of an engine cranking, each of the sounds (i.e. engine crank and engine running) can be its own <Sound Instance>. Q. How are the components of a <Sound Instance> used to determine which type of audio it represents? A. The components take precedence in the following manner. 1. If the <Sound Instance> has no <Location 3D>, <Perimeter Data>, or <Sound Volume>, then it represents environmental audio, and is non-localized and non-attenuated. Consequently, for this case, no <Fade Range> shall be present. 2. If the <Sound Instance> has a <Location 3D>, then the <Location 3D> takes precedence over any <Perimeter Data> or <Sound Volume> components that may be present. 3. If the <Sound Instance> has no <Location 3D>, but does have a <Sound Volume>, then the <Sound Volume> takes precedence over any <Perimeter Data> that may be present. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Associated to (one-way) one Sound instance Composed of (two-way) zero or one Fade Range instance zero or one Location 3D instance zero or one Perimeter Data instance zero or one Sound Instance Control Link instance zero or one Sound Volume instance zero or more Time Interval instances Component of (two-way) zero or more Feature Hierarchy instances zero or more Geometry Hierarchy instances Field Elements: SE_Boolean active_sound_value; /* * The active_sound_value specifies the default / active state of * the given <Sound> instance, where SE_TRUE indicates on and * SE_FALSE indicates off. */ ------------------------------------------------------------------------------- Class Name: Sound Instance Control Link Definition: An instance of this DRM class is a specialized <Control Link> used to provide the connection between an ordered aggregation of <Expression> instances and the target fields of a <Sound Instance> instance, controlling the active_sound_value stored in the target <Sound Instance> instance(s), so that each can be turned on or off. Primary Page in DRM Diagram: 17 Secondary Pages in DRM Diagram: 22 Example: 1. A <Model> instance representing a lighthouse has a <Geometry Model> component with a <Union Of Geometry Hierarchy> component, to which is attached a <Sound Instance> instance representing the foghorn. The <Sound Instance> instance has a <Sound Instance Control Link> component that turns the foghorn on or off, depending on the weather. FAQS: Q. Can a <Sound Instance Control Link> be used to change which <Sound> is accessed by a <Sound Instance>? A. No. The link to the <Sound> is an association within the transmittal, and associations cannot be changed dynamically. Superclass: Control Link Constraints: Publishable Object Composed of (two-way) (inherited) one or more {ordered} Expression instances Component of (two-way) one or more Sound Instance instances Inherited Field Elements: SE_String description; /* * The description field specifies a text description of the given * <Control Link> instance's purpose. */ Field Elements: SE_Integer_Positive active_sound_value_expr_index; /* * The active_sound_value_expr_index field specifies the <Expression> * component, the value of which controls the value of the * active_sound_value field of the affected <Sound Instance> instance(s). * If the controlling <Expression> instance is evaluated to SE_TRUE, the * affected <Sound Instance> instances are on. */ ------------------------------------------------------------------------------- Class Name: Sound Library Definition: An instance of this DRM class specifies the complete list of the unique sounds that can be referenced within a transmittal. Primary Page in DRM Diagram: 10 Secondary Pages in DRM Diagram: 1 22 Example: 1. The <Sound Library> instance lists all of the unique sounds that can be used in a transmittal. FAQS: None. Superclass: Library Constraints: Publishable Object Composed of (two-way) one or more {ordered} Sound instances Composed of (two-way metadata) (inherited) zero or one Access instance zero or one Citation instance zero or one Description instance Component of (two-way) one Transmittal Root instance ------------------------------------------------------------------------------- Class Name: Sound Volume Definition: An instance of this DRM class specifies a volume within which a given <Sound> instance should be active. Primary Page in DRM Diagram: 9 Secondary Pages in DRM Diagram: 22 Example: 1. Define a cylindrical <Sound Volume> instance that encompasses a river and play the sound of running water when within that volume. FAQS: None. Superclass: Volume Constraints: Publishable Object Composed of (two-way) (inherited) one Location 3D instance one Volume Extent instance Component of (two-way) one or more Sound Instance instances ------------------------------------------------------------------------------- Class Name: Source Definition: An instance of this DRM class specifies a description of a source or intermediate dataset used during data generation. The term "source" is used loosely, and covers intermediate forms and final products as well as the original data sources. Primary Page in DRM Diagram: 20 Example: 1. Description of a VPF database used as a source of feature information. FAQS: Q. What is the purpose of this class? A. This class provides a mechanism for documenting the sources used in environmental database generation. It can also be used to document intermediate forms of the data, as well as final products. In conjunction with the <Process Step> class, this class can be used to construct a network-like description of the database generation process, consisting of processing steps linked by their input and output data. This class uses a <Citation> component to refer to the source data, so it has the flavor of a bibliographical reference, and can be used to refer to books, maps, presentations, or any other type of 'publication', as well as to digital data sets. Each <Source> instance includes a field in which the nature of the contribution of each source to the result can be described. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Distinct Link Objects Mandatory Metadata Associated by (one-way) zero or more Process Step instances, each with a In Outs link object Composed of (two-way) one Time Interval instance Composed of (two-way metadata) one Citation instance Component of (two-way) zero or more Lineage instances Field Elements: SE_String description; /* * The description field specifies a description of the source * data set, and is mandatory. */ SE_Integer_Positive scale; /* * The scale field specifies the scale of the source data set * (for example, 24000 for a "1:24,000" scale). */ SE_String contribution; /* * If supplied, the contribution field states what the source * data set contributes to the result. */ ------------------------------------------------------------------------------- Class Name: Spatial Association Data Definition: An instance of this DRM class specifies the semantic meaning of the association relationship with which it is bound, which will represent a spatial relationship. Primary Page in DRM Diagram: 9 Example: None. FAQS: None. Superclass: Base Spatial Association Data Constraints: Publishable Object Inherited Field Elements: SE_Spatial_Association_Meaning_Type meaning; /* * The meaning field specifies the semantic meaning of the association * relationship with which the given instance of * <Base Spatial Association Data> is bound. */ ------------------------------------------------------------------------------- Class Name: Spatial Extent Definition: An instance of this DRM class specifies the spatial extent of the containing object. Primary Page in DRM Diagram: 20 Secondary Pages in DRM Diagram: 1 2 4 6 8 19 22 Example: 1. The spatial extent of an <Environment Root> instance within a transmittal, defined by the minimum and maximum latitude and longitude values (that is, the southwest and northeast corners). 2. The bounding parallelepiped of a <Model> instance representing a building, in LSR coordinates. FAQS: Q. What is the purpose of this class? A. This class provides ISO 19115-compliant metadata that describes the location and spatial extent of a high-level SEDRIS object (such as <Transmittal Root>, <Model>, <Image>) <Spatial Extent> allows potential users of a SEDRIS transmittal to evaluate the region contained by the transmittal without necessarily having to actually obtain or examine the transmittal itself. Q. How is the spatial extent of an object defined? A. The spatial extent of an object is a simple bounding rectangle or parallelepiped that includes all of the <Location> instances contained within that object. The bounding rectangle or parallelepiped is defined by two coordinate locations: the "minimum" corner, and the "maximum" corner, which represent the minimum and maximum values, respectively, along each of the axes of the spatial reference frame within which the object is defined. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Composed of (two-way) exactly 2 {ordered} Location instances Component of (two-way) zero or more Aggregate Feature instances zero or more Aggregate Geometry instances zero or one Environment Root instance zero or more Image instances zero or more Model instances zero or more Primitive Feature instances zero or more Property Grid Hook Point instances zero or more Property Set instances ------------------------------------------------------------------------------- Class Name: Spatial Index Data Definition: An instance of this DRM class specifies the (1-based) row and column indices of a cell within a regular spatial relationship of cells. <Spatial Index Data> instances are used within spatial-index-related organizations to distinguish sibling branches of the organizations. Given the origin of the spatial-index-related organization instance, and the row and column widths defined by that organization instance, the location of any cell is determined from its <Spatial Index Data> instance. Primary Page in DRM Diagram: 4 Secondary Pages in DRM Diagram: 8 11 Example: See <Spatial Index Related Organizing Principle>, <Spatial Index Related Features>, <Spatial Index Related Geometry>, <Spatial Index Related Feature Topology>, and <Spatial Index Related Geometry Topology> for examples. FAQS: None. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Field Elements: SE_Integer_Positive row_index; /* * The row_index field specifies the row within the * spatial-index-related organization to which the * specified cell belongs. */ SE_Integer_Positive column_index; /* * The column_index field specifies the column within the * spatial-index-related organization to which the specified * cell belongs. */ ------------------------------------------------------------------------------- Class Name: Spatial Index Related Feature Topology Definition: An instance of this DRM class specifies a spatially indexed (tiled) organization of primitive <Feature Topology> instances. Primary Page in DRM Diagram: 11 Example: 1. An <Aggregate Feature> instance can have more than one spatial organization for its topology. This allows various 'levels' or organizations. Perhaps at the 'top' <Aggregate Feature> instance under an <Environment Root> instance, one might find a single 10 kilometre by 10 kilometre spatial organization of topology spanning the entire transmittal, as well as one 500 metres by 500 metres spatial organization of topology also spanning the entire transmittal. That 'top' <Aggregate Feature> would have two <Spatial Index Related Feature Topology> components, one for the 10 kilometre squares and one for the 500 metre squares. FAQS: Q. Why an aggregate object instead of a hierarchy or some other type of SEDRIS object? A. We need a 'branch', and each branch from an aggregation is a hierarchy object, because <Aggregate Feature> instances contain <Feature Hierarchy> instances. When an <Aggregate Feature> instance has a <Feature Topology Hierarchy>, that <Aggregate Feature> represents a distinct topological surface. We shall organize a topological surface, a.k.a. an "independent topology", which eventually, in SEDRIS, is 'rooted at' a single <Aggregate Feature> instance. The <Feature Hierarchy> components of the <Aggregate Feature> are either <Aggregate Features> or <Feature Model Instances>. For <Feature Model Instances>, the topological organization of the <Model>, if it isn't a "null" <Model>, is contained within the <Model>, so we're left with a need to specify the topological organization of an <Aggregate Feature> instance. The organizing principle shall be applied at the <Aggregate Feature> level - no lower, no higher. The same spatial indexing structure can be shared by multiple <Aggregate Feature> instances, because there can exist multiple organizations of the same set of <Feature> instances. When a single set of <Feature Representation> instances is organized by multiple classification approaches, it's still the same set of <Feature Representation> instances being dealt with, and still the same set of <Feature Node>, <Feature Edge>, and <Feature Face> instances. Changing the logical organization of the <Feature Representation> instances has no effect on the spatial organization of the underlying topological primitives. Thus, one spatial organization for a set of topological primitives may be shared by many different organizations (aggregations) of <Feature Representation> instances, where the <Feature Representation> instances are composed of the same spatially organized topological primitives, regardless of the organization from which the <Feature Representation> instances are viewed. Superclass: Feature Topology Hierarchy Constraints: Publishable Object Distinct Link Objects Composed of (two-way) one Location instance one or more Union Of Feature Topology instances, each with a Spatial Index Data link object Component of (two-way) (inherited) zero or more Aggregate Feature instances Inherited Field Elements: SE_Feature_Topology_Level feature_topology_level; /* * The feature_topology_level field specifies the level of * feature topology that is present within the hierarchy * represented by the given <Feature Topology Hierarchy> * instance. */ Field Elements: SE_Boolean sparse; /* * If the value of the sparse field is SE_FALSE, all column and row * entries are present; otherwise one or more entries are not present. */ SE_Integer_Positive column_count; /* * The column_count field specifies the number of cells along the X axis. */ SE_Integer_Positive row_count; /* * The row_count field specifies the number of cells along the Y axis. */ SE_Long_Float column_width; /* * The column_width field specifies the length of a cell in the * given unit along the X axis. */ SE_Long_Float row_width; /* * The row_width field specifies the length of a cell in the * given unit along the Y axis. */ SE_Spatial_Index_Spacing_Unit spacing_unit; /* * The spacing_unit field specifies the unit of measurement used * for the spacing of the spatial index. */ ------------------------------------------------------------------------------- Class Name: Spatial Index Related Features Definition: An instance of this DRM class specifies an aggregation of <Feature Hierarchy> objects in which each component <Feature Hierarchy> represents a different tile within a spatially indexed (tiled) organization of <Primitive Feature> objects within a SEDRIS transmittal. The <Spatial Index Data> link object corresponding to each component <Feature Hierarchy> indicates which tile it represents. This DRM class exists to allow <Feature Representation> objects to be organized (tiled) according to some regular spatial index. Primary Page in DRM Diagram: 8 Example: 1. See <Spatial Index Related Organizing Principle>, example #2. FAQS: Q. A particular data provider's data consists of a collection of <Areal Feature> instances that are tiled along the lines of a grid, but some <Areal Feature> instances here and there cross over tile boundaries. Can these <Areal Feature> instances be organized with a <Spatial Index Related Features> instance? A. Yes, if its strict_organizing_principle is set to SE_FALSE to indicate that the indexing is not strictly followed (see <<Spatial Index Related Organizing Principle>>, example #2). Each tile of the spatial index would be represented by a <Feature Hierarchy> component of the <Spatial Index Related Features> instance. Superclass: Aggregate Feature Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Crossing Associations Precedence of Property Set Index Non Cyclic Aggregations Colour Mapping Restrictions Image Mapping Functions and Texture Coordinates Distinct Link Objects Spatial Index Related Organizing Principle Associated to (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or more Property Grid instances, each with a Base Association Data link object Associated by (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or more Property Grid instances, each with a Base Association Data link object zero or one Hierarchy Summary Item instance Composed of (two-way) (inherited) zero or one Classification Data instance zero or more Label instances zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or one Rendering Priority Level instance zero or one Reference Surface instance zero or more Sound Instance instances zero or more Base LOD Data instances zero or more Colour instances zero or more Feature Topology Hierarchy instances zero or more {ordered} Image Mapping Function instances zero or one Perimeter Data instance zero or one Presentation Domain instance zero or more Property Description instances zero or one Spatial Extent instance Composed of (two-way) one or more Feature Hierarchy instances, each with a Spatial Index Data link object one Location instance Composed of (two-way metadata) (inherited) zero or one Access instance zero or more Cross Reference instances zero or one Data Quality instance zero or one Description instance zero or one Time Constraints Data instance Component of (two-way) (inherited) zero or more Union Of Features instances zero or more Alternate Hierarchy Related Features instances, each with a Hierarchy Data link object zero or more Classification Related Features instances, each with a Classification Data link object zero or one Environment Root instance zero or one Feature Model instance zero or more LOD Related Features instances, each with a Base LOD Data link object zero or more Octant Related Features instances, each with a Octant Data link object zero or more Perimeter Related Features instances, each with a Perimeter Data link object zero or more Quadrant Related Features instances, each with a Quadrant Data link object zero or more Spatial Index Related Features instances, each with a Spatial Index Data link object zero or more State Related Features instances, each with a State Data link object zero or more Time Related Features instances, each with a Time Constraints Data link object Inherited Field Elements: SE_Boolean unique_descendants; /* * If the value of the unique_descendants field is SE_TRUE, each * descendant, that is, each <Feature Representation> instance that * exists in the component tree rooted at the given <Aggregate Feature>, * shall be unique, in the * sense that it shall appear in only one branch of this aggregation. * If unique_descendants is SE_FALSE, at least one * <Feature Representation> instance * appears in more than one branch of the aggregation. */ SE_Boolean strict_organizing_principle; /* * If the value of the strict_organizing_principle field is SE_TRUE, * each branch of this aggregation * strictly complies with the organizing principle for its * particular subclass. If this value is SE_FALSE, at least * one branch does not strictly comply with the given * organizing principle. See the organizing principle constraint * for each specific subclass for details. */ Field Elements: SE_Boolean sparse; /* * If the value of the sparse field is SE_FALSE, all column and row * entries are present; otherwise one or more entries are not present. */ SE_Integer_Positive column_count; /* * The column_count field specifies the number of cells along the X axis. */ SE_Integer_Positive row_count; /* * The row_count field specifies the number of cells along the X axis. */ SE_Long_Float column_width; /* * The column_width field specifies the length of a cell in the * given unit along the X axis. */ SE_Long_Float row_width; /* * The row_width field specifies the length of a cell in the * given unit along the X axis. */ SE_Spatial_Index_Spacing_Unit spacing_unit; /* * The spacing_unit field specifies the unit of measurement used * for the spacing of the spatial index. */ ------------------------------------------------------------------------------- Class Name: Spatial Index Related Geometry Definition: An instance of this DRM class specifies an aggregation of <Geometry Hierarchy> objects in which each component <Geometry Hierarchy> represents a different tile within a spatially indexed (tiled) organization of <Primitive Geometry> objects within a SEDRIS transmittal. The <Spatial Index Data> link object attached to each component <Geometry Hierarchy> indicates the tile that it represents. Primary Page in DRM Diagram: 4 Example: 1. See <<Spatial Index Organizing Principle>>, example #1. 2. Consider an <Environment Root> describing a terrain surface that is a mix of grids and polygons, organized by spatial indexing into 9 cells. ------------------- | A | B | C | ------------------- | D | E | F | ------------------- | G | H | I | ------------------- All cells except H are grids (represented in SEDRIS as <Property Grid> instances) captured at 1 level of detail. Cell H consists of <Polygon> instances. This would be represented as <Environment Root> <> | | <Spatial Index Related Geometry> <> |------- <CD 2D Location> | (0, 0) | ----------------------------------------------------------------- | | | | | | | | | |-SID |-SID |-SID |-SID |-SID |-SID |-SID |-SID |-SID | (1,1) | (1,2) | (1,3) | (2,1) | (2,2) | (2,3) | (3,1) | (3,2) | (3,3) | | | | | | | | | | | | | | | | | | PGHP PGHP PGHP PGHP PGHP PGHP PGHP UoPG PGHP (A) (B) (C) (D) (E) (F) (G) (H) (I) where the <Spatial Index Related Geometry> has row_count = 3 and column_count = 3, spacing_unit = arc seconds. Please note that the components of the <Spatial Index Related Geometry> are not ordered; the <Spatial Index Data> is used to identify the individual tiles. FAQS: Q. What is the purpose of this class? A. This class allows <Geometry Representation> objects to be organized (tiled) according to some spatial index. Q. Consider a data provider whose data consists of terrain <Polygon> instances that are tiled along the lines of a grid, but in which some <Polygon> instances here and there cross over tile boundaries. Can these <Polygon> instances be organized with a <Spatial Index Related Geometry> instance? A. Yes, if its strict_organizing_principle is set to SE_FALSE to indicate that the indexing is not strictly followed (see <<Spatial Index Related Organizing Principle>>, example #1). Each tile of the spatial index would be represented by a <Geometry Hierarchy> component of the <Spatial Index Related Geometry> instance. Q. Where is the origin of the spatial index? A. The required <Location> component of a <Spatial Index Related Geometry> instance specifies the origin of the spatial index, which is its lower-left corner. Superclass: Aggregate Geometry Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Cyclic Aggregations Precedence of Property Set Index Non Crossing Associations Colour Mapping Restrictions Distinct Geometric Centre Image Mapping Functions and Texture Coordinates Distinct Link Objects Spatial Index Related Organizing Principle Associated to (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object Associated by (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or one Hierarchy Summary Item instance zero or more Reference Surface instances Composed of (two-way) (inherited) zero or one Classification Data instance zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or one Reference Surface instance zero or more Sound Instance instances zero or more Base LOD Data instances zero or one Bounding Volume instance zero or more Camera Point instances zero or more Collision Volume instances zero or more Colour instances zero or one Conformal Behaviour instance a bounded set of 0..3 Geometric Centre instances zero or more Geometry Topology Hierarchy instances zero or more {ordered} Image Mapping Function instances zero or one Light Rendering Properties instance zero or more Light Source instances zero or one LSR Transformation instance zero or one Overload Priority Index instance zero or one Perimeter Data instance zero or one Presentation Domain instance zero or more Property Description instances zero or one Rendering Priority Level instance zero or one Rendering Properties instance zero or one Spatial Extent instance zero or one Stamp Behaviour instance Composed of (two-way) one or more Geometry Hierarchy instances, each with a Spatial Index Data link object one Location instance Composed of (two-way metadata) (inherited) zero or one Time Constraints Data instance zero or one Access instance zero or more Cross Reference instances zero or one Data Quality instance zero or one Description instance Component of (two-way) (inherited) zero or more Alternate Hierarchy Related Geometry instances, each with a Hierarchy Data link object zero or more Animation Related Geometry instances zero or more Classification Related Geometry instances, each with a Classification Data link object zero or one Environment Root instance zero or one Geometry Model instance zero or more LOD Related Geometry instances, each with a Base LOD Data link object zero or more Octant Related Geometry instances, each with a Octant Data link object zero or more Perimeter Related Geometry instances, each with a Perimeter Data link object zero or more Quadrant Related Geometry instances, each with a Quadrant Data link object zero or more Separating Plane Relations instances, each with a Separating Plane Data link object zero or more Spatial Index Related Geometry instances, each with a Spatial Index Data link object zero or more State Related Geometry instances, each with a State Data link object zero or more Time Related Geometry instances, each with a Time Constraints Data link object zero or more Union Of Geometry Hierarchy instances Inherited Field Elements: SE_Boolean unique_descendants; /* * If the value of the unique_descendants field is SE_TRUE, each * descendant of this aggregation, * that is, each <Geometry Representation> instance that exists * in the component tree * rooted at the given <Aggregate Geometry>, shall be unique, in the * sense that it shall appear in only one branch of this aggregation. * If unique_descendants is SE_FALSE, at least one * <Geometry Representation> instance * appears in more than one branch of the aggregation. */ SE_Boolean strict_organizing_principle; /* * If the value of the strict_organizing_principle field is SE_TRUE, * each branch of this aggregation * strictly complies with the organizing principle for its * particular subclass. If this value is SE_FALSE, at least * one branch does not strictly comply with the given * organizing principle. See the organizing principle constraint * for each specific subclass for details. */ Field Elements: SE_Boolean sparse; /* * If the value of the sparse field is SE_FALSE, all column and row * entries are present; otherwise one or more entries are not present. */ SE_Integer_Positive column_count; /* * This is the number of cells along the X axis. */ SE_Integer_Positive row_count; /* * This is the number of cells along the Y axis. */ SE_Long_Float column_width; /* * This is the length of a cell in the given unit along the X axis. */ SE_Long_Float row_width; /* * This is the length of a cell in the given unit along the Y axis. */ SE_Spatial_Index_Spacing_Unit spacing_unit; /* * This is the unit of measurement used for the spacing of the * spatial index. */ ------------------------------------------------------------------------------- Class Name: Spatial Index Related Geometry Topology Definition: An instance of this DRM class specifies a spatially indexed (tiled) organization of primitive <Geometry Topology> instances. Primary Page in DRM Diagram: 11 Example: 1. The set of all <Geometry Topology> instances contained within an independent topological surface, organized into a collection of regularly shaped tiles. FAQS: Q. Why an aggregate object instead of a hierarchy or some other type of SEDRIS object? A. We need a 'branch', and each branch from an aggregation is a hierarchy object, because <Aggregate Geometry> instances contain <Geometry Hierarchy> instances. When an <Aggregate Geometry> instance has a <Geometry Topology Hierarchy>, that <Aggregate Geometry> represents a distinct topological surface. We shall organize a topological surface, a.k.a. an "independent topology", which eventually, in SEDRIS, is 'rooted at' a single <Aggregate Geometry> instance. The <Geometry Hierarchy> components of the <Aggregate Geometry> are either <Aggregate Geometry>, <Property Grid Hook Point>, or <Geometry Model Instances>. For <Geometry Model Instances>, the topological organization of the <Model>, if it isn't a "null" <Model>, is contained within the <Model>, so we're left with a need to specify the topological organization of an <Aggregate Geometry> instance. The organizing principle shall be applied at the <Aggregate Geometry> level - no lower, no higher. The same spatial indexing structure can be shared by multiple <Aggregate Geometry> because there could exist multiple classification organizations of the same set of <Geometry>. When a single set of <Geometry Representation> is organized by multiple classification approaches, it's still the same set of <Geometry Representation> being dealt with, and still the same set of nodes, edges, and faces. Changing the logical organization of the <Geometry Representation> has no effect on the spatial organization of the underlying topological primitives. Thus, one spatial organization for a set of topological primitives may be shared by many different organizations (aggregations) of <Geometry Representation> where the <Geometry Representation> are composed of the same spatially organized topological primitives, regardless of the organization from which the <Geometry Representation>s are viewed. Superclass: Geometry Topology Hierarchy Constraints: Publishable Object Distinct Link Objects Composed of (two-way) one Location instance one or more Union Of Geometry Topology instances, each with a Spatial Index Data link object Component of (two-way) (inherited) zero or more Aggregate Geometry instances Inherited Field Elements: SE_Geometry_Topology_Level geometry_topology_level; /* * The geometry_topology_level field specifies the level of * geometry topology that is present within the hierarchy * represented by the given <Geometry Topology Hierarchy> * instance. */ Field Elements: SE_Boolean sparse; /* * If the value of the sparse field is SE_FALSE, all column and row * entries are present; otherwise one or more entries are not present. */ SE_Integer_Positive column_count; /* * The column_count field is the number of cells along the X axis. */ SE_Integer_Positive row_count; /* * The row_count field is the number of cells along the Y axis. */ SE_Long_Float column_width; /* * The column_width field is the length of a cell in the given unit * along the X axis. */ SE_Long_Float row_width; /* * The row_width field is the length of a cell in the given unit * along the Y axis. */ SE_Spatial_Index_Spacing_Unit spacing_unit; /* * The spacing_unit field is the unit of measurement used for * the spacing of the spatial index. */ ------------------------------------------------------------------------------- Class Name: Spatial Resolution LOD Data Definition: An instance of this DRM class specifies the spatial resolution of the associated data, which governs the switching of objects by a spatial-resolution-based <Level of Detail Related Geometry> or <Level of Detail Related Features> instance. Primary Page in DRM Diagram: 9 Example: 1. NIMA Digital Terrain Elevation Data (DTED) is produced at a number of standard spatial resolutions: 30 arc seconds, 3 arc seconds, 1 arc second, 0.3 arc second, and so on. Although the spatial resolution of the longitudinal axis varies with latitude, the spatial resolution of the latitudinal axis is fixed (and equals that of the longitudinal axis at the equator). 2. Atmospheric data sets are often produced in an Augmented Projection- based SRF, such as ALCC (Augmented Lambert Conformal Conic), at a number of standard spatial resolutions, such as 81 kilometres, 27 kilometres, and 9 kilometres. FAQS: Q. Why not just use <Map Scale LOD Data>? A. The <Map Scale LOD Data> class can be used in some cases as a "rough" approximation. Unfortunately, many data sets require more precision. For example, while <Map Scale LOD Data> can be reasonably applied to lower-resolutions of DTED (e.g., levels 0, 1, and 2), it doesn't apply well to higher resolutions of DTED. (It doesn't apply at all to bathymetric and atmospheric data). Q. If the spatial resolution is different among 2 or more spatial axes, which is to be used? A. In this case, normally the highest resolution is to be used. Superclass: Base LOD Data Constraints: Publishable Object LOD Related Organizing Principle Component of (two-way) (inherited) zero or more Aggregate Feature instances zero or more Aggregate Geometry instances zero or more Property Grid Hook Point instances Field Elements: SE_Long_Float spatial_resolution; /* * The spatial_resolution field specifies the spatial resolution * of the associated data, and shall be a positive value. */ SE_Spatial_Index_Spacing_Unit unit; /* * The unit field specifies how the spatial resolution value is measured. */ ------------------------------------------------------------------------------- Class Name: Specular Colour Definition: An instance of this DRM class specifies the specular reflectance component of a <Primitive Colour>, which causes a "highlight" effect on smooth surfaces when they're illuminated, due to light reflected from the illuminated surface. The colour of this component of the lighting equation depends largely on the colour of the light source. <Specular Colour> depends on both - the angle from the lit object to the light source - the angle from the lit object to the observer Primary Page in DRM Diagram: 14 Secondary Pages in DRM Diagram: 21 Example: See <Primitive Colour>. FAQS: Q. What is the <Colour Shininess> component used for? A. <Colour Shininess> acts as an exponent in the lighting equation to determine how shiny the colour appears depending on the angle between the lines to the observer and the light source. Q. Where can users find out more about specular reflection? A. See [FOLEY_VAN_DAM], Section 16.1.4 "Specular Reflection" and [OPENGL], Chapter 5 "Lighting". Superclass: SEDRIS Abstract Base Constraints: Publishable Object Composed of (two-way) one Colour Data instance zero or one Colour Shininess instance Component of (two-way) zero or one Light Source instance zero or one Primitive Colour instance ------------------------------------------------------------------------------- Class Name: Spherical Volume Extent Definition: An instance of this DRM class specifies the radius of a spherical volume relative to the location of the volume centre (which is specified separately by the aggregate of the <Spherical Volume Extent>). Primary Page in DRM Diagram: 9 Example: 1. A collision point is a degenerate sphere with a <Spherical Volume Extent> radius of 0.0 metres. FAQS: None. Superclass: Volume Extent Constraints: Publishable Object Component of (two-way) (inherited) zero or more Volume instances zero or more Volume Light Behaviour instances zero or more Volume LOD Data instances zero or more Volume Object instances Field Elements: SE_Long_Float radius; /* * The radius field is in metres. */ ------------------------------------------------------------------------------- Class Name: Spot Light Definition: An instance of this DRM class is a <Base Positional Light> instance that specifies an elliptic cone of influence, the tip of which is the specified <Location 3D> component. The cone is bounded where it intersects the sphere centred at the tip, the radius of which is given by the radius field value. This results in a a cone-shaped volume of influence, possibly smashed in one direction. Only objects located within this cone can be affected. The intensity dropoff is computed as follows: Given a point on a ray in the cone at fixed distance D from the cone apex, if I0 = intensity on the <Lobe Data> direction axis at distance D Ah = the horizontal angle of the ray in degrees from direction vector Av = the vertical angle of the ray in degrees from direction vector then the intensity I at the point is: case: 0.0 < horizontal_drop_off_rate 0.0 < vertical_drop_off_rate I = I0 * (1.0 - |Ah| * horizontal_drop_off_rate) * (1.0 - |Av| * vertical_drop_off_rate) case: 0.0 = horizontal_drop_off_rate 0.0 < vertical_drop_off_rate I = I0 * (1.0 - |Av| * vertical_drop_off_rate) case: 0.0 < horizontal_drop_off_rate 0.0 = vertical_drop_off_rate I = I0 * (1.0 - |Ah| * horizontal_drop_off_rate) Primary Page in DRM Diagram: 21 Example: 1. A <Model> of a lighthouse has a <Geometry Model> with a <Union of Geometry Hierarchy>, to which is attached an <Spot Light> representing the lighthouse's light. The <Spot Light> has a <Light Source Control Link> that turns the light on or off, depending on the time of day and the weather. 2. A headlight that actually emits light could have a <Positional Light> source with a direction located at the light, directed out from the headlight. FAQS: Q. How does <Spot Light> differ from the OpenGL concept of a spot light? A. <Spot Light> can losslessly represent an OpenGL spot light. <Spot Light>, however, has the additional capability of specifying that the light is to spread horizontally and vertically, while in an OpenGL <Spot Light>, the horizontal and vertical lobe angles shall be identical, as shall the fall off angles. Superclass: Base Positional Light Constraints: Publishable Object Composed of (two-way) (inherited) one Ambient Colour instance one Diffuse Colour instance zero or one Light Source Control Link instance one Specular Colour instance one Location 3D instance Composed of (two-way) one Lobe Data instance Component of (two-way) (inherited) one or more Aggregate Geometry instances Inherited Field Elements: SE_Boolean apply_to_children; /* * For a <Light Source> instance (that is, an instance of one of the * concrete classes descended from the class) that is a component of * some <Aggregate Geometry>, apply_to_children provides a mechanism * for limiting the scope of the <Light Source>. If apply_to_children * is SE_TRUE, only <Primitive Geometry> in the component tree of those * <Aggregate Geometry> instances are affected by the given * <Light Source>. If apply_to_children is SE_FALSE, the <Light Source> * is not limited to the scope of those <Aggregate Geometry> instances * and thus applies globally. */ SE_Boolean override_positional_lights; /* * For a <Light Source> instance that is a component of some * <Aggregate Geometry>, override_positional_lights provides a * mechanism to indicate with a value of SE_TRUE that the effect of the * given <Light Source> overrides that of any <Base Positional Light> * instances that would have otherwise applied to that * <Aggregate Geometry> - for example, if the given <Light Source> is * so close to the affected <Geometry Representation> that the * <Base Positional Light> effects would be negligible. If * override_positional_lights = SE_FALSE, the effect of the * given <Light Source> is combined with that * of any <Base Positional Light> instances that are already in effect. */ SE_Boolean override_infinite_lights; /* * For a <Light Source> instance (that is, an instance of one of the * concrete classes descended from the class) that is a component of * some <Aggregate Geometry>, override_infinite_lights provides a * mechanism to indicate with a value of SE_TRUE that the effect of the * given <Light Source> overrides that of any <Infinite Light> * instances that would have otherwise applied to that * <Aggregate Geometry>. If override_infinite_lights = SE_FALSE, * the effect of the given <Light Source> is combined with that * of any <Infinite Light> instances that are already in effect. */ SE_Boolean active_light_value; /* * A value of SE_TRUE for the active_light_value field indicates * that the light is on, while a value of * SE_FALSE indicates that the light is off. For a <Light Source> * with a <Light Source Control Link> instance as a component, * this is the default state of the light. */ SE_Float radius; /* * The radius field, which is specified in metres, together with * the <Location 3D> component specifies the zone of influence * of the given <Base Positional Light> instance. */ SE_Long_Float constant_attenuation_factor; /* * The constant_attenuation_factor field is the constant "a" * in the attenuation quadratic (a + bd + cd**2). */ SE_Long_Float linear_attenuation_factor; /* * The linear_attenuation_factor field is the constant "b" * in the attenuation quadratic (a + bd + cd**2). */ SE_Long_Float quadratic_attenuation_factor; /* * The quadratic_attenuation_factor field is the constant "c" * in the attenuation quadratic (a + bd + cd**2). */ Field Elements: SE_Long_Float horizontal_drop_off_rate; /* * The horizontal_drop_off_rate field specifies, in radians, the * horizontal angular intensity distribution of the light. The * higher this value, the more focused the light. * * A value of 0.0 specifies a light that equally illuminates all * objects within the cone of influence, and instantly falls to an * intensity of 0.0 at the edge of the cone of light. */ SE_Long_Float vertical_drop_off_rate; /* * The vertical_drop_off_rate field specifies, in radians, the vertical * angular intensity distribution of the light. The higher this value, * the more focused the light. * * A value of 0.0 specifies a light that equally illuminates all * objects within the cone of influence, and instantly falls to an * intensity of 0.0 at the edge of the cone of light. */ ------------------------------------------------------------------------------- Class Name: SRF Summary Definition: An instance of this DRM class summarizes a spatial reference frame that is used in a transmittal. Primary Page in DRM Diagram: 20 Example: 1. Consider a transmittal containing terrain geometry, an oceanographic <Property Grid> and a number of <Model> instances. The terrain is in one spatial reference frame, the <Property Grid> in another, and some of the <Model> instances in a third (in this example, LSR). Transmittal<>---- Environment <>--- - - (terrain geometry and Root Root ocean data table) <> <> | | | +----- Model <>--- - - (models) | Library | Transmittal Summary <> | +----- DRM Class <>-------- <SRF Summary> | Summary Item srf_info == those of | (Environment Root) Terrain spatial reference frame | +----- DRM Class <>-------- <SRF Summary> | Summary Item srf_info == those of | (Property Grid) Ocean spatial reference frame | +----- DRM Class | Summary Item | (Model Library) | +----- DRM Class <>-------- <SRF Summary> Summary Item srf_info == those of (Model) Model spatial reference frame FAQS: None. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Non Overlapping DRM Class Summary Items Component of (two-way) zero or more DRM Class Summary Item instances Field Elements: SE_SRF_Info srf_info; /* * The srf_info field specifies the spatial reference frame which * the given <SRF Summary> instance is summarizing. */ ------------------------------------------------------------------------------- Class Name: Stamp Behaviour Definition: An instance of this DRM class specifies that the <Geometry Hierarchy> of which the <Stamp Behaviour> is a component rotates automatically with respect to the viewer's location, attempting to continually face the viewer. The <Geometry Hierarchy> rotates about the u, v and/or w axes, within the specified angular limits. The centre of rotation is specified by the component <Location 3D>. The axes are positioned at the centre of rotation, aligned with the equivalent spatial reference frame axes. Geometry with <Stamp Behaviour> is normally planar in nature and is considered to "face" along the normal of that plane. If an axis' clockwise limit is set to SE_POSITIVE_INFINITY and its counter-clockwise limit is set to SE_NEGATIVE_INFINITY, then the aggregating <Geometry Hierarchy> can rotate freely about that axis. If all axis limits are set in this way, then the <Geometry Hierarchy> will rotate freely in any direction about the centre of rotation. Primary Page in DRM Diagram: 3 Secondary Pages in DRM Diagram: 4 7 Example: 1. Consider a <Union Of Primitive Geometry> instance containing a single textured <Polygon> instance, rotating freely about the w axis to represent a tree. The <Union Of Primitive Geometry> instance in this example has a <Stamp Behaviour> component, with u_axis_limits and v_axis_limits set to 0.0 for both the clockwise and counter-clockwise limits, and w_axis_limits set to SE_POSITIVE_INFINITY for clockwise and SE_NEGATIVE_INFINITY for counter-clockwise. The <Stamp Behaviour> instance has a component <Location 3D> instance located at the base of the tree so that the w axis runs up the centre of the tree. FAQS: Q. Since <Stamp Behaviour> instances shall be specified in a 3D LSR spatial reference frame, why is the centre of rotation a <Location 3D> rather than an <LSR 3D Location>? A. Because if and when a <Stamp Behaviour>'s native LSR SRF is instanced into a non-LSR SRF, the <Location 3D> shall be specified so that it can be transformed into the target SRF. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Composed of (two-way) one Location 3D instance Component of (two-way) zero or more Aggregate Geometry instances zero or more Geometry Model Instance instances Field Elements: SE_Rotation_Data u_axis_limits; /* * The u_axis_limits field specifies the angular limits. */ SE_Rotation_Data v_axis_limits; /* * The v_axis_limits field specifies the angular limits. */ SE_Rotation_Data w_axis_limits; /* * The w_axis_limits field specifies the angular limits. */ ------------------------------------------------------------------------------- Class Name: State Control Link Definition: An instance of this DRM class specifies an <Expression> instance that determines the active_state_value of all target state-related aggregation instances, and specifies how the targets are to behave if the resulting active_state_value does not match any branch's <State Data> instance within a given target. Primary Page in DRM Diagram: 17 Secondary Pages in DRM Diagram: 4 8 Example: 1. Consider a <State Related Features> instance describing the topology of a road, where the road crosses bridges that can be destroyed and has segments that can be washed out by flooding. The "active state" of the road (that is, how much damage it has actually suffered) is a variable, determined by some combination of environmental conditions (such as amount of precipitation, whether a nearby dam has collapsed, and so on). Consequently, the <State Related Features> instance has a <State Control Link> component, which specifies a <Variable> instance that controls the active_state_value of the <State Related Features> instance. FAQS: None. Superclass: Control Link Constraints: Publishable Object State Related Organizing Principle Composed of (two-way) (inherited) one or more {ordered} Expression instances Component of (two-way) zero or more State Related Features instances zero or more State Related Geometry instances Inherited Field Elements: SE_String description; /* * The description field specifies a text description of the given * <Control Link> instance's purpose. */ Field Elements: SE_Integer_Positive expr_index; /* * The expr_index field specifies which <Expression> component * controls the active_state_value field of the target state-related * aggregate(s). */ SE_State_Mismatch_Behaviour mismatch_behaviour; /* * The mismatch_behaviour field specifies the behaviour state * control when the specified controlling <Expression> evaluates * to a state value that does not correspond (match) any branch's * <State Data> within the target state-related aggregate(s). */ ------------------------------------------------------------------------------- Class Name: State Data Definition: An instance of this DRM class specifies the specific state value, or interval of possible state values, that will result in the associated branch of the state-related aggregation becoming the active state. The state_tag of the corresponding state-related aggregation provides the meaning of the field values of any given <State Data> instance. Primary Page in DRM Diagram: 4 Secondary Pages in DRM Diagram: 8 Example: See <State Related Features>, <State Related Geometry> for examples. FAQS: None. Superclass: SEDRIS Abstract Base Constraints: Publishable Object State Related Organizing Principle Field Elements: EDCS_Attribute_Value state_value; /* * The state_value field shall specify either a numeric value or an EEC, * depending on the state_tag specified by the aggregation. */ ------------------------------------------------------------------------------- Class Name: State Related Features Definition: An instance of this DRM class specifies a mechanism for specifying discrete states from a possibly continuous state value. Each discrete state corresponds to a branch of the <State Related Features> and is identified by the <State Data> for that branch; the state value itself is given by the state_tag of <State Related Features>. Primary Page in DRM Diagram: 8 Example: 1. Consider a <Feature Model> representing a road in various states of damage - in this example, after flooding. The road's topological connections are different in various states of damage, due to bridges being washed away and various road segments being blocked due to fallen trees and the like. Consequently, the <Feature Model> consists of a <State Related Features> instance, with state_tag = EAC_GENERAL_DAMAGE_FRACTION and active_state = 0.0 % (that is, initially the road is undamaged, before flooding takes place). <State Related Features> <> | --------------------------------- | | |--<State Data> |--<State Data> | [0 % - 20 %) | [20% - 50 %) | | <Union of Features> <Union of Features> The <State Data> for each branch indicates the range of percent damage for which that branch describes the road's feature topology. FAQS: Q. Is <State Related Features> the only way to represent multi-state objects in SEDRIS? A. No. <Control Link> instances can be used to provide a fine level of control over state by changing fields instead of representing states as different <Feature Representation> instances. Superclass: Aggregate Feature Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Crossing Associations Precedence of Property Set Index Non Cyclic Aggregations Colour Mapping Restrictions Image Mapping Functions and Texture Coordinates Distinct Link Objects State Related Organizing Principle Associated to (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or more Property Grid instances, each with a Base Association Data link object Associated by (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or more Property Grid instances, each with a Base Association Data link object zero or one Hierarchy Summary Item instance Composed of (two-way) (inherited) zero or one Classification Data instance zero or more Label instances zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or one Rendering Priority Level instance zero or one Reference Surface instance zero or more Sound Instance instances zero or more Base LOD Data instances zero or more Colour instances zero or more Feature Topology Hierarchy instances zero or more {ordered} Image Mapping Function instances zero or one Perimeter Data instance zero or one Presentation Domain instance zero or more Property Description instances zero or one Spatial Extent instance Composed of (two-way) one or more Feature Hierarchy instances, each with a State Data link object zero or one State Control Link instance Composed of (two-way metadata) (inherited) zero or one Access instance zero or more Cross Reference instances zero or one Data Quality instance zero or one Description instance zero or one Time Constraints Data instance Component of (two-way) (inherited) zero or more Union Of Features instances zero or more Alternate Hierarchy Related Features instances, each with a Hierarchy Data link object zero or more Classification Related Features instances, each with a Classification Data link object zero or one Environment Root instance zero or one Feature Model instance zero or more LOD Related Features instances, each with a Base LOD Data link object zero or more Octant Related Features instances, each with a Octant Data link object zero or more Perimeter Related Features instances, each with a Perimeter Data link object zero or more Quadrant Related Features instances, each with a Quadrant Data link object zero or more Spatial Index Related Features instances, each with a Spatial Index Data link object zero or more State Related Features instances, each with a State Data link object zero or more Time Related Features instances, each with a Time Constraints Data link object Inherited Field Elements: SE_Boolean unique_descendants; /* * If the value of the unique_descendants field is SE_TRUE, each * descendant, that is, each <Feature Representation> instance that * exists in the component tree rooted at the given <Aggregate Feature>, * shall be unique, in the * sense that it shall appear in only one branch of this aggregation. * If unique_descendants is SE_FALSE, at least one * <Feature Representation> instance * appears in more than one branch of the aggregation. */ SE_Boolean strict_organizing_principle; /* * If the value of the strict_organizing_principle field is SE_TRUE, * each branch of this aggregation * strictly complies with the organizing principle for its * particular subclass. If this value is SE_FALSE, at least * one branch does not strictly comply with the given * organizing principle. See the organizing principle constraint * for each specific subclass for details. */ Field Elements: EDCS_Attribute_Code state_tag; /* * The state_tag field specifies the state by which the component * <Feature Hierarchy> instances are being differentiated, and * shall specify an EAC which qualifies as "state applicable". */ EDCS_Attribute_Value active_state_value; /* * The active_state_value field specifies the default state. If the * given <State Related Features> instance has a * <State Control Link> component, the active_state_value field is * the target of that <State Control Link> instance. */ ------------------------------------------------------------------------------- Class Name: State Related Geometry Definition: An instance of this DRM class specifies a mechanism for specifying discrete states from a possibly continuous state value. Each discrete state corresponds to a branch of the <State Related Geometry> and is identified by the <State Data> for that branch; the state value itself is given by the state_tag of <State Related Geometry>. Primary Page in DRM Diagram: 4 Example: 1. Consider a <Model> of a building which has four different geometric representations, representing different damage states. The <Model> therefore has a <Geometry Model>, the geometry of which is organized via a <State Related Geometry> instance with four branches, one for each damage state, as shown below. <Model> <> | |-- <Classification Data> | ECC_BUILDING | |-- <Geometry Model> <> | <State Related Geometry> state_tag = EAC_GENERAL_DAMAGE_FRACTION active_state = 0.0 <> | | |---------------|-----------------|-------------| [0.0 - 0.25) [0.25 - 0.50) [0.50 - 0.75) [0.75 - 0.99) | | | | Geometry Geometry Geometry Geometry "Healthy" "Slight Damage" "Moderate" "Heavy" Each branch of the <State Related Geometry> has a <State Data> indicating the range of percent damage that the branch represents. The range values in the diagram therefore specify explicitly the "bins" in which the states fall. 2. A slightly different design for example 1, modified to allow each <Geometry Model Instance> to specify a percent damage value via a <State Control Link>. - Add a <State Control Link> component to the <State Related Geometry>, with mismatch_behaviour = SE_STATE_MSM_BHVR_NONE and a <Variable> V as its controlling <Expression>, where V's meaning is EAC_GENERAL_DAMAGE_FRACTION. - Associate V to the <Interface Template> component of the <Model>. If the <Model> has no <Interface Template>, create one. The mismatch_behaviour of the <State Control Link> can be exploited to 'turn off' the <Geometry Model Instance> if a damage value is fed in which does not match one of the damage states. (This is why the <Model> doesn't require a 'totally destroyed' state for 100% damage.) If the data provider instead wanted to keep a state transition from happening until the state value matches a <State Data>, SE_STATE_MSM_BHVR_LAST would be specified. The mismatch_behaviour would not be needed if the <Variable> only took on valid values (0.0, 0.5, 0.75, or 1.0), but this scheme does not force state values to be discrete. 3. A wind sock model designed to support a landing site has state behaviour to allow it to respond to wind speed and wind direction. The wind sock is modeled with five states of EAC_WIND_RESPONSE where the response to wind direction is implemented by using a <Rotation Control Link> tied to an EAC_WIND_DIRECTION <Variable>. <State Related Geometry> <> state_tag = EAC_WIND_RESPONSE | active_state = 0.0 | | ---------------------------------------- | | | (branches) <LSR Transformation> <State Control Link> <> <> mismatch_behaviour = | | SE_STATE_MSM_BHVR_LAST | | <Rotation> <Variable> <> angle = 0.0 EAC_WIND_SPEED | | <Rotation Control Link> <> | | <Variable> EAC_WIND_DIRECTION 4. Identifies one of alternative appearances for some "state-applicable" attribute. (a) For a <State Related Geometry> representing different states of an aircraft hatch for EAC_OPENING_COVER_POSITION, one <State Data> with EEC_OPNCOVPOS_CLOSED and another with EEC_OPNCOVPOS_OPEN. (b) For a <State Related Geometry> representing different damage states of a building for EAC_GENERAL_DAMAGE, <State Data> for [0, 25) % damage, [25, 50) % damage, [75, 100) % damage, and [100, 100) % damage. (c) For a <State Related Geometry> representing different states of a forest for healthy vs. burned, EAC_GENERAL_DAMAGE could be used. FAQS: Q. Is <State Related Geometry> the only way to represent multi-state objects in SEDRIS? A. No. <Control Link> instances can be used to provide a fine level of control over state by changing fields instead of representing states as different <Geometry Representation> instances. Superclass: Aggregate Geometry Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Cyclic Aggregations Precedence of Property Set Index Non Crossing Associations Colour Mapping Restrictions Distinct Geometric Centre Image Mapping Functions and Texture Coordinates Distinct Link Objects State Related Organizing Principle Associated to (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object Associated by (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or one Hierarchy Summary Item instance zero or more Reference Surface instances Composed of (two-way) (inherited) zero or one Classification Data instance zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or one Reference Surface instance zero or more Sound Instance instances zero or more Base LOD Data instances zero or one Bounding Volume instance zero or more Camera Point instances zero or more Collision Volume instances zero or more Colour instances zero or one Conformal Behaviour instance a bounded set of 0..3 Geometric Centre instances zero or more Geometry Topology Hierarchy instances zero or more {ordered} Image Mapping Function instances zero or one Light Rendering Properties instance zero or more Light Source instances zero or one LSR Transformation instance zero or one Overload Priority Index instance zero or one Perimeter Data instance zero or one Presentation Domain instance zero or more Property Description instances zero or one Rendering Priority Level instance zero or one Rendering Properties instance zero or one Spatial Extent instance zero or one Stamp Behaviour instance Composed of (two-way) one or more Geometry Hierarchy instances, each with a State Data link object zero or one State Control Link instance Composed of (two-way metadata) (inherited) zero or one Time Constraints Data instance zero or one Access instance zero or more Cross Reference instances zero or one Data Quality instance zero or one Description instance Component of (two-way) (inherited) zero or more Alternate Hierarchy Related Geometry instances, each with a Hierarchy Data link object zero or more Animation Related Geometry instances zero or more Classification Related Geometry instances, each with a Classification Data link object zero or one Environment Root instance zero or one Geometry Model instance zero or more LOD Related Geometry instances, each with a Base LOD Data link object zero or more Octant Related Geometry instances, each with a Octant Data link object zero or more Perimeter Related Geometry instances, each with a Perimeter Data link object zero or more Quadrant Related Geometry instances, each with a Quadrant Data link object zero or more Separating Plane Relations instances, each with a Separating Plane Data link object zero or more Spatial Index Related Geometry instances, each with a Spatial Index Data link object zero or more State Related Geometry instances, each with a State Data link object zero or more Time Related Geometry instances, each with a Time Constraints Data link object zero or more Union Of Geometry Hierarchy instances Inherited Field Elements: SE_Boolean unique_descendants; /* * If the value of the unique_descendants field is SE_TRUE, each * descendant of this aggregation, * that is, each <Geometry Representation> instance that exists * in the component tree * rooted at the given <Aggregate Geometry>, shall be unique, in the * sense that it shall appear in only one branch of this aggregation. * If unique_descendants is SE_FALSE, at least one * <Geometry Representation> instance * appears in more than one branch of the aggregation. */ SE_Boolean strict_organizing_principle; /* * If the value of the strict_organizing_principle field is SE_TRUE, * each branch of this aggregation * strictly complies with the organizing principle for its * particular subclass. If this value is SE_FALSE, at least * one branch does not strictly comply with the given * organizing principle. See the organizing principle constraint * for each specific subclass for details. */ Field Elements: EDCS_Attribute_Code state_tag; /* * The state_tag field specifies the state by which the component * <Geometry Hierarchy> instances are being differentiated, and * shall specify an EAC which qualifies as "state applicable". */ EDCS_Attribute_Value active_state_value; /* * The active_state_value field specifies the default state. If the * given <State Related Geometry> instance has a * <State Control Link> component, the active_state_value field is * the target of that <State Control Link> instance. */ ------------------------------------------------------------------------------- Class Name: Strobing Light Behaviour Definition: An instance of this DRM class specifies that the attributed object appears to be a strobing light. Primary Page in DRM Diagram: 21 Example: 1. Consider a model of an airport, in which the data provider wishes to place a strobing light string along a runway. The light emitted is negligible at an ordinary viewing range, in terms of cast shadows and so on, so it is most efficient to represent it as follows. <Line> count = number of lights along the string suppress_last = SE_FALSE <> | | <Light Rendering Properties> display_type = SE_DISP_TYP_RASTER light_diameter = 0.0 light_extinguishing_range = 0.0 random_area_light = SE_FALSE active_light_value = SE_TRUE candela_value = 0.0 <> | | <Strobing Light Behaviour> period = 2 delay = 0.0 Since the <Line>'s count is greater than zero, it does not appear to be solid; each of its <Vertex> components is shown independently. The light_diameter in pixels is not applicable, and the light is visible at any distance since no extingishing range is specified. The runway lights will always be on, unless a <Light Rendering Properties Control Link> is added. The lights strobe every two seconds. FAQS: None. Superclass: Light Rendering Behaviour Constraints: Publishable Object Component of (two-way) (inherited) one or more Light Rendering Properties instances Field Elements: SE_Long_Float period; /* * The period field specifies, in seconds, the total period of time * (both on and off). */ SE_Long_Float delay; /* * The delay field specifies, in seconds, what might be characterized * as a pre-start; it allows a series of lights to appear asynchronous. */ ------------------------------------------------------------------------------- Abstract Class Name: Surface Geometry Definition: An instance of a concrete class derived from this DRM class is a geometric surface representation. Primary Page in DRM Diagram: 5 Secondary Pages in DRM Diagram: 23 Example: 1. The terrain skin within a given area can be specified as a collection of <Polygon> instances. FAQS: None. Superclass: Primitive Geometry Subclasses: Ellipse Polygon Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Cyclic Aggregations Precedence of Property Set Index Colour Mapping Restrictions Continuous LOD Restrictions Image Mapping Functions and Texture Coordinates Nested Primitive Geometry Composed of (two-way) (inherited) zero or one Classification Data instance zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or more Colour instances zero or more {ordered} Image Mapping Function instances zero or one Light Rendering Properties instance zero or one Presentation Domain instance zero or one Rendering Priority Level instance zero or one Rendering Properties instance zero or more Tack Point instances zero or one Union Of Primitive Geometry instance Composed of (two-way metadata) (inherited) zero or one Time Constraints Data instance Component of (two-way) (inherited) zero or more Union Of Primitive Geometry instances ------------------------------------------------------------------------------- Abstract Class Name: Location Surface Definition: An instance of a concrete class derived from this DRM class specifies linear or angular quantities that designate the position of a point in a surface SRF. Primary Page in DRM Diagram: 15 Secondary Pages in DRM Diagram: 23 Example: See individual subclasses for examples. FAQS: None. Superclass: Location Subclasses: CD Surface Location EC Surface Location LCC Surface Location LTSAS Surface Location LTSC Surface Location LTSE Surface Location M Surface Location OM Surface Location PS Surface Location TM Surface Location Constraints: Publishable Object Environment Root Spatial Reference Frame Image Anchor Spatial Reference Frame Model Spatial Reference Frame Component of (two-way) (inherited) zero or more Arc instances zero or more Camera Point instances zero or more Directional Light Behaviour instances zero or one Distance LOD Data instance zero or more Ellipse instances zero or more Feature Edge instances zero or more Feature Face instances zero or one Feature Node instance zero or more Image Anchor instances zero or more Label instances zero or more Perimeter Data instances zero or more Point instances zero or more Property Grid Hook Point instances zero or one Reference Origin instance zero or more Reference Vector instances zero or more Spatial Extent instances zero or more Spatial Index Related Feature Topology instances zero or more Spatial Index Related Features instances zero or more Spatial Index Related Geometry instances zero or more Spatial Index Related Geometry Topology instances zero or more Tack Point instances zero or more Vertex instances zero or more World 3x3 instances zero or more World Transformation instances ------------------------------------------------------------------------------- Class Name: Symbol Definition: An instance of this DRM class specifies a pictograph with a location and is used to identify objects on 2D maps or displays. Primary Page in DRM Diagram: 10 Example: 1. Standard symbology for a golf course and an appropriate place to draw that symbol on a map are represented by a <Symbol> instance. 2. On a representation of an operational chart, the tactical overlays are comprised of <Symbol> instances representing the unit and control points. FAQS: None. Superclass: Icon Constraints: Publishable Object Composed of (two-way) zero or one Classification Data instance zero or one Lineage instance Composed of (two-way metadata) zero or one Access instance zero or one Citation instance zero or more Cross Reference instances zero or one Description instance Component of (two-way) (inherited) zero or more Label instances Component of (two-way) one Symbol Library instance Field Elements: SE_String name; /* * The name field specifies a meaningful short name. */ SE_Symbol_Format symbol_format; /* * The symbol_format field specifies the symbol format of the resource. */ SE_URN symbol_urn; /* * The symbol_urn field specifies a SEDRIS symbol URN, in the form * urn:x-sedris:<DNAS>:symbol=<SN> * where: * <DNAS> is domain name authority name string, and * <SN> is a scoped symbol resource name string. */ ------------------------------------------------------------------------------- Class Name: Symbol Library Definition: An instance of this DRM class specifies a complete list of the unique <Symbol> instances that can be referenced within the given transmittal. Primary Page in DRM Diagram: 10 Secondary Pages in DRM Diagram: 1 Example: None. FAQS: None. Superclass: Library Constraints: Publishable Object Composed of (two-way) one or more {ordered} Symbol instances Composed of (two-way metadata) (inherited) zero or one Access instance zero or one Citation instance zero or one Description instance Component of (two-way) one Transmittal Root instance ------------------------------------------------------------------------------- Class Name: Table Property Description Definition: An instance of this DRM class specifies a cell data element within a <Data Table> by providing (1) an EAC, SE_Index_Code, or SE_Variable_Code, identifying the meaning of the cell data element, (2) a value_type that specifies its storage type, (3) an EUC and ESC that together specify the scaled unit of measurement. The complete structure of a cell within the given <Data Table> is described by the complete ordered set of <Table Property Description> components of that <Data Table>. Additional information about the cell property being described, where such information is to be applied throughout the scope of the <Data Table>, such as sentinel values and tolerances, is specified by attaching <Property Characteristic> components to the applicable <Table Property Description>(s). Primary Page in DRM Diagram: 6 Example: 1. Consider a <Property Grid> instance containing sound speed data for a body of water. For each spatial location in the grid, the corresponding cell in the <Property Grid> instance specifies the properties of EAC_SALINITY, EAC_MEAN_WATER_BODY_TEMPERATURE, and EAC_WATER_BODY_SOUND_SPEED at that location. <Property Grid> <> | |-- <Table Property Description> | meaning = { SE_ELEM_CODE_TYP_ATTRIBUTE, | { EAC_SALINITY }} | |-- <Table Property Description> | meaning = { SE_ELEM_CODE_TYP_ATTRIBUTE, | { EAC_MEAN_WATER_BODY_TEMPERATURE }} | |-- <Table Property Description> | meaning = { SE_ELEM_CODE_TYP_ATTRIBUTE, | { EAC_WATER_BODY_SOUND_SPEED }} | | (other components, such as <Axis> instances) FAQS: Q. Why is the value_type field needed? A. The storage type of each cell data element shall be specified, and each cell data element shall be allowed to specify its own storage type. This means that the storage type information cannot be stored in the <Data Table>'s own fields, but shall be specified at the <Table Property Description> level. Unlike <Property Value>, which contains a complete EDCS_Attribute_Value, <Table Property Description> only needs to specify the storage type without a value being stored, since the values being described are the cells of the <Data Table>, rather than any part of the <Table Property Description> itself. Q. What is the purpose of the component_data_table_ecc field and the optional <Property Value> components? A. Consider a <Data Table> instance with more than one <Table Property Description> supplying the same SE_Index_Code as a meaning, where that meaning is that each such <Table Property Description> acts as a signature element to reference other <Data Table> instances. In these cases, the component_data_table_ecc, possibly elaborated by optional <Property Value> instances, is needed to distinguish index values in any given cell. See <Classification Data> and the <<Index Codes within Tables>> constraint for further information. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Composed of (two-way) zero or more Property Characteristic instances zero or more Property Value instances Component of (two-way) one or more Data Table instances Field Elements: SE_Element_Type meaning; /* * The meaning field specifies the meaning of the given * <Table Property Description> instance. */ EDCS_Unit_Code value_unit; /* * The value_unit field specifies the unit of measurement of the given * <Table Property Description> instance. */ EDCS_Scale_Code value_scale; /* * The value_scale field specifies the scale applicable to value_unit. */ SE_Data_Table_Data_Value_Type value_type; /* * The value_type field specifies the storage type of the given * <Table Property Description> instance. */ EDCS_Classification_Code component_data_table_ecc; /* * The component_data_table_ecc field specifies the ECC used to identify * the table type of a component or library <Data Table> instance. It * is used only if the given <Table Property Description> instance is * describing an index that refers to a <Data Table> instance. * * This, in turn, is only the case if * meaning = { SE_ELEM_CODE_TYP_INDEX, * {SE_INDEX_CODE_DATA_TABLE_COMPONENT }} * or * meaning = { SE_ELEM_CODE_TYP_INDEX, * {SE_INDEX_CODE_DATA_TABLE_LIBRARY }} */ ------------------------------------------------------------------------------- Class Name: Tack Point Definition: An instance of this DRM class specifies a point corresponding to a fixed position on an image. A <Tack Point> "tacks" the image specified coordinate to a given location on a <Primitive Geometry> instance. Primary Page in DRM Diagram: 5 Example: 1. Centre of a <Polygon> instance that is used as a corner of an <Image> instance. FAQS: None. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Composed of (two-way) one Location instance one or more {ordered} Texture Coordinate instances Component of (two-way) one Primitive Geometry instance ------------------------------------------------------------------------------- Class Name: Text Definition: An instance of this DRM class specifies a character string with a location, which is used to identify places on 2D maps or to label objects. Primary Page in DRM Diagram: 10 Example: 1. The name of a county, and an appropriate place to draw that name on a map are represented by a <Text> instance. FAQS: None. Superclass: Icon Constraints: Publishable Object Component of (two-way) (inherited) zero or more Label instances Field Elements: SE_String text_string; /* * The text_string field specifies the characters making up the * text string; it assumes a termination character. */ SE_Text_Font font; /* * The font field specifies the font to be used to render the text string. */ ------------------------------------------------------------------------------- Class Name: Texture Coordinate Definition: An instance of this DRM class specifies a {s, t} tuple in image space (also known as texture space) used to specify how a texel from the image space is to be mapped to a location in "object" space. Each MIP level of a 2D <Image> defines an image that has a width and height specified in texels. Regardless of the actual size of the image, the image space is defined by treating the two-dimensional image as a square, defined by the lower-left coordinate of (0.0, 0.0) and the upper-right coordinate of (1.0, 1.0). A <Texture Coordinate> instance is a coordinate within this image space. A <Texture Coordinate> instance specifies an exact location within a given image space, and this location is mapped to the "object space" location associated with the <Vertex>, <Point>, or <Tack Point> instance of which the <Texture Coordinate> instance is a component. A textured geometric object generally has a <Texture Coordinate> for each vertex of the object, and the surface of the geometric object is 'painted' or 'covered' with the given Image, interpolating what part of the <Image> should be displayed where based on the <Texture Coordinate> components of the object's vertices. Whether a specified <Texture Coordinate> corresponds to exactly one texel in the texture definition, or to a blending of many texel values from the definition, is a decision made by the texture interpolation algorithm used to display the texture. The methods for calculating the interpolated texture values and for blending the texture onto the object are determined by an <Image Mapping Function>. (Note that according to <<Image Mapping Functions and Texture Coordinates>>, <Texture Coordinate> instances will only appear within the scope of some <Image Mapping Function>.) Primary Page in DRM Diagram: 18 Secondary Pages in DRM Diagram: 5 Example: 1. The s, t coordinates to map to the lower left corner of a <Polygon> instance. FAQS: Q. Given a <Texture Coordinate>, the s value of which is greater than 1.0, how should it be interpreted? A. The interpretation of the <Texture Coordinate>'s s value depends on the value of the image_wrap_s field of the relevant <Image Mapping Function>. - If image_wrap_s specifies that the <Image> is to be clamped, then any s values less than 0.0 are to be clamped to 0.0, and any s values greater than 1.0 are to be clamped to 1.0. That is, s values less than 0.0 are to be treated as though they had been 0.0, and those greater than 1.0 are treated as though they had been 1.0 - If image_wrap_s specifies that the <Image> is to be repeated, then any s less than 0.0 or greater than 1.0 are to be treated as though the <Image> tiles the image space out to infinity. In practical terms, during repeating, the integer portion of the <Texture Coordinate> is ignored, and copies of the texture map tile the surface. Q. Given a <Texture Coordinate>, the t value of which is greater than 1.0, how should it be interpreted? A. The interpretation of the <Texture Coordinate>'s t value depends on the value of the image_wrap_t field of the relevant <Image Mapping Function>. - If image_wrap_t specifies that the <Image> is to be clamped, then any t values less than 0.0 are to be clamped to 0.0, and any t values greater than 1.0 are to be clamped to 1.0. That is, t values less than 0.0 are to be treated as though they had been 0.0, and those greater than 1.0 are treated as though they had been 1.0 - If image_wrap_t specifies that the <Image> is to be repeated, then any t less than 0.0 or greater than 1.0 are to be treated as though the <Image> tiles the image space out to infinity. In practical terms, during repeating, the integer portion of the <Texture Coordinate> is ignored, and copies of the texture map tile the surface. Reference: OpenGL Programming Guide, 3rd edition for more information on clamping and repeating textures. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Image Mapping Functions and Texture Coordinates Composed of (two-way) zero or one Texture Coordinate Control Link instance Component of (two-way) zero or more Point instances zero or more Tack Point instances zero or more Vertex instances Field Elements: SE_Long_Float s; /* * The s field specifies the s value of the (s,t) coordinate. */ SE_Long_Float t; /* * The t field specifies the t value of the (s,t) coordinate. */ ------------------------------------------------------------------------------- Class Name: Texture Coordinate Control Link Definition: An instance of this DRM class is a specialized <Control Link> instance used to provide the connection between an ordered aggregation of <Expression> instances and the target fields of one or more <Texture Coordinate> instances. Primary Page in DRM Diagram: 17 Secondary Pages in DRM Diagram: 18 Example: 1. Consider a <Polygon> representing an exterior wall of a building. If an explosion is simulated near this building representation, the data provider may choose to model the state change by changing the <Texture Coordinate> s, t values of the <Polygon>'s <Vertex> components so that the texture applied to the <Polygon> changes from one portion of the referenced <Image>, representing an undamaged wall, to another portion of the same <Image>, showing damage resulting from smoke. FAQS: None. Superclass: Control Link Constraints: Publishable Object Composed of (two-way) (inherited) one or more {ordered} Expression instances Component of (two-way) one or more Texture Coordinate instances Inherited Field Elements: SE_String description; /* * The description field specifies a text description of the given * <Control Link> instance's purpose. */ Field Elements: SE_Integer_Unsigned s_expr_index; /* * The s_expr_index field specifies which <Expression> component * controls the s field value of the affected <Texture Coordinate> * instance(s). If this value is zero, the s field values of those * instances are not controlled; otherwise, the value is a 1-based * index into the ordered aggregation of <Expression> instances. */ SE_Integer_Unsigned t_expr_index; /* * The t_expr_index field specifies which <Expression> component * controls the t field value of the affected <Texture Coordinate> * instance(s). If this value is zero, the t field values of those * instances are not controlled; otherwise, the value is a 1-based * index into the ordered aggregation of <Expression> instances. */ ------------------------------------------------------------------------------- Class Name: Time Constraints Data Definition: An instance of this DRM class specifies when a portion of a transmittal is "valid" or "active", and when used as a link object in a time-related aggregation, serves to distinguish sibling branches within the aggregation. Primary Page in DRM Diagram: 20 Secondary Pages in DRM Diagram: 2 3 4 6 8 19 22 Example: See <Time Related Features>, <Time Related Geometry> for examples. FAQS: None. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Composed of (two-way) one or more Base Time Data instances Component of (two-way) zero or more Data Table instances zero or more Feature Representation instances zero or more Geometry Representation instances zero or more Image instances zero or more Model instances zero or more Property Set instances ------------------------------------------------------------------------------- Abstract Class Name: Time Interval Definition: An instance of a concrete class derived from this DRM class specifies an interval of time, defined by a start time and a stop time. Primary Page in DRM Diagram: 20 Secondary Pages in DRM Diagram: 22 23 Example: See specific subclasses for examples. FAQS: Q. What is the purpose of this class? A. This class provides 1) ISO 19115-compliant metadata that describes the time period within which a high-level SEDRIS object (e.g. <Transmittal Root>, <Model>, <Image>, etc.) is valid, and 2) a general-purpose mechanism for describing time intervals. The <Time Interval> allows potential users of a SEDRIS transmittal to evaluate the time period covered by the transmittal, without necessarily having to actually obtain or examine the transmittal itself. Superclass: Base Time Data Subclasses: Absolute Time Interval Relative Time Interval Constraints: Publishable Object Component of (two-way) (inherited) zero or more Environment Root instances zero or more Time Constraints Data instances zero or one Transmittal Root instance Component of (two-way) zero or more Season instances zero or more Sound Instance instances zero or more Source instances Inherited Field Elements: SE_Time_Significance time_significance; /* * The time_significance field specifies the significance of * the time information. */ ------------------------------------------------------------------------------- Class Name: Time Of Day Definition: An instance of this DRM class specifies a portion of a day. Primary Page in DRM Diagram: 20 Example: 1. A representation of atmospheric data for a region at different times of day. FAQS: None. Superclass: Base Time Data Constraints: Publishable Object Component of (two-way) (inherited) zero or more Environment Root instances zero or more Time Constraints Data instances zero or one Transmittal Root instance Inherited Field Elements: SE_Time_Significance time_significance; /* * The time_significance field specifies the significance of * the time information. */ Field Elements: SE_Time_Of_Day time_of_day; /* * This indicates the portion of the day represented by * the given <Time Of Day> instance. */ ------------------------------------------------------------------------------- Abstract Class Name: Time Point Definition: An instance of a concrete class derived from this DRM class specifies a point in time. Primary Page in DRM Diagram: 20 Secondary Pages in DRM Diagram: 23 Example: See specific subclasses for examples. FAQS: Q. What is the purpose of this class? A. This class provides 1) ISO 19115-compliant metadata that describes the point in time when a high-level SEDRIS object (e.g. <Transmittal Root>, <Model>, <Image>, etc.) was created, and 2) a general-purpose mechanism for describing points in time. It allows potential users of a SEDRIS transmittal to evaluate the age of a transmittal, without necessarily having to obtain or examine the transmittal itself. Q. When is <Relative Time> required vs. <Absolute Time>? A. <Absolute Time> always represents a GMT time. <Relative Time> can be used to represent alternate time references, such as simulation time or Julian dates. Superclass: Base Time Data Subclasses: Absolute Time Relative Time Constraints: Publishable Object Component of (two-way) (inherited) zero or more Environment Root instances zero or more Time Constraints Data instances zero or one Transmittal Root instance Inherited Field Elements: SE_Time_Significance time_significance; /* * The time_significance field specifies the significance of * the time information. */ ------------------------------------------------------------------------------- Class Name: Time Related Features Definition: An instance of this DRM class is an aggregation of <Feature Hierarchy> instances, in which each branch is a representation of the same environmental entity at a different point in time, as indicated by the corresponding <Time Constraints Data> instance. Primary Page in DRM Diagram: 8 Example: 1. A lake that varies in size significantly with the seasons could be represented as a <Time Related Features> instance, with two (or more) component <Union Of Features> instances, each containing a single <Areal Feature> instance representing the lake. FAQS: None. Superclass: Aggregate Feature Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Crossing Associations Precedence of Property Set Index Non Cyclic Aggregations Colour Mapping Restrictions Image Mapping Functions and Texture Coordinates Distinct Link Objects Associated to (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or more Property Grid instances, each with a Base Association Data link object Associated by (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or more Property Grid instances, each with a Base Association Data link object zero or one Hierarchy Summary Item instance Composed of (two-way) (inherited) zero or one Classification Data instance zero or more Label instances zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or one Rendering Priority Level instance zero or one Reference Surface instance zero or more Sound Instance instances zero or more Base LOD Data instances zero or more Colour instances zero or more Feature Topology Hierarchy instances zero or more {ordered} Image Mapping Function instances zero or one Perimeter Data instance zero or one Presentation Domain instance zero or more Property Description instances zero or one Spatial Extent instance Composed of (two-way) one or more Feature Hierarchy instances, each with a Time Constraints Data link object Composed of (two-way metadata) (inherited) zero or one Access instance zero or more Cross Reference instances zero or one Data Quality instance zero or one Description instance zero or one Time Constraints Data instance Component of (two-way) (inherited) zero or more Union Of Features instances zero or more Alternate Hierarchy Related Features instances, each with a Hierarchy Data link object zero or more Classification Related Features instances, each with a Classification Data link object zero or one Environment Root instance zero or one Feature Model instance zero or more LOD Related Features instances, each with a Base LOD Data link object zero or more Octant Related Features instances, each with a Octant Data link object zero or more Perimeter Related Features instances, each with a Perimeter Data link object zero or more Quadrant Related Features instances, each with a Quadrant Data link object zero or more Spatial Index Related Features instances, each with a Spatial Index Data link object zero or more State Related Features instances, each with a State Data link object zero or more Time Related Features instances, each with a Time Constraints Data link object Inherited Field Elements: SE_Boolean unique_descendants; /* * If the value of the unique_descendants field is SE_TRUE, each * descendant, that is, each <Feature Representation> instance that * exists in the component tree rooted at the given <Aggregate Feature>, * shall be unique, in the * sense that it shall appear in only one branch of this aggregation. * If unique_descendants is SE_FALSE, at least one * <Feature Representation> instance * appears in more than one branch of the aggregation. */ SE_Boolean strict_organizing_principle; /* * If the value of the strict_organizing_principle field is SE_TRUE, * each branch of this aggregation * strictly complies with the organizing principle for its * particular subclass. If this value is SE_FALSE, at least * one branch does not strictly comply with the given * organizing principle. See the organizing principle constraint * for each specific subclass for details. */ Field Elements: SE_Time_Data_Type time_data_type; /* * This specifies the subclass of <Base Time Data> of which * each <Time Constraints Data> link object in the given * organization is to be composed. */ ------------------------------------------------------------------------------- Class Name: Time Related Geometry Definition: An instance of this DRM class is an aggregation of <Geometry Hierarchy> instances, in which each branch is a representation of the same environmental entity at a different point in time, as indicated by the corresponding <Time Constraints Data> instance. Primary Page in DRM Diagram: 4 Example: 1. Consider atmospheric forecast data organized using nested <Time Related Geometry> instances. <Time Related Geometry> < > | -------------------------------- | | | <Classification Data> |-- <Time Constraints Data> ECC_TIME_FORECAST_BASE_SET | < > | | | <Absolute Time> | | | <Time Related Geometry> < > | ------------------------------------------------------------ | | | | | <Classification Data> | | ECC_TIME_FORECAST_TAU_SET | | |-- <Time Constraints Data> |-- <Time Constraints Data> | < > | < > | | | | | <Relative Time> | <Relative Time> | < > | < > | | | | | <Absolute Time> | <Absolute Time> | | <Property Grid Hook Point> <Property Grid Hook Point> The <Classification Data> specify what each <Time Related Geometry> instance corresponds to. The outer <Time Related Geometry> corresponds to base forecast times, while the inner <Time Related Geometry> corresponds to forecast taus. In the forecast world, models are run starting at some base starting time, for example, at 0Z and 12Z. The model then produces forecasts at several deltas after the base starting time, for example, at 6, 12, 18, and 24 hours. These are known as forecast taus. Consequently, if forecast models are run at 0Z and 12Z, and each produces a 24 hour forecast, the following overlap is obtained. 16 Nov 17 Nov 18 Nov 0Z +6 +12 +18 +24 12Z +6 +12 +18 +24 0Z +6 +12 +18 +24 etc. So to uniquely identify a forecast, the base forecast time and the delta (tau) are required. This is why nested <Time Related Geometry> has been used in this example; one <Time Related Geometry> defines the base forecast time, while its component <Time Related Geometry> defines the forecast tau. Note that this approach is needed only if multiple forecasts with overlapping forecasts are included in the transmittal. If instead the analysis (0Z) and +6 forecasts from each forecast are used, the following would be obtained. 16 Nov 17 Nov 0Z +6 12Z +6 0Z +6 12Z +6 etc 2. Consider a <Model> of a deciduous tree. The colour of the tree's leaves depends on the time of year, or season. Consequently, a data provider might organize a tree <Model> using a <Time Related Geometry> along the following lines. (Only the autumn representation of the <Model> is shown, but other branches are present for the other seasons). <Model> <> | <Geometry Model> <> | <Time Related Geometry> | |---<Time Constraints Data> | <> | | | <Season> | time_significance = | SE_TIME_SIGNIF_CONTEXT_DETERMINED | season = SE_SEASON_AUTUMN | <> | | | <Relative Time Interval> | | <Union Of Primitive Geometry> FAQS: None. Superclass: Aggregate Geometry Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Cyclic Aggregations Precedence of Property Set Index Non Crossing Associations Colour Mapping Restrictions Distinct Geometric Centre Image Mapping Functions and Texture Coordinates Distinct Link Objects Associated to (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object Associated by (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or one Hierarchy Summary Item instance zero or more Reference Surface instances Composed of (two-way) (inherited) zero or one Classification Data instance zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or one Reference Surface instance zero or more Sound Instance instances zero or more Base LOD Data instances zero or one Bounding Volume instance zero or more Camera Point instances zero or more Collision Volume instances zero or more Colour instances zero or one Conformal Behaviour instance a bounded set of 0..3 Geometric Centre instances zero or more Geometry Topology Hierarchy instances zero or more {ordered} Image Mapping Function instances zero or one Light Rendering Properties instance zero or more Light Source instances zero or one LSR Transformation instance zero or one Overload Priority Index instance zero or one Perimeter Data instance zero or one Presentation Domain instance zero or more Property Description instances zero or one Rendering Priority Level instance zero or one Rendering Properties instance zero or one Spatial Extent instance zero or one Stamp Behaviour instance Composed of (two-way) one or more Geometry Hierarchy instances, each with a Time Constraints Data link object Composed of (two-way metadata) (inherited) zero or one Time Constraints Data instance zero or one Access instance zero or more Cross Reference instances zero or one Data Quality instance zero or one Description instance Component of (two-way) (inherited) zero or more Alternate Hierarchy Related Geometry instances, each with a Hierarchy Data link object zero or more Animation Related Geometry instances zero or more Classification Related Geometry instances, each with a Classification Data link object zero or one Environment Root instance zero or one Geometry Model instance zero or more LOD Related Geometry instances, each with a Base LOD Data link object zero or more Octant Related Geometry instances, each with a Octant Data link object zero or more Perimeter Related Geometry instances, each with a Perimeter Data link object zero or more Quadrant Related Geometry instances, each with a Quadrant Data link object zero or more Separating Plane Relations instances, each with a Separating Plane Data link object zero or more Spatial Index Related Geometry instances, each with a Spatial Index Data link object zero or more State Related Geometry instances, each with a State Data link object zero or more Time Related Geometry instances, each with a Time Constraints Data link object zero or more Union Of Geometry Hierarchy instances Inherited Field Elements: SE_Boolean unique_descendants; /* * If the value of the unique_descendants field is SE_TRUE, each * descendant of this aggregation, * that is, each <Geometry Representation> instance that exists * in the component tree * rooted at the given <Aggregate Geometry>, shall be unique, in the * sense that it shall appear in only one branch of this aggregation. * If unique_descendants is SE_FALSE, at least one * <Geometry Representation> instance * appears in more than one branch of the aggregation. */ SE_Boolean strict_organizing_principle; /* * If the value of the strict_organizing_principle field is SE_TRUE, * each branch of this aggregation * strictly complies with the organizing principle for its * particular subclass. If this value is SE_FALSE, at least * one branch does not strictly comply with the given * organizing principle. See the organizing principle constraint * for each specific subclass for details. */ Field Elements: SE_Time_Data_Type time_data_type; /* * This specifies the subclass of <Base Time Data> of which * each <Time Constraints Data> link object in the given * organization is to be composed. */ ------------------------------------------------------------------------------- Class Name: TM Augmented 3D Location Definition: An instance of this DRM class specifies a coordinate within the Augmented Transverse Mercator (ATM) 3D SRF. See [I18026] for a complete definition. Primary Page in DRM Diagram: 15 Example: 1. The British National Grid (BNG) uses Transverse Mercator. Note that the Transverse Mercator SRF is often used to describe areas that have greater north-south than east-west extent, and that distortion of scale, distance, direction and area increase away from the central meridian. FAQS: Q. Where can users obtain further information on ATM? A. See the SRM for additional details. Superclass: Location 3D Constraints: Publishable Object Environment Root Spatial Reference Frame Image Anchor Spatial Reference Frame Model Spatial Reference Frame Component of (two-way) (inherited) zero or more Arc instances zero or more Camera Point instances zero or more Directional Light Behaviour instances zero or one Distance LOD Data instance zero or more Ellipse instances zero or more Feature Edge instances zero or more Feature Face instances zero or one Feature Node instance zero or more Image Anchor instances zero or more Label instances zero or more Perimeter Data instances zero or more Point instances zero or more Property Grid Hook Point instances zero or one Reference Origin instance zero or more Reference Vector instances zero or more Spatial Extent instances zero or more Spatial Index Related Feature Topology instances zero or more Spatial Index Related Features instances zero or more Spatial Index Related Geometry instances zero or more Spatial Index Related Geometry Topology instances zero or more Tack Point instances zero or more Vertex instances zero or more World 3x3 instances zero or more World Transformation instances zero or one Attachment Point instance zero or more Base Positional Light instances zero or one Contact Point instance zero or more Geometric Centre instances zero or more Separating Plane instances zero or more Sound Instance instances zero or more Stamp Behaviour instances zero or more Volume instances zero or more Volume Light Behaviour instances zero or more Volume LOD Data instances zero or more Volume Object instances Field Elements: SRM_Map_Projection_3D_Coordinate coordinate; /* * The coordinate field specifies the coordinate values. */ ------------------------------------------------------------------------------- Class Name: TM Surface Location Definition: An instance of this DRM class specifies a coordinate within the Transverse Mercator (TM) Surface SRF. See [I18026] for a complete definition. Primary Page in DRM Diagram: 15 Example: 1. The British National Grid (BNG) uses Transverse Mercator. Note that the Transverse Mercator SRF is often used to describe areas that have greater north-south than east-west extent, and that distortion of scale, distance, direction and area increase away from the central meridian. FAQS: Q. Where can users obtain further information on TM? A. See the SRM for additional details. Superclass: Location Surface Constraints: Publishable Object Environment Root Spatial Reference Frame Image Anchor Spatial Reference Frame Model Spatial Reference Frame Component of (two-way) (inherited) zero or more Arc instances zero or more Camera Point instances zero or more Directional Light Behaviour instances zero or one Distance LOD Data instance zero or more Ellipse instances zero or more Feature Edge instances zero or more Feature Face instances zero or one Feature Node instance zero or more Image Anchor instances zero or more Label instances zero or more Perimeter Data instances zero or more Point instances zero or more Property Grid Hook Point instances zero or one Reference Origin instance zero or more Reference Vector instances zero or more Spatial Extent instances zero or more Spatial Index Related Feature Topology instances zero or more Spatial Index Related Features instances zero or more Spatial Index Related Geometry instances zero or more Spatial Index Related Geometry Topology instances zero or more Tack Point instances zero or more Vertex instances zero or more World 3x3 instances zero or more World Transformation instances Field Elements: SRM_Map_Projection_Surface_Coordinate coordinate; /* * The coordinate field specifies the coordinate values. */ ------------------------------------------------------------------------------- Abstract Class Name: Transformation Definition: An instance of a concrete class derived from this DRM class is applied to the object aggregating the instance. <Location 3D> and <Reference Vector> instances are always affected by <Transformation> instances. Primary Page in DRM Diagram: 7 Secondary Pages in DRM Diagram: 3 23 Example: 1. The location and orientation of a building instanced onto a terrain representation. 2. The <Transformation> that enables the use of a sidewinder missile with horizontal orientation when it was modeled standing vertically on its fins. 3. The <Transformation> into place of a logical <Model> sub-graph, such as a representation of the superstructure of a ship. FAQS: None. Superclass: SEDRIS Abstract Base Subclasses: LSR Transformation World Transformation Constraints: Publishable Object Component of (two-way) zero or more Feature Model Instance instances zero or more Geometry Model Instance instances ------------------------------------------------------------------------------- Class Name: Translation Definition: An instance of this DRM class is an <LSR Transformation Step> that specifies a translation amount along the specified axis. Primary Page in DRM Diagram: 7 Example: 1. Translate 2376.85 metres along the X axis. 2. Translate -4756.5 metres along the Y axis. 3. Translate 12.0 metres along the Z axis. FAQS: None. Superclass: LSR Transformation Step Constraints: Publishable Object Composed of (two-way) (inherited) zero or one Reference Vector instance Composed of (two-way) zero or one Translation Control Link instance Component of (two-way) (inherited) zero or one LSR Transformation instance Field Elements: SE_LSR_Transformation_Axis axis; /* * This specifies which axis to translate along. */ SE_Long_Float translation_amount; /* * This specifies the translation amount in metres, * and is permitted to be negative. */ ------------------------------------------------------------------------------- Class Name: Translation Control Link Definition: An instance of this DRM class is a specialized <Control Link> used to provide the connection between an ordered aggregation of <Expression> instances and the target fields of a <Translation>. Primary Page in DRM Diagram: 17 Secondary Pages in DRM Diagram: 7 Example: 1. Consider a <Geometry Model> of a building, containing a <Geometry Model Instance> of an elevator car, where both <Models> are specified in a 3D LSR SRF, and the elevator car is intended to be a moving part of the building model. The <LSR Transformation> used to instance the elevator model into the building shall specify a <Translation> component with a <Translation Control Link>. <Model> <> | ---------------------------------------------------------- | | | <Geometry Model Instance> <Classification Data> <Interface Template> (elevator instance) tag = ECC_BUILDING | <> | | | <LSR Transformation> | <> | | | <Translation> | axis = SE_LSR_TRNSFRM_AXIS_Z | translation_amount = 0.0 | <> | | | | | <Translation Control Link> | expr_index = 1 | lower_expr_index = 2 | upper_expr_index = 3 | <> | | | ------------------------------------------------------------- | | | | | <Literal> <Literal> <Variable> value = { SE_SVT_FLOAT, value = { SE_SVT_FLOAT, { 0.0 }} { 500.0 }} This <Translation Control Link> specifies: - A <Literal>, defining the lower limit (the bottom of the elevator shaft) of the translation, in this case, 0.0 metres. - A <Literal>, defining the upper limit (the top of the elevator shaft) of the translation, in this case, 500.0 metres. - A <Variable>, the actual translation of the elevator along the elevator shaft's z axis at any given moment. The <Variable>'s meaning = { SE_ELEM_CODE_TYP_VARIABLE, { SE_VAR_CODE_TRANSLATION_AMOUNT }} The <Variable>'s value_unit = EUC_METRE and its value_scale = ESC_UNI, because <Translation>, by definition, defines its fields in metres. 2. See <Property Table Reference Control Link>, example 2. FAQS: None. Superclass: Control Link Constraints: Publishable Object Composed of (two-way) (inherited) one or more {ordered} Expression instances Component of (two-way) one or more Translation instances Inherited Field Elements: SE_String description; /* * The description field specifies a text description of the given * <Control Link> instance's purpose. */ Field Elements: SE_Integer_Positive expr_index; /* * For a given <Translation Control Link> instance C, expr_index * serves as a 1-based index into the ordered <Expression> * components of C such that the specific <Expression> selected * specifies the value of the translation_amount field of each * <Translation> controlled by C. */ SE_Integer_Unsigned lower_expr_index; /* * For a given <Translation Control Link> instance C, if * lower_expr_index > 0, it serves as a 1-based index into the * ordered <Expression> components of C such that the specific * <Expression> selected specifies the lower limit for the * translation_amount of each <Translation> controlled by C. * If lower_expr_index = 0, it indicates that no such lower limit * is being specified. */ SE_Integer_Unsigned upper_expr_index; /* * For a given <Translation Control Link> instance C, if * upper_expr_index > 0, it serves as a 1-based index into the * ordered <Expression> components of C such that the specific * <Expression> selected specifies the upper limit for the * translation_amount of each <Translation> controlled by C. * If upper_expr_index = 0, it indicates that no such upper limit * is being specified. */ ------------------------------------------------------------------------------- Class Name: Translucency Definition: An instance of this DRM class specifies the percentage of light that can pass through the given <Colour> instance, where translucency_value = 0.0 indicates that no light passes through, and translucency_value = 1.0 indicates a fully transparent object. In essence, this specifies the transparency of the colour. NOTE: An object's "opacity" is equal to 1.0 - transparency. Primary Page in DRM Diagram: 14 Example: 1. The alpha value for an Ambient, OTW colour can be encoded in SEDRIS as an <Inline Colour> with an <Ambient Colour> and a <Translucency> component. FAQS: Q. If an object has a <Colour> with a <Translucency>, together with an <Image Mapping Function> specifying an <Image> that also has an alpha, how are the two alpha values resolved? A. That depends on the <Image Mapping Function>'s image_mapping_method. See SE_Image_Mapping_Method for a detailed description of how <Image> and <Colour> alpha values are resolved for various mapping methods. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Composed of (two-way) zero or one Translucency Control Link instance Component of (two-way) one or more Colour instances Field Elements: SE_Long_Float translucency_value; /* * This is the percentage of light that can pass through the given * <Colour> instance, expressed as a number between 0.0 and 1.0. */ ------------------------------------------------------------------------------- Class Name: Translucency Control Link Definition: An instance of this DRM class is a specialized <Control Link> used to provide the connection between an ordered list of <Expression> instances and the target translucency_value field of a <Translucency> instance. The expr_index field is a 1-based index into the ordered aggregation of <Expressions>, and is used to select the specific <Expression> that defines <Translucency>'s translucency_value field. Primary Page in DRM Diagram: 17 Secondary Pages in DRM Diagram: 14 Example: 1. Puddles can be faded in based on the precipitation rate. FAQS: None. Superclass: Control Link Constraints: Publishable Object Composed of (two-way) (inherited) one or more {ordered} Expression instances Component of (two-way) one or more Translucency instances Inherited Field Elements: SE_String description; /* * The description field specifies a text description of the given * <Control Link> instance's purpose. */ Field Elements: SE_Integer_Positive expr_index; /* * This value specifies which <Expression> component controls the * translucency_value of the affected <Translucency> instance(s). */ ------------------------------------------------------------------------------- Class Name: Transmittal Root Definition: The hierarchical root of all objects in a single SEDRIS transmittal. As such, it is the basic unit of interchange. The content of a transmittal can be as simple as a single <Model> instance, or as complex as a complete representation of a large geographic region with all of the <Model> instances, terrain, atmospheric, and oceanographic data necessary to simulate an environment. Primary Page in DRM Diagram: 1 Secondary Pages in DRM Diagram: 10 Example: 1. SIMNET databases such as Grafenfels and Ft. Knox. FAQS: Q. How can a user determine which version of the DRM is being used? A. The Level 0 API has a function that provides this information: SE_GetTransmittalVersionInformation() Q. How can a user determine which version of the EDCS is being used? A. The Level 0 API has a function that provides this information: SE_GetTransmittalVersionInformation() Superclass: SEDRIS Abstract Base Constraints: Publishable Object Composed of (two-way) one or more Base Time Data instances zero or one Colour Table Library instance zero or one Data Table Library instance zero or more Environment Root instances zero or one Image Library instance zero or one Model Library instance zero or one Property Set Table Library instance zero or one Reference Origin instance zero or one Sound Library instance zero or one Symbol Library instance one Transmittal Summary instance Composed of (two-way metadata) one Access instance one Citation instance zero or more Cross Reference instances one Data Quality instance one Description instance Field Elements: SE_String name; /* * This is a meaningful short name. */ SE_Short_Integer_Positive major_DRM_version; /* * This specifies the major version number of the release of the * DRM used to create the transmittal to which the given instance * of <Transmittal Root> belongs. */ SE_Byte_Unsigned minor_DRM_version; /* * This specifies the minor version number of the release of the * DRM used to create the transmittal to which the given instance * of <Transmittal Root> belongs. */ SE_Character interim_DRM_version; /* * This shall be '\0' for none; between 'a' and 'z' inclusive, * for an UNOFFICIAL, INTERIM model. */ SE_Short_Integer_Positive major_EDCS_version; /* * This specifies the major version number of the release of the * EDCS used to create the transmittal to which the given instance * of <Transmittal Root> belongs. */ SE_Byte_Unsigned minor_EDCS_version; /* * This specifies the minor version number of the release of the * EDCS used to create the transmittal to which the given instance * of <Transmittal Root> belongs. */ SE_Character interim_EDCS_version; /* * This shall be '\0' for none; between 'a' and 'z' inclusive, * for an UNOFFICIAL, INTERIM model. */ ------------------------------------------------------------------------------- Class Name: Transmittal Summary Definition: An instance of this DRM class summarizes the content of the transmittal for which its aggregate <Transmittal Root> instance serves as root object, in terms of: - Environmental domains represented (such as terrain, ocean) - Types of data used (such as geometry, features, data tables) - DRM classes used - EDCS Classifications used - SRFs used Primary Page in DRM Diagram: 20 Secondary Pages in DRM Diagram: 1 Example: 1. A <Transmittal Summary> for a transmittal containing a <Model Library> and an <Environment Root>. <Transmittal Root> <> | ---------------------------------------------------- | | | | | | | +-- <Model Library> <>-- - - (models) <Environment Root> | (terrain geometry and | ocean <Data Table>) | <Transmittal Summary> <> | | +----- <Environmental Domain Summary> (Terrain) | | | +----- <Environmental Domain Summary> (Oceanography) | | | +----- <DRM Class Summary Item> <>--- <SRF Summary> | (<Environment Root>) (Terrain SRF) | +----- <DRM Class Summary Item> <>--- <SRF Summary> | (<Property Grid>) (Ocean SRF) | (i.e. on ocean <Property Grid>) | +----- <DRM Class Summary Item> | (<Model Library>) | +----- <DRM Class Summary Item> <>--- <SRF Summary> | (Model) (Model SRF) . <> . | . +-- <EDCS Use Summary Item> <> -- <Classification Data> . | ("Funny shaped | (ECC_TREES) | area of trees") | | +---<Property Description> | | EAC_PREDOMINANT_HEIGHT | | | +---<Property Description> | EAC_TREE_TYPE_CATEGORY | +-- <EDCS Use Summary Item> <> -- <Classification Data> ("Derwent Reservoir") | ECC_RESERVOIR | +---<Property Description> EAC_DEPTH_BELOW_SURFACE_LEVEL FAQS: Q. How are the environmental domains summarized? A. The <Transmittal Summary> can aggregate a list of <Environmental Domain Summary> instances. Each <Environmental Domain Summary> represents one of the domains for which data is provided. Q. How are the SEDRIS classes used summarized? A. The <Transmittal Summary> can aggregate a list of <DRM Class Summary Items>. Each <DRM Class Summary Item> represents one of the classes used. Q. How are the classifications summarized? A. Each classification (i.e. the ECC and the sets of EACs used with it) that is used in the transmittal is summarized using a <EDCS Use Summary Item>. Each <EDCS Use Summary Item> is a component of the <DRM Class Summary Item> that represents the class that uses the classification within the transmittal. Q. How are the SRFs summarized? A. Each SRF that is used in the transmittal is summarized using a <SRF Summary>. Each <SRF Summary> is a component of the <DRM Class Summary Item> that represents the class that uses the SRF within the transmittal. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Non Overlapping DRM Class Summary Items Composed of (two-way) zero or more DRM Class Summary Item instances Composed of (two-way metadata) zero or more EDCS Use Summary Item instances zero or more Environmental Domain Summary instances Component of (two-way) one Transmittal Root instance Field Elements: SE_Present_In features_present; /* * This indicates whether <Feature Representation> instances of some * kind are present in the transmittal being summarized, and if so, * in what context. Note that if <Feature Representation> instances * are present in a given context, <Feature Topology> instances will * be present also. */ SE_Present_In geometry_present; /* * This indicates whether <Geometry Representation> instances of some * kind are present in the transmittal being summarized, and if so, * in what context. */ SE_Present_In geometry_topology_present; /* * This indicates whether <Geometry Topology> instances of some * kind are present in the transmittal being summarized, and if so, * in what context. Note that if <Geometry Topology> instances are * present in a given context, <Geometry Representation> instances * will be present also. */ SE_Present_In data_tables_present; /* * This indicates whether <Data Table> instances of some kind are * present in the transmittal being summarized, and if so, in what * context. */ SE_Present_In priority_values_present; /* * This indicates whether <Rendering Priority Level> instances are * present somewhere in the transmittal being summarized, and if so, * in what context. */ SE_Present_In mobility_values_present; /* * This indicates whether <Property> instances are present somewhere * in the transmittal being summarized, the EAC codes of which * specify mobility, also known as trafficability, information, * such as EAC_SURFACE_TRAFFICABILITY_GROUP_SIMNET. */ SE_Present_In thermal_values_present; /* * This indicates whether <Property> instances are present somewhere * in the transmittal being summarized, the EAC codes of which * specify thermal information. */ SE_Present_In terrain_lods_present; /* * This indicates whether <LOD Related Geometry> and/or * <LOD Related Features> instances representing terrain information * are present in the transmittal being summarized, and if so, in * what context. */ SE_Present_In two_D_features_flag; /* * This indicates whether any <Feature Representation> instance * containing at least one <Location 2D> or <Location Surface> * instance is present in the transmittal being summarized, and * if so, in what context. */ SE_Boolean models_present; /* * The images_present field specifies whether <Model> instances * exist in the transmittal being summarized. */ SE_Boolean images_present; /* * The images_present field specifies whether <Image> instances * exist in the transmittal being summarized. */ SE_Boolean sounds_present; /* * The sounds_present field specifies whether <Sound> instances * exist in the transmittal being summarized. */ SE_Boolean symbols_present; /* * The symbols_present field specifies whether <Symbol> instances * exist in the transmittal being summarized. */ SE_Boolean colours_present; /* * The colours_present field specifies whether <Colour> instances * are present in the transmittal being summarized. If no <Colour> * instances are present, the value of the colour_model field is * not applicable. */ SE_Colour_Model colour_model; /* * The colour_model field is interpreted by the API only if * colours_present is set to SE_TRUE. The colour_model field * specifies the colour model used by the data provider for all * <Colour> instances in the transmittal for which the content * is being summarized by the given <Transmittal Summary> instance. * For example, if this field's value is SE_CLR_MDL_RGB, then any * <Colour Data> instance in the transmittal shall be an * <RGB Colour> instance. */ SE_Boolean EDCS_usage_list_is_comprehensive; /* * The EDCS_usage_list_is_comprehensive field specifies whether * the <EDCS Use Summary Item> components of the given * <Transmittal Summary> instance constitute a comprehensive * summary of EDCS usage by the transmittal being summarized. */ ------------------------------------------------------------------------------- Class Name: Twinkling Light Behaviour Definition: An instance of this DRM class specifies a light for which the duration and period are random. Primary Page in DRM Diagram: 21 Example: 1. City lights seen to twinkle due to atmospheric effects, such as heat haze, or due to intermittent obstructions, such as waving tree branches. 2. Stars, as seen from the surface of a planetary body through an atmosphere. FAQS: None. Superclass: Light Rendering Behaviour Constraints: Publishable Object Component of (two-way) (inherited) one or more Light Rendering Properties instances ------------------------------------------------------------------------------- Class Name: Union Of Feature Topology Definition: An instance of this DRM class is a collection of all of the <Feature Topology> instances that form a complete topological surface. Primary Page in DRM Diagram: 11 Example: 1. A thematic layer representing a transportation network might be broken up into four rectangular tiles. While the <Linear Feature> instances representing roads are allowed to extend across the tile boundaries, the <Feature Topology> instances that are located within each tile are organized into separate <Union Of Feature Topology> instances to support access by spatial location. FAQS: Q. What is the purpose of this class? A. This class allows <Feature Topology> instances to be grouped in an arbitrary manner. It is used to ensure that all <Feature Topology> instances, particularly those that are not directly associated with any <Feature Representation>, have at least one aggregate. Superclass: Feature Topology Hierarchy Constraints: Publishable Object Perimeter Related Organizing Principle Union Organizing Principle Composed of (two-way) one or more Feature Topology instances Component of (two-way) (inherited) zero or more Aggregate Feature instances Component of (two-way) zero or one Perimeter Related Feature Topology instance, each with a Perimeter Data link object zero or one Spatial Index Related Feature Topology instance, each with a Spatial Index Data link object Inherited Field Elements: SE_Feature_Topology_Level feature_topology_level; /* * The feature_topology_level field specifies the level of * feature topology that is present within the hierarchy * represented by the given <Feature Topology Hierarchy> * instance. */ ------------------------------------------------------------------------------- Class Name: Union Of Features Definition: An instance of this DRM class is an <Aggregate Feature> containing an arbitrary collection of <Feature Representations>. Primary Page in DRM Diagram: 8 Example: 1. An airport could be represented as a <Union Of Features> that includes <Linear Feature> instances for the runways; a <Point Feature> for the control tower; and <Areal Feature> instances for the terminal and parking lots. 2. A collection of <Areal Feature> instances that represent all forested areas within the spatial extent of the given <Environment Root>. FAQS: Q. What is the purpose of this class? A. A <Union Of Features> provides a general-purpose mechanism for grouping together a collection of <Feature Representations>, which may include <Primitive Features>, <Feature Model Instances>, and other <Aggregate Features>. Note that a <Union Of Features> is the only type of <Aggregate Feature> that can include <Primitive Features> as direct components. They therefore tend to be used at the lowest levels of a <Feature Hierarchy>. Superclass: Aggregate Feature Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Crossing Associations Precedence of Property Set Index Non Cyclic Aggregations Colour Mapping Restrictions Image Mapping Functions and Texture Coordinates Classification Data Constraint Union Organizing Principle Associated to (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or more Property Grid instances, each with a Base Association Data link object Associated by (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or more Property Grid instances, each with a Base Association Data link object zero or one Hierarchy Summary Item instance Composed of (two-way) (inherited) zero or one Classification Data instance zero or more Label instances zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or one Rendering Priority Level instance zero or one Reference Surface instance zero or more Sound Instance instances zero or more Base LOD Data instances zero or more Colour instances zero or more Feature Topology Hierarchy instances zero or more {ordered} Image Mapping Function instances zero or one Perimeter Data instance zero or one Presentation Domain instance zero or more Property Description instances zero or one Spatial Extent instance Composed of (two-way) one or more {ordered} Feature Representation instances Composed of (two-way metadata) (inherited) zero or one Access instance zero or more Cross Reference instances zero or one Data Quality instance zero or one Description instance zero or one Time Constraints Data instance Component of (two-way) (inherited) zero or more Union Of Features instances zero or more Alternate Hierarchy Related Features instances, each with a Hierarchy Data link object zero or more Classification Related Features instances, each with a Classification Data link object zero or one Environment Root instance zero or one Feature Model instance zero or more LOD Related Features instances, each with a Base LOD Data link object zero or more Octant Related Features instances, each with a Octant Data link object zero or more Perimeter Related Features instances, each with a Perimeter Data link object zero or more Quadrant Related Features instances, each with a Quadrant Data link object zero or more Spatial Index Related Features instances, each with a Spatial Index Data link object zero or more State Related Features instances, each with a State Data link object zero or more Time Related Features instances, each with a Time Constraints Data link object Inherited Field Elements: SE_Boolean unique_descendants; /* * If the value of the unique_descendants field is SE_TRUE, each * descendant, that is, each <Feature Representation> instance that * exists in the component tree rooted at the given <Aggregate Feature>, * shall be unique, in the * sense that it shall appear in only one branch of this aggregation. * If unique_descendants is SE_FALSE, at least one * <Feature Representation> instance * appears in more than one branch of the aggregation. */ SE_Boolean strict_organizing_principle; /* * If the value of the strict_organizing_principle field is SE_TRUE, * each branch of this aggregation * strictly complies with the organizing principle for its * particular subclass. If this value is SE_FALSE, at least * one branch does not strictly comply with the given * organizing principle. See the organizing principle constraint * for each specific subclass for details. */ Field Elements: SE_Union_Reason union_reason; /* * The union_reason field specifies the reason why the given instance of * <Union Of Features> was created to organize its components. */ SE_Ordering_Reason ordering_reason; /* * The ordering_reason field specifies whether the ordering of the * component <Feature Representation> * instances of the given <Union Of Features> instance is semantically * significant, and if so, what that significance is. */ ------------------------------------------------------------------------------- Abstract Class Name: Union Of Geometry Definition: An instance of one of the concrete subclasses of this abstract DRM class is an aggregation of <Geometry Representation> specifying a standardized mechanism by which to organize the members that compose the union. Primary Page in DRM Diagram: 4 Secondary Pages in DRM Diagram: 23 Example: 1. An antenna assembly is contained in a weather protection enclosure. Visually, only the opaque enclosure can be seen. But at microwave frequencies, the enclosure is invisible and only the antenna can be "seen". The entire structure is contained in a <Union Of Geometry>. What the Radar "sees" is modeled with a Radar Cross-section (RCS) <Property Table>. The algorithm (or field measurements) that computed the RCS table used axes that do not match the SRF (world or model as the case may be). Therefore, RCS axes of azimuth and elevation angle are misused unless some REFERENCE DIRECTIONS can be attached to the entire <Union Of Geometry>. FAQS: Q. What if a <Model> of the outside of a house, developed for a non-Zbuffered system, has the polygons grouped to render properly in a fixed order? Say the house has four walls and four windows. Assuming the polygons are all grouped together, how would this example be represented in the SEDRIS DRM at the attribute level? A. The fixed order of the polygons would be reflected in a <Union Of Primitive Geometry> with the ordering_reason set to SE_ORDRNG_REASON_FIXED_LISTED. The lowest priority <Polygon> instances (the walls) would be specified first and the higher priority polygons (the windows) would be specified last. Q. What if the house in the previous example were developed for a Zbuffered system? A. The polygons would typically be grouped in layers. There are two approaches that could be employed by the modeler depending on how the polygons are grouped. 1) If all the polygons are one-sided front-facing polygons, then the house could be represented with an <Union Of Geometry Hierarchy> with ordering_reason = SE_LAYERED with two children. The first child would be the base layer (all the walls) and the second child (the first decal layer) would contain all the windows. In this case, the polygons under an SE_LAYERED <Union Of Geometry> are not coplanar, but the rendering priority can still be resolved. 2) If the modeler grouped the layers into coplanar unions of <Polygon> instances, the SEDRIS structure might be represented as <Union Of Geometry> with four layered <Union Of Geometry> (wall and window) would list the wall first and the window next. Q. When would a <Reference Vector> be a component of a <Union Of Geometry>? A. A <Reference Vector> would be used when a <Union Of Geometry> represented a "thing" in the environment. An example of this is a building represented by a <Union Of Geometry>, and which has a <Property Table> of radar cross-sections. The table would need a <Reference Vector> to establish the zero azimuth direction. (See Example 1). Superclass: Aggregate Geometry Subclasses: Union Of Geometry Hierarchy Union Of Primitive Geometry Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Cyclic Aggregations Precedence of Property Set Index Non Crossing Associations Colour Mapping Restrictions Distinct Geometric Centre Image Mapping Functions and Texture Coordinates Classification Data Constraint Union Organizing Principle Associated to (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object Associated by (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or one Hierarchy Summary Item instance zero or more Reference Surface instances Composed of (two-way) (inherited) zero or one Classification Data instance zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or one Reference Surface instance zero or more Sound Instance instances zero or more Base LOD Data instances zero or one Bounding Volume instance zero or more Camera Point instances zero or more Collision Volume instances zero or more Colour instances zero or one Conformal Behaviour instance a bounded set of 0..3 Geometric Centre instances zero or more Geometry Topology Hierarchy instances zero or more {ordered} Image Mapping Function instances zero or one Light Rendering Properties instance zero or more Light Source instances zero or one LSR Transformation instance zero or one Overload Priority Index instance zero or one Perimeter Data instance zero or one Presentation Domain instance zero or more Property Description instances zero or one Rendering Priority Level instance zero or one Rendering Properties instance zero or one Spatial Extent instance zero or one Stamp Behaviour instance Composed of (two-way) zero or more Reference Vector instances Composed of (two-way metadata) (inherited) zero or one Time Constraints Data instance zero or one Access instance zero or more Cross Reference instances zero or one Data Quality instance zero or one Description instance Component of (two-way) (inherited) zero or more Alternate Hierarchy Related Geometry instances, each with a Hierarchy Data link object zero or more Animation Related Geometry instances zero or more Classification Related Geometry instances, each with a Classification Data link object zero or one Environment Root instance zero or one Geometry Model instance zero or more LOD Related Geometry instances, each with a Base LOD Data link object zero or more Octant Related Geometry instances, each with a Octant Data link object zero or more Perimeter Related Geometry instances, each with a Perimeter Data link object zero or more Quadrant Related Geometry instances, each with a Quadrant Data link object zero or more Separating Plane Relations instances, each with a Separating Plane Data link object zero or more Spatial Index Related Geometry instances, each with a Spatial Index Data link object zero or more State Related Geometry instances, each with a State Data link object zero or more Time Related Geometry instances, each with a Time Constraints Data link object zero or more Union Of Geometry Hierarchy instances Inherited Field Elements: SE_Boolean unique_descendants; /* * If the value of the unique_descendants field is SE_TRUE, each * descendant of this aggregation, * that is, each <Geometry Representation> instance that exists * in the component tree * rooted at the given <Aggregate Geometry>, shall be unique, in the * sense that it shall appear in only one branch of this aggregation. * If unique_descendants is SE_FALSE, at least one * <Geometry Representation> instance * appears in more than one branch of the aggregation. */ SE_Boolean strict_organizing_principle; /* * If the value of the strict_organizing_principle field is SE_TRUE, * each branch of this aggregation * strictly complies with the organizing principle for its * particular subclass. If this value is SE_FALSE, at least * one branch does not strictly comply with the given * organizing principle. See the organizing principle constraint * for each specific subclass for details. */ Field Elements: SE_Union_Reason union_reason; /* * The union_reason field specifies the reason why the given instance of * <Union Of Geometry> was created to organize its components. */ SE_Ordering_Reason ordering_reason; /* * The ordering_reason field specifies whether the ordering of the * component <Geometry Representation> * instances of the given <Union Of Geometry> instance is semantically * significant, and if so, what that significance is. */ ------------------------------------------------------------------------------- Class Name: Union Of Geometry Hierarchy Definition: An instance of this DRM class serves to organize <Geometry Hierarchy> instances for which no other organizing principle is suitable. Primary Page in DRM Diagram: 4 Example: See <Union Of Geometry>. FAQS: See <Union Of Geometry>. Superclass: Union Of Geometry Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Cyclic Aggregations Precedence of Property Set Index Non Crossing Associations Colour Mapping Restrictions Distinct Geometric Centre Image Mapping Functions and Texture Coordinates Classification Data Constraint Union Organizing Principle Associated to (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object Associated by (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or one Hierarchy Summary Item instance zero or more Reference Surface instances Composed of (two-way) (inherited) zero or one Classification Data instance zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or one Reference Surface instance zero or more Sound Instance instances zero or more Base LOD Data instances zero or one Bounding Volume instance zero or more Camera Point instances zero or more Collision Volume instances zero or more Colour instances zero or one Conformal Behaviour instance a bounded set of 0..3 Geometric Centre instances zero or more Geometry Topology Hierarchy instances zero or more {ordered} Image Mapping Function instances zero or one Light Rendering Properties instance zero or more Light Source instances zero or one LSR Transformation instance zero or one Overload Priority Index instance zero or one Perimeter Data instance zero or one Presentation Domain instance zero or more Property Description instances zero or one Rendering Priority Level instance zero or one Rendering Properties instance zero or one Spatial Extent instance zero or one Stamp Behaviour instance zero or more Reference Vector instances Composed of (two-way) one or more {ordered} Geometry Hierarchy instances Composed of (two-way metadata) (inherited) zero or one Time Constraints Data instance zero or one Access instance zero or more Cross Reference instances zero or one Data Quality instance zero or one Description instance Component of (two-way) (inherited) zero or more Alternate Hierarchy Related Geometry instances, each with a Hierarchy Data link object zero or more Animation Related Geometry instances zero or more Classification Related Geometry instances, each with a Classification Data link object zero or one Environment Root instance zero or one Geometry Model instance zero or more LOD Related Geometry instances, each with a Base LOD Data link object zero or more Octant Related Geometry instances, each with a Octant Data link object zero or more Perimeter Related Geometry instances, each with a Perimeter Data link object zero or more Quadrant Related Geometry instances, each with a Quadrant Data link object zero or more Separating Plane Relations instances, each with a Separating Plane Data link object zero or more Spatial Index Related Geometry instances, each with a Spatial Index Data link object zero or more State Related Geometry instances, each with a State Data link object zero or more Time Related Geometry instances, each with a Time Constraints Data link object zero or more Union Of Geometry Hierarchy instances Inherited Field Elements: SE_Boolean unique_descendants; /* * If the value of the unique_descendants field is SE_TRUE, each * descendant of this aggregation, * that is, each <Geometry Representation> instance that exists * in the component tree * rooted at the given <Aggregate Geometry>, shall be unique, in the * sense that it shall appear in only one branch of this aggregation. * If unique_descendants is SE_FALSE, at least one * <Geometry Representation> instance * appears in more than one branch of the aggregation. */ SE_Boolean strict_organizing_principle; /* * If the value of the strict_organizing_principle field is SE_TRUE, * each branch of this aggregation * strictly complies with the organizing principle for its * particular subclass. If this value is SE_FALSE, at least * one branch does not strictly comply with the given * organizing principle. See the organizing principle constraint * for each specific subclass for details. */ SE_Union_Reason union_reason; /* * The union_reason field specifies the reason why the given instance of * <Union Of Geometry> was created to organize its components. */ SE_Ordering_Reason ordering_reason; /* * The ordering_reason field specifies whether the ordering of the * component <Geometry Representation> * instances of the given <Union Of Geometry> instance is semantically * significant, and if so, what that significance is. */ ------------------------------------------------------------------------------- Class Name: Union Of Geometry Topology Definition: An instance of this DRM class is a collection of all of the <Geometry Topology> instances that form a complete topological surface. Primary Page in DRM Diagram: 11 Example: None. FAQS: Q. What is the purpose of this class? A. This class allows <Geometry Topology> instances to be grouped in an arbitrary manner. It is used to ensure that all <Geometry Topology> instances, particularly those that are not directly associated with any <Geometry Representation>, have at least one containing object. Superclass: Geometry Topology Hierarchy Constraints: Publishable Object Perimeter Related Organizing Principle Union Organizing Principle Composed of (two-way) one or more Geometry Topology instances Component of (two-way) (inherited) zero or more Aggregate Geometry instances Component of (two-way) zero or one Perimeter Related Geometry Topology instance, each with a Perimeter Data link object zero or one Spatial Index Related Geometry Topology instance, each with a Spatial Index Data link object Inherited Field Elements: SE_Geometry_Topology_Level geometry_topology_level; /* * The geometry_topology_level field specifies the level of * geometry topology that is present within the hierarchy * represented by the given <Geometry Topology Hierarchy> * instance. */ ------------------------------------------------------------------------------- Class Name: Union Of Primitive Geometry Definition: An instance of this DRM class is a <Union Of Geometry> that is composed solely of <Primitive Geometry>. Primary Page in DRM Diagram: 4 Secondary Pages in DRM Diagram: 5 Example: 1. Consider a typical geometric representation of an airport runway, in which the runway surface is represented by a layer of polygons, overlaid by stripes (decal polygons). To ensure that the necessary rendering order is followed, the data provider creates a <Union Of Primitive Geometry> UPG, and attaches each <Polygon> as a component of UPG, in order of increasing relative rendering priority (the <Polygon> with the lowest relative rendering priority is attached first). After all the <Polygon> instances in the underlying layer have been attached, the decal <Polygon> instances are processed in the order in which they will be rendered. If a specific method is used for the ordering, the data provider specifies it in UPG's ordering_reason field. In this case, the data was created for a Z-buffered rendering system that supports layers, so ordering_reason is set to SE_ORDRNG_REASON_LYR_HIGH_QUALITY_RENDERING. 2. A collection of <Polygon> instances making up the graphical representation of a forest canopy. 3. A 10 kilometre by 20 kilometre triangulated irregular network of <Polygon> instances. FAQS: None. Superclass: Union Of Geometry Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Cyclic Aggregations Precedence of Property Set Index Non Crossing Associations Colour Mapping Restrictions Distinct Geometric Centre Image Mapping Functions and Texture Coordinates Classification Data Constraint Union Organizing Principle Continuous LOD Restrictions Nested Primitive Geometry Associated to (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object Associated by (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or one Hierarchy Summary Item instance zero or more Reference Surface instances Composed of (two-way) (inherited) zero or one Classification Data instance zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or one Reference Surface instance zero or more Sound Instance instances zero or more Base LOD Data instances zero or one Bounding Volume instance zero or more Camera Point instances zero or more Collision Volume instances zero or more Colour instances zero or one Conformal Behaviour instance a bounded set of 0..3 Geometric Centre instances zero or more Geometry Topology Hierarchy instances zero or more {ordered} Image Mapping Function instances zero or one Light Rendering Properties instance zero or more Light Source instances zero or one LSR Transformation instance zero or one Overload Priority Index instance zero or one Perimeter Data instance zero or one Presentation Domain instance zero or more Property Description instances zero or one Rendering Priority Level instance zero or one Rendering Properties instance zero or one Spatial Extent instance zero or one Stamp Behaviour instance zero or more Reference Vector instances Composed of (two-way) one or more {ordered} Primitive Geometry instances Composed of (two-way metadata) (inherited) zero or one Time Constraints Data instance zero or one Access instance zero or more Cross Reference instances zero or one Data Quality instance zero or one Description instance Component of (two-way) (inherited) zero or more Alternate Hierarchy Related Geometry instances, each with a Hierarchy Data link object zero or more Animation Related Geometry instances zero or more Classification Related Geometry instances, each with a Classification Data link object zero or one Environment Root instance zero or one Geometry Model instance zero or more LOD Related Geometry instances, each with a Base LOD Data link object zero or more Octant Related Geometry instances, each with a Octant Data link object zero or more Perimeter Related Geometry instances, each with a Perimeter Data link object zero or more Quadrant Related Geometry instances, each with a Quadrant Data link object zero or more Separating Plane Relations instances, each with a Separating Plane Data link object zero or more Spatial Index Related Geometry instances, each with a Spatial Index Data link object zero or more State Related Geometry instances, each with a State Data link object zero or more Time Related Geometry instances, each with a Time Constraints Data link object zero or more Union Of Geometry Hierarchy instances Component of (two-way) zero or one Continuous LOD Related Geometry instance zero or one Primitive Geometry instance Inherited Field Elements: SE_Boolean unique_descendants; /* * If the value of the unique_descendants field is SE_TRUE, each * descendant of this aggregation, * that is, each <Geometry Representation> instance that exists * in the component tree * rooted at the given <Aggregate Geometry>, shall be unique, in the * sense that it shall appear in only one branch of this aggregation. * If unique_descendants is SE_FALSE, at least one * <Geometry Representation> instance * appears in more than one branch of the aggregation. */ SE_Boolean strict_organizing_principle; /* * If the value of the strict_organizing_principle field is SE_TRUE, * each branch of this aggregation * strictly complies with the organizing principle for its * particular subclass. If this value is SE_FALSE, at least * one branch does not strictly comply with the given * organizing principle. See the organizing principle constraint * for each specific subclass for details. */ SE_Union_Reason union_reason; /* * The union_reason field specifies the reason why the given instance of * <Union Of Geometry> was created to organize its components. */ SE_Ordering_Reason ordering_reason; /* * The ordering_reason field specifies whether the ordering of the * component <Geometry Representation> * instances of the given <Union Of Geometry> instance is semantically * significant, and if so, what that significance is. */ ------------------------------------------------------------------------------- Class Name: Variable Definition: An instance of this DRM class is used to connect an <Interface Template> instance to a location within an <Expression> tree where outside control may be exerted. For a <Variable> instance contained within a <Model>, evaluation is valid only for a specific instance of that <Model>. The value is determined by an <Expression> that is aggregated by the specific <Geometry Model Instance> or <Feature Model Instance>. This <Expression> shall be associated to the same <Interface Template> instance that is associated with the <Variable>. For a <Variable> instance contained within an <Environment_Root>, the evaluation can only be performed within the context of values that shall be supplied by the consuming system. Primary Page in DRM Diagram: 16 Example: 1. Consider a source database containing a <Model> with some polygons that reference "table driven texture". Such a polygon is defined as a <Polygon> that has one reference to an <Image> with multiple references to s and t values, which are stored in a <Data Table>. The index into this table is decided at run-time. Each <Polygon> containing a "table-driven texture" has an identifier that is used, along with the index, at run-time. In SEDRIS, the <Polygon> uses a <Property Table Reference> to index into the <Data Table> containing the different s and t values. Attached to the <Property Table Reference> is a <Property Table Reference Control Link>. The <Variable> attached to this <Property Table Reference Control Link is ultimately be associated to the <Interface Template> on the <Model>. The original identifier on the <Polygon> shall reside on the <Variable> rather than the Polygon, since the <Variable> controls the s,t values. 2. The following is another example of how a runtime_label on a <Variable> would be used. On moving models there might be polygons that have IR values attached to them. Consider a tank <Model> in such a database. In SEDRIS, the IR values are stored in <Property Table> instances. The <Polygon>s of the tank reference these elements through a <Property Table Reference>. A <Property Table Reference Control Link> is used for those <Polygon> instances that have "heat producing" capability (for instance, the gun barrel), so that the index into the IR table can be changed to other values as the gun is used and heats up. More than one <Polygon> will contain the same ID. The consumer shall be able to identify the <Polygon> instances (through the <Control Link> and <Interface Template> instances) by this ID so that he can switch these <Polygon> instances to be "heat producing". FAQS: Q. Why is identification of <Variable> instances (provided by runtime_label) desirable? A. So that consumers can control what value is being plugged in, depending on how it is identified. See examples 1, 2 for how this is used and why it is needed. Superclass: Expression Constraints: Publishable Object Non Cyclic Aggregations Non Crossing Associations Variable Meaning Restrictions Associated with (two-way) one Interface Template instance Component of (two-way) (inherited) zero or more Control Link instances zero or more Feature Model Instance instances, each with a Model Instance Template Indices link object zero or more Function instances zero or more Geometry Model Instance instances, each with a Model Instance Template Indices link object Field Elements: SE_Property_Code meaning; /* * The meaning field specifies the quantity represented by the * given <Variable> instance. */ EDCS_Unit_Code value_unit; /* * The value_unit field specifies the unit of measurement of the * quantity represented by the given <Variable> instance. */ EDCS_Scale_Code value_scale; /* * The value_scale field specifies the scale applicable to value_unit. */ EDCS_Attribute_Value_Type value_type; /* * The value_type field specifies the value type of the given * <Variable> instance. */ SE_String description; /* * The description field specifies a meaningful explanation of * the purpose of the given <Variable> instance. */ SE_String runtime_label; /* * The runtime_label field is used for <Variable> instances that * consumers need to identify which represent run-time flags, * provided so that appropriate * values can be "plugged in", which then affect any <Control Link> * instances driven by such a <Variable> instance. If a <Variable> * instance does not need a runtime_label, the field is set to the * empty string. */ ------------------------------------------------------------------------------- Class Name: Vertex Definition: An instance of this DRM class specifies a point where two sides of a <Polygon> intersect, or any end of a line segment, such as those implicitly specified by a <Finite Element Mesh>. Primary Page in DRM Diagram: 5 Secondary Pages in DRM Diagram: 13 18 Example: 1. Any of the three corners of a triangle. 2. Any of the four corners of a quadrilateral. FAQS: None. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Image Mapping Functions and Texture Coordinates Associated with (two-way) zero or one Geometry Node instance Composed of (two-way) zero or more Colour instances zero or one Conformal Behaviour instance one Location instance zero or more Property Table Reference instances zero or one Reference Vector instance zero or more {ordered} Texture Coordinate instances Component of (two-way) zero or more Arc instances zero or more Finite Element Mesh instances zero or more Line instances zero or more Polygon instances ------------------------------------------------------------------------------- Abstract Class Name: Volume Definition: An instance of a concrete class derived from this DRM class is a geometric primitive shape that identifies an enclosed 3D solid. Possible shapes include spheres (and implied points, where a point is a degenerate sphere), parallelepiped, cylinders (and implied lines, where a line is a degenerate cylinder). The shape is given by the <Volume Extent> component, the location of the shape centre is given by the <Location 3D> component. Primary Page in DRM Diagram: 9 Secondary Pages in DRM Diagram: 23 Example: 1. A terrain region has a <Bounding Volume> defined by a sphere with centre specified by the <Location 3D> component and radius given by the <Spherical Volume Extent> component radius field. 2. A parallelepiped <Volume>, describing the <Collision Volume> of a house, is represented by a component <Location 3D> for the centre of the house and a component <Parallelepiped Volume Extent>. FAQS: None. Superclass: SEDRIS Abstract Base Subclasses: Bounding Volume Collision Volume Sound Volume Constraints: Publishable Object Composed of (two-way) one Location 3D instance one Volume Extent instance ------------------------------------------------------------------------------- Abstract Class Name: Volume Extent Definition: An instance of one of the concrete subclasses of this DRM class specifies the spatial volume extent of an instance or instances of various volume classes. Primary Page in DRM Diagram: 5 Secondary Pages in DRM Diagram: 9 21 23 Example: See specific subclasses for examples. FAQS: Q. Why don't <Volume Extent>'s sub-classes specify location data? A. <Location> information is provided by the aggregating object. This allows a single <Volume Extent> to be used in several locations. Superclass: SEDRIS Abstract Base Subclasses: Cylindrical Volume Extent Parallelepiped Volume Extent Spherical Volume Extent Constraints: Publishable Object Component of (two-way) zero or more Volume instances zero or more Volume Light Behaviour instances zero or more Volume LOD Data instances zero or more Volume Object instances ------------------------------------------------------------------------------- Abstract Class Name: Volume Geometry Definition: An instance of a concrete class derived from this DRM class specifies a volumetric representation of some environmental entity. Primary Page in DRM Diagram: 5 Secondary Pages in DRM Diagram: 23 Example: See specific subclasses for examples. FAQS: None. Superclass: Primitive Geometry Subclasses: Polyhedron Volume Object Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Cyclic Aggregations Precedence of Property Set Index Colour Mapping Restrictions Continuous LOD Restrictions Image Mapping Functions and Texture Coordinates Nested Primitive Geometry Composed of (two-way) (inherited) zero or one Classification Data instance zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or more Colour instances zero or more {ordered} Image Mapping Function instances zero or one Light Rendering Properties instance zero or one Presentation Domain instance zero or one Rendering Priority Level instance zero or one Rendering Properties instance zero or more Tack Point instances zero or one Union Of Primitive Geometry instance Composed of (two-way metadata) (inherited) zero or one Time Constraints Data instance Component of (two-way) (inherited) zero or more Union Of Primitive Geometry instances ------------------------------------------------------------------------------- Class Name: Volume LOD Data Definition: An instance of this DRM class specifies a volume that governs the switching of objects by the associated branch of a Volume-based <LOD Related Geometry> or <LOD Related Features> instance. Primary Page in DRM Diagram: 9 Example: 1. Consider a geometric representation of a runway for an application for which increased detail is required as a viewer gets within 1000 metres of it, but for which a less detailed representation can be used outside that volume. This geometric representation can be organized as a <LOD Related Geometry> instance, wherein the branch corresponding to the less detailed representation has a <Volume LOD Data> link object with outside set to SE_TRUE, specifying a parallelepiped volume that is aligned with the runway and extends 1000 metres from each edge. The more detailed representation's <Volume LOD Data> link object would use the same <Parallelepiped Volume Extent> and the same volume centre, but would have outside set to SE_FALSE. 2. Consider another application, for which a geometric representation of a runway is required to provide increased detail as a viewer gets within 1000 metres of either end, but which if overflown from the side does not require detail to be switched on until the viewer is 500 metres away. In this case, the representation would have the same structure as that used in the previous example, but the parallelepiped would extend only 500 metres from either side of the runway, while extending 1000 metres from each end. 3. Consider a representation of a windowless building having opaque walls, such that nothing inside the building can be seen by an observer outside the building representation. Consequently, everything inside that building's representation can be switched on and off depending on whether an observer is inside or outside the building. This can be represented by organizing the building interior's representation with a volume level of detail organization. Suppose that the building interior's feature representation is being considered, so that it is being represented as one branch of a <LOD Related Features> instance in a geodetic SRF, and that the interior volume of the building can be represented as a parallelepiped. <LOD Related Features> <> | | - - - <Volume LOD Data> | outside = SE_FALSE | <> | | | ----------------------------------- | | | | <Parallelelpiped Volume Extent> <CD 3D Location> | | (building interior's feature representation) The <Volume LOD Data> specifies a parallelepiped volume of the same dimensions as the building interior, and specifies the centre of that volume. The value of its outside field indicates that the building interior's feature representation (the data represented by this branch) is active only when the viewer is inside (that is, not outside) the parallelepiped volume. FAQS: Q. Why does Level Of Detail need to be controlled by a volume? A. A spherical boundary, defined by a distance from a centre point, may not be appropriate for some objects. For example, long, thin objects such as runways. In such cases, Levels Of Detail shall be switched at different distances from the centre of the object, depending on the direction the object is approached from. A volume allows such a non-spherical boundary to be specified. Superclass: Base LOD Data Constraints: Publishable Object LOD Related Organizing Principle Composed of (two-way) one Location 3D instance one Volume Extent instance Component of (two-way) (inherited) zero or more Aggregate Feature instances zero or more Aggregate Geometry instances zero or more Property Grid Hook Point instances Field Elements: SE_Boolean outside; /* * For a <Volume LOD Data> instance associated with * a given branch of a volume-based level of detail aggregation, * outside = SE_TRUE if that branch is switched on when the * observer is outside the volume, and off when the observer * is inside the volume. If outside = SE_FALSE, this behaviour * is reversed. */ ------------------------------------------------------------------------------- Class Name: Volume Light Behaviour Definition: An instance of this DRM class is a <Light Rendering Behaviour>, the colour of which varies depending on the observer's position relative to the light's location and to the volume's geometry. The volume surrounds the light. Within the volume, the light has the primary colour; outside the volume, it takes the secondary colour. Primary Page in DRM Diagram: 21 Example: 1. The <Volume Light Behaviour> has a primary colour that is a <Colour Index> that has an intensity attribute of 0.95. The <Volume Light Behaviour> also has a secondary colour. The minimum_colour_intensity is 0.0. The use_full_intensity flag is SE_FALSE. The light is in the centre of the volume and the volume is a <Parallelepiped Volume Extent> representing a cube measuring 2000 metres per side. if: eye_distance_from_light = the distance of the viewing position from the light volume_distance_from_light = the distance between the light and the volume boundary along the same vector then: final_intensity = minimum_colour_intensity + (((volume_distance_from_light - eye_distance_from_light) / volume_distance_from_light) * (full_intensity - minimum_colour_intensity)) If the observer's position from the light is a distance of 500 metres along a vector from the light to a corner of the volume then the final_intensity is 0.614. 0.0 + (((1414.2 - 500.0) / 1414.2) * (0.95 - 0.0)) If the observer's position from the light is 3000 metres then the final_intensity is 1.0 (using the secondary colour) because the observer is outside the volume and there is a secondary colour on the <Volume Light Behaviour> instance. 2. The <Volume Light Behaviour> instance has a primary colour that is an <Inline Colour> instance (which makes the full intensity 1.0). The minimum_colour_intensity is 0.5. The use_full_intensity flag is SE_TRUE. The light is in the centre of the volume and the <Volume Extent> instance is a <Spherical Volume Extent> instance with a radius of 1000 metres. If the observer's distance from the light is a distance of 100 metres, the final_intensity is 1.0, since the observer's position is inside the volume and the use_full_intensity flag is set to SE_TRUE. If the observer's distance from the light is a distance of 0 units then the final_intensity is 1.0 since the observer's position is inside the volume and the use_full_intensity flag is set to SE_TRUE. FAQS: None. Superclass: Light Rendering Behaviour Constraints: Publishable Object Composed of (two-way) one Location 3D instance one Volume Extent instance Component of (two-way) (inherited) one or more Light Rendering Properties instances Field Elements: SE_Boolean use_full_intensity; /* * If SE_TRUE, the use_full_intensity field specifies that the * full intensity of * the light is shown within the volume. Otherwise, the intensity * of the light decreases towards the minimum_colour_intensity * value) as the observer moves away from the light. The * intensity of the light reaches the minimum_colour_intensity * value when the observer reaches the boundary of the volume. */ SE_Long_Float minimum_colour_intensity; /* * The value of the minimum_colour_intensity field, which shall * be between 0.0 and 1.0, is used in conjunction with the * intensity value of the primary colour. * If the primary colour is a <Colour Index> instance, the * full intensity is the intensity attribute of that instance. * If the primary colour is an <Inline Colour>, the full * intensity is 1.0. * * If the observer's location is the same as that of the light, * it receives the full (intensity) value. As the observer moves * away from the light (but is still within the volume), the * intensity decreases toward the minimum_colour_intensity value, * unless use_full_intensity = SE_TRUE). Once the observer is * outside the volume, the intensity is that of the * minimum_colour_intensity value. If the * minimum_colour_intensity value is 0.0 and the observer is * outside the volume, the secondary colour will be seen. If * no secondary colour is used, nothing will be seen. */ ------------------------------------------------------------------------------- Class Name: Volume Object Definition: An instance of this DRM class specifies a volume as a geometric representation. Primary Page in DRM Diagram: 5 Secondary Pages in DRM Diagram: 13 Example: None. FAQS: None. Superclass: Volume Geometry Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Cyclic Aggregations Precedence of Property Set Index Colour Mapping Restrictions Continuous LOD Restrictions Image Mapping Functions and Texture Coordinates Nested Primitive Geometry Cylindrical Structure Associated with (two-way) zero or one Geometry Node instance Composed of (two-way) (inherited) zero or one Classification Data instance zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or more Colour instances zero or more {ordered} Image Mapping Function instances zero or one Light Rendering Properties instance zero or one Presentation Domain instance zero or one Rendering Priority Level instance zero or one Rendering Properties instance zero or more Tack Point instances zero or one Union Of Primitive Geometry instance Composed of (two-way) one Location 3D instance one Volume Extent instance Composed of (two-way metadata) (inherited) zero or one Time Constraints Data instance Component of (two-way) (inherited) zero or more Union Of Primitive Geometry instances ------------------------------------------------------------------------------- Class Name: Volumetric Feature Definition: An instance of this DRM class is a <Primitive Feature> that encloses a bounded region of three-dimensional space, such as a building or a room within a building. Primary Page in DRM Diagram: 8 Secondary Pages in DRM Diagram: 12 Example: 1. Consider a <Volumetric Feature> instance representing a building. It has an associated <Feature Volume> instance, which defines its extent, shape, and topological relationships; a <Classification Data> component that classifies it as an ECC_BUILDING; <Property Value> components that describe its characteristics, such as material composition, and a <Label> instance that identifies it as "The Empire State Building". <Volumetric Feature>-------------<Feature Volume> <> ---------------------------------------- | | | <Classification Data> <Property Value> <Label> { ECC_BUILDING } <> | <Text> { "Empire State Building" } FAQS: Q. Is Level 5 feature topology required in order for <Volumetric Feature> instances to exist? A. No. In order for <Volumetric Feature> instances to exist, the SRF must be three-dimensional, and at least one <Feature Volume> object must exist. Q. Can a <Volumetric Feature>'s topology consist of multiple <Feature Volume> instances? If so, are these <Feature Volume> instances required to be adjacent or connected to one another? A. A <Volumetric Feature> can consist of multiple <Feature Volume> instances. There is no requirement that these <Feature Volume> instances be adjacent or connected to one another. For example, a house with a detached garage could be represented as a single <Volumetric Feature> with two associated <Feature Volume> instances (one for the house itself, and one for the garage). Superclass: Primitive Feature Constraints: Publishable Object No Attribute Conflicts Non Crossing Aggregations Non Crossing Associations Precedence of Property Set Index Colour Mapping Restrictions Image Mapping Functions and Texture Coordinates Associated to (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or more Property Grid instances, each with a Base Association Data link object Associated by (one-way) (inherited) zero or more Feature Representation instances, each with a Base Association Data link object zero or more Geometry Hierarchy instances, each with a Base Association Data link object zero or more Property Grid instances, each with a Base Association Data link object Associated with (two-way) one or more Feature Volume instances Composed of (two-way) (inherited) zero or one Classification Data instance zero or more Label instances zero or more {ordered} Property Set Index instances zero or more Property Table instances zero or more Property Table Reference instances zero or more Property Value instances zero or one Rendering Priority Level instance zero or more Colour instances zero or more {ordered} Image Mapping Function instances zero or one Presentation Domain instance zero or one Spatial Extent instance Composed of (two-way metadata) (inherited) zero or one Access instance zero or more Cross Reference instances zero or one Data Quality instance zero or one Description instance zero or one Time Constraints Data instance Component of (two-way) (inherited) zero or more Union Of Features instances ------------------------------------------------------------------------------- Class Name: World 3x3 Definition: An instance of this DRM class specifies a nine element matrix containing scaling and rotation data as part of a <World Transformation> instance. The direction of rotation is determined by the right-hand rule. Translation data is not provided by a <World 3x3> instance, because a <World 3x3> instance only exists as part of a <World Transformation> instance. The translation, or offset, component of a <World Transformation> instance is provided by the mandatory <Location> component of the <World Transformation> instance. In essence, a <World 3x3> matrix can be considered to be a full transformation matrix in which the rightmost column and bottom row have been omitted, because each is implicitly (0, 0, 0, 1). <World Transformation> instances usually exist in the scope of an <Environment Root> instance defining a non-LSR SRF. Consequently, <World 3x3> instances usually exist within a 'world' SRF, hence the name. The matrix multiplication order is defined by w = M * v, where M is the <World 3x3> matrix, v is the original location vector, and w is the resulting location vector. Primary Page in DRM Diagram: 7 Example: 1. Scale and rotation applied to a <Model> when placing an instance. 2. The house near Dixie Rd. is facing east. The large house across the street is facing west. 3. See <Local 4x4> for more examples and explanations of matrix structure. FAQS: Q. How is the transformation matrix stored? A. SEDRIS stores matrices in *row* major order; that is, the first three elements correspond to the first row of the matrix, the following three elements correspond to the second row of the matrix, and so on (just as a float[3][3] in C is organized). Hence, if mat[][] is the matrix being used, then mat[i][j] is the element in row i and column j of the matrix. Q. What is the multiplication order for <World 3x3> matrices? A. If M is a <World 3x3> transformation matrix and v is a column location vector, then the SEDRIS Level 0 API transforms v to a column location vector w by setting w = Mv. (See HTML for detailed matrix equation.) Q. After applying a <World Transformation> instance to a <Geometry Model Instance> (GMI), a data consumer found the GMI oriented in a different direction than expected. Why? A. There are at least two possibilities. 1) Check that the rotation angles had the correct sign, given that the right hand rule is in effect. 2) The <World 3x3> component of the <World Transformation> instance may have been constructed using invalid assumptions about the order of multiplication defined in SEDRIS. In this case, transposing the <World 3x3> instance's matrix would solve the problem, provided that the rotation angles were correct (see 1). Q. Why is a <World 3x3> instance allowed to have a <Location> component, considering that <World Transformation> itself is required to have a <Location> component? A. Consider a transmittal containing an <Environment Root> defined in a geodetic SRF. This transmittal also contains an LSR <Model> within its <Model Library>, which is instanced in the geodetic <Environment Root> such that the <Model> SRF's y-axis is oriented to geodetic north. Now consider a consumer who wishes to consume this transmittal in Augmented UTM rather than geodetic. If the <World 3x3> is left as-is during the transformation performed by the API, it will now orient the <Model> SRF's y-axis to Augmented UTM north rather than the geodetic north. This will change the object's orientation from the originally intended direction. Since geodetic space does not have a vector structure, a canonical LTP space shall be embedded within geodetic space to convert the values of the <World 3x3> matrix during the coordinate conversion/ transformation operation. Since a <Location> is required to define a canonical LTP space, conversion of the <World 3x3> instance shall be performed with respect to a <Location>. Allowing the <World 3x3> to have a <Location> as a direct component allows the <World 3x3> to inherit the <Location> component of its parent <World Transformation>, and thus define the necessary location for a coordinate conversion/ transformation operation. Q. Is a matrix in SEDRIS the same as a matrix in OpenGL? A. No. A matrix in SEDRIS is stored in row major order, while in OpenGL, matrices are specified in column major order (as in the glMultMatrix function). Consequently, to correctly apply SEDRIS transformations in OpenGL programs, each matrix shall be reordered, and in the case of <World 3x3>, the implicit (0, 0, 0, 1) rightmost column and bottommost row shall be supplied explicitly. Superclass: SEDRIS Abstract Base Constraints: Publishable Object Composed of (two-way) zero or one Location instance Component of (two-way) zero or more World Transformation instances Field Elements: SRM_Matrix_3x3 world_3x3; /* * The world_3x3 field specifies an orientation matrix. */ ------------------------------------------------------------------------------- Class Name: World Transformation Definition: An instance of this DRM class is a <Transformation>, specified by a <Location> and a <World 3x3>, used to transform an object defined in an LSR SRF into another SRF (usually, but not always, a non-LSR SRF). A <World Transformation> instance is either - defined in a non-LSR SRF, then used to instance an LSR <Model> into the non-LSR SRF, or - defined within an LSR SRF (SRF_1), and then used to instance a <Model> embedded within another LSR SRF (SRF_2) into SRF_1, in a way that maintains the conformality of any <Location> instances in the <Model>. Primary Page in DRM Diagram: 7 Example: 1. Used when instancing a house onto geodetic terrain (defined by latitude and longitude). This allows the <Location> instance to position the house and the <World 3x3> instance to rotate and scale the house. 2. The location and orientation of a building instanced onto a terrain representation. 3. See <Transformation> for examples. FAQS: None. Superclass: Transformation Constraints: Publishable Object Composed of (two-way) one Location instance zero or one World 3x3 instance Component of (two-way) (inherited) zero or more Feature Model Instance instances zero or more Geometry Model Instance instances