------------------------------------------------------------------------------- Constraint Name: Axis Type Restrictions Definition: The following restrictions apply. 1. In an instance X, 1.1 The axis_type of X shall correspond to an EDCS Attribute T bound to the abstract value type EDCS_AVT_ENUMERATION. 1.2 The entries of X's axis_value_array shall be distinct, valid EEs for T. 2. In an instance X, 2.1 The axis_type shall correspond to an EDCS Attribute (EA) bound to a numeric value type. 2.2 If the axis_type is bound to some set of EDCS Unit Equivalence classes (EQs), the value_unit shall be a member of one of the specified EQs. 2.3 Each individual entry in X's axis_interval_value_array shall have a value_type corresponding to an interval type, and this value_type shall be the same for all entries in the axis_interval_value_array. 2.4 All entries in X's axis_interval_value_array shall be mutually disjoint. 2.5 The entries in X's axis_interval_value_array shall be arranged in either monotonically ascending or monotonically descending order. 3. In an instance X, 3.1 The axis_type shall correspond to an EDCS Attribute (EA) bound to a numeric value type. 3.2 If the axis_type is bound to some set of EDCS Unit Equivalence classes (EQs), the value_unit shall be a member of one of the specified EQs. 3.3 If the axis_type is not bound to any EQ, the value_unit and value_scale shall be set to EUC_UNITLESS and ESC_UNI, respectively. 3.4 Each individual entry in X's axis_value_array shall have a attribute_value_type consistent with the axis_type, and this attribute_value_type shall be the same for all entries in the axis_value_array. 3.5 All entries in X's axis_value_array shall be distinct. 3.6 The entries in X's axis_value_array shall be arranged in either monotonically ascending or monotonically descending order. 4. In a instance X, 4.1 The axis_type shall correspond to an EDCS Attribute (EA) bound to a numeric value type. 4.2 If the axis_type is bound to some set of EDCS Unit Equivalence classes (EQs), the value_unit shall be a member of one of the specified EQs. 4.3 If the axis_type is not bound to any EQ, the value_unit and value_scale shall be set to EUC_UNITLESS and ESC_UNI, respectively. 4.4 The value_type of the first_value and spacing field values shall be the same, and shall be consistent with the numeric data type to which the axis_type's value is bound. 5. In regard to spatial instances, 5.1 A spatial is an instance with one of the following as its axis_type. 5.1.1 For angular coordinates, such as latitude and longitude, EAC_SPATIAL_ANGULAR_PRIMARY_COORDINATE EAC_SPATIAL_ANGULAR_SECONDARY_COORDINATE. 5.1.2 For x, y coordinates, EAC_SPATIAL_LINEAR_PRIMARY_COORDINATE EAC_SPATIAL_LINEAR_SECONDARY_COORDINATE 5.1.3 For z and elevation coordinates, EAC_SPATIAL_LINEAR_TERTIARY_COORDINATE 5.2 The first spatial_axes_count components of a instance shall be spatial instances, each of which uniquely corresponds to a coordinate of the instance's spatial reference frame. 5.3 No other instances in any other context shall be spatial. Rationale: 1. , , and exist to specify some set of numeric values of an independent variable used to organize dependent values in some instance. Further, arithmetic operations are required to compute ' tic values from its first_value and spacing field values. 2. All instances are required to specify distinct tic marks to avoid ambiguity. 3. For ease of processing, it is desirable to organize and values monotonically. Example: 1. axis_type = EAC_PRIMARY_SURFACE_THERMAL_CONDITION may be used only for an instance, and for no instance of any other sub-class. FAQs: Q. Can an EA of abstract value type INDEX be used for a or ? A. Yes, but the value_unit and value_scale fields are ignored, and interpolation_type is not applicable (and shall therefore be set to SE_INTERPOLATION_TYP_DISALLOWED). Q. For and , why not require ascending monotonicity, rather than allowing either ascending or descending? A. In some problem domains, descending monotonicity is preferred, while in others, ascending is preferred. Consider a describing atmospheric data, where an specifies a vertical coordinate in pressure units, which decreases with increasing height. In such a table, if the were required to be monotonically increasing, it could not be used to define a volume without "flipping the atmosphere over" to put the highest level at the first point on the axis and the lowest level at the last point on the axis, which could lead to confusion when the is processed by a consumer. On the other hand, a describing oceanographic data with depth as an might be naturally organized in terms of increasing depth. ------------------------------------------------------------------------------- Constraint Name: Classification Data Constraint Definition: 1. For a instance UF, 1.1 If UF has a directly attached component, UF's union_reason may not be SE_UNION_REASON_OTHER. 1.2 If UF has an inherited component, UF's union_reason may not be SE_UNION_REASON_OTHER. 1.3 Otherwise, UF's union_reason is required to be SE_UNION_REASON_OTHER. 2. For a instance UG, 2.1 If UG has a directly attached component, UG's union_reason may not be SE_UNION_REASON_OTHER. 2.2 If UG has an inherited component, UG's union_reason may not be SE_UNION_REASON_OTHER. 2.3 Otherwise, UG's union_reason is required to be SE_UNION_REASON_OTHER. Rationale: The only permitted cases are those where a is present to indicate either the SE_UNION_REASON_CLASSIFIED_OBJECT or SE_UNION_REASON_COLLECTION_OF_CLASSIFIED_OBJECTS cases, or where no is present and the union is there for some non-semantic/non-environmental-object related reason. Example: 1. Consider a instance UF that is a component of a instance. UF's union_reason cannot be SE_UNION_REASON_OTHER, because UF inherits the link object of its branch. 2. Consider a instance UGH with union_reason = SE_UNION_REASON_COLLECTION_OF_CLASSIFIED_OBJECTS, with a component instance UPG. UPG's union_reason cannot be SE_UNION_REASON_OTHER, because UPG inherits UGH's . FAQs: None. ------------------------------------------------------------------------------- Constraint Name: Colour Mapping Restrictions Definition: 1. The colour_mapping field of a shall not be empty. 2. The Lgt_Render_Bhvr_Primary and Lgt_Render_Bhvr_Secondary flags may only be used for objects with . 3. The Lgt_Render_Bhvr_Primary flag may not be combined with any other SE_Colour_Mapping. 4. The Lgt_Render_Bhvr_Secondary flag may not be combined with any other SE_Colour_Mapping. Rationale: A specifies how it is applied to the objects that use it, so the colour_mapping shall not be empty. The Lgt_Render_Bhvr_Primary and Lgt_Render_Bhvr_Secondary flags specify the primary and secondary colours of an object's . If a applies to the of an object's rather than the object itself, it shall apply only to that . In addition, the same cannot be both the primary and the secondary colour of a . Example: 1. Consider a instance with 2 components and an component, where the instance's image_mapping_method is set to SE_IMG_MAPNG_METH_BLEND. Each instance shall specify whether it is primary, image blend, or neither, and which side of the instance is affected, in order to determine how to combine the colours with the texture. FAQs: See the comments for , SE_Colour_Mapping, and for discussions of how colour_mapping is interpreted. ------------------------------------------------------------------------------- Constraint Name: Colour Table Size Definition: For a given instance G with table_size = k, each component T of G shall have k components. However, components of a are free to have different types of components from each other (such as some using , some not). Rationale: This is a requirement in order to allow the instances within a to be interchangeable. Example: 1. An contains three components: one for an Out-The-Window view, one for a RADAR view, and one for an Infra-Red view. All three instances contain 234 components. Entry 234 in each is a for the representation of "granite" in the three different domains. FAQs: None. ------------------------------------------------------------------------------- Constraint Name: Connected Edge Restrictions Definition: 1. A FN has the following relationship with its components, if any exist. 1.1. For each that has FN as a starting node, FN shall be associated to that . 1.2. For each that has FN as an ending node, FN shall be associated to that . 1.3. If FN is neither a starting nor an ending node of a given , FN shall not be associated to that . 1.4. Consequently, for any given FE of which FN is a starting or ending node, FE shall appear among the associates of FN either: - once, if FN is FE's starting node and not its ending node, - once, if FN is FE's ending node and not its starting node, - twice, if FE is a loop. 2. A GN has the following relationship with its associated instances, if any. 2.1. For each that has GN as a starting node, GN shall be associated to that . 2.2. For each that has GN as an ending node, GN shall be associated to that . 2.3. If GN is neither the starting nor ending node of a given , GN shall not be associated to that . 2.4. Consequently, for any given GE of which GN is a starting or ending node, GE shall appear among the associates of GN either: - once, if GN is GE's starting node and not its ending node; - once, if GN is GE's ending node and not its starting node; or - twice, if GE is a loop. Rationale: The associations between and implement a boundary/co-boundary relationship. This topological relationship must be consistent, and must be consistent with the geometric representation of these objects. The associations between and implement a boundary/co-boundary relationship. This topological relationship must be consistent, and must also be consistent with the geometric counterparts of these objects. Example: 1. Consider a instance E1 that has distinct starting and ending instances N1 and N2. N1 shall be associated to E1, and N2 shall also be associated to E1. 2. Consider a E1 that has distinct starting and ending instances N1 and N2. N1 shall be associated to E1, and N2 shall also be associated to E1. FAQs: Q. For a that forms a loop (that is, a for which the starting and ending are the same ), how many times does that appear in that 's list of associated instances? A. Twice, with opposite values. A with distinct starting and ending instances would appear only once. Q. For a that forms a loop (that is, a whose starting and ending are the same ), how many times does that appear in that 's list of associated instances? A. Twice, with opposite values. A with distinct starting and ending instances would appear only once. ------------------------------------------------------------------------------- Constraint Name: Contained Edge Restrictions Definition: A instance FV has the following relationship with its associated instances, if any exist. At any feature topology level, if FV is associated with any instance FE, then FE shall lie completely within the external shell of FV, if any, and shall NOT lie within any of the internal shells of FV, if any. Conversely, if a instance FE lies within the boundaries of FV, then FE shall be associated with FV. If no instances lie within its boundaries, FV shall not be associated with any instances. A GV has the following relationship with its associated instances, if any exist. At any geometry topology level, if GV is associated with any instance GE, then GE shall lie completely within the interior of GV. Conversely, if a instance GE lies completely within the interior of GV, then GE shall be associated with GV. If no instances lie completely within its interior, GV shall not be associated with any instances. Rationale: The association between and implements a containment relationship. This topological relationship must be consistent, and must be consistent with the geometric representation of these objects. The association between and implements a containment relationship. This topological relationship must be consistent, and must be consistent with the geometric counterparts of these objects. Example: 1. Consider a E1 that is "floating" within the interior of a V1. E1 is contained within V1, and V1 contains E1. 2. Consider a E1 that is "floating" within the interior of a V1. E1 is contained within V1, and V1 contains E1. FAQs: Q. If a is contained within the interior of a , must the instances that bound that also be contained within the interior of that same ? A. No. The instances that bound such a may be contained within the containing , or may be contained within the interior of one of the instances that bound that , or may even be one of the instances that bound one of the instances that in turn bound one of the instances that bound that . Q. If a is contained within the interior of a , must the instances that bound that also be contained within the interior of that same ? A. No. The instances that bound such a may be contained within the containing , or may be contained within the interior of one of the instances that bound that , or may even be one of the instances that bound one of the instances that in turn bound one of the instances that bound that . ------------------------------------------------------------------------------- Constraint Name: Contained Node Restrictions Definition: 1. A FF has the following relationship with its associated instances, if any exist. At any feature topology level, if FF is associated with any instance FN, then FN shall lie within the external ring of FF, if any, and shall NOT lie within any of the internal rings of FF, if any. Conversely, if a FN lies within the boundaries of FF, then FN shall be associated with FF. If no instances lie within its boundaries, FF shall not be associated with any instances. 2. A FV has the following relationship with its associated instances, if any exist. At any feature topology level, if FV is associated with any FN, then FN shall lie completely within the external shell of FV, if any, and shall NOT lie within any of the internal shells of FV, if any. Conversely, if a FN lies within the boundaries of FV, then FN shall be associated with FV. If no instances lie within its boundaries, FV shall not be associated with any instances. 3. A GF has the following relationship with its associated instances, if any. At any geometry topology level, if GF is associated with any GN, then GN shall lie within the interior of GF. Conversely, if a GN lies within the interior of GF, then GN shall be associated with GF. If no instances lie within its interior, GF shall not be associated with any instances. 4. A GV has the following relationship with its associated instances, if any exist. At any geometry topology level, if GV is associated with any GN, then GN shall lie within the interior of GV. Conversely, if a GN lies within the interior of GV, then GN shall be associated with GV. If no instances lie within its interior, GV shall not be associated with any instances. Rationale: The associations between and , and between and , implement containment relationships. These topological relationships must be consistent, and must be consistent with the geometric representations of these objects. The associations between and , and between and , implement containment relationships. These topological relationships must be consistent, and must be consistent with the geometric counterparts of these objects. Example: 1. Consider a N1 that is "floating" within the interior of a V1. N1 is contained within V1, and V1 contains N1. 2. Consider a N1 that is "floating" within the interior of a V1. N1 is contained within V1, and V1 contains N1. FAQs: Q. Can a that is contained within the interior of a or also be connected to one or more instances? A. Yes. A that is contained within the interior of a can also be connected to a , as long as that does not bound that . This is only possible within a three-dimensional spatial reference frame. A that is contained within the interior of a can also be connected to a , as long as that does not bound any of the instances that in turn bound that . Q. Can a that is contained within the interior of a or also be connected to one or more instances? A. Yes. A that is contained within the interior of a can also be connected to a , as long as that does not bound that . This is only possible within a three-dimensional spatial reference frame. A that is contained within the interior of a can also be connected to a , as long as that does not bound any of the instances that in turn bound that . ------------------------------------------------------------------------------- Constraint Name: Continuous LOD Restrictions Definition: 1. instances can be used only in the scope of some instance. 2. A instanced within the component tree of a shall not have a component. Rationale: 1. Nobody has flickering problems caused by zooming in on a instance. 2. instances always represent terrain, and terrain instances don't use subfacing. Example: None. FAQs: None. ------------------------------------------------------------------------------- Constraint Name: Cylindrical Structure Definition: 1. For a instance C, the following conditions shall hold. 1.1 The components of C shall comply with the restrictions imposed in the specification of the class, including the restrictions on their vector_type field values and their orientation relative to one another. 1.2 If a component of C specifies a component L, L shall be the specified by the volume context in which C appears. 2. For an instance E, the following conditions shall hold. 2.1 The components of E shall comply with the restrictions imposed in the specification of the class, including the restrictions on their vector_type field values and their orientation relative to one another. 2.2 If a component of E specifies a component L, L shall be the component of E. Rationale: An instance of a DRM class representing a cylindrical volume shall specify a geometrically valid cylinder, and any information specified by its components shall be consistent with the context supplied by that volume. Example: None. FAQs: None. ------------------------------------------------------------------------------- Constraint Name: Distinct Geometric Centre Definition: If an instance of specifies more than one component, each shall specify a different value for its meaning field. Rationale: At any given point in time, a body cannot have more than point serving as a specific . Example: 1. Let G be the SEDRIS object that is the root of the geometric representation of a body B, such that G has a representing B's SE_GEOM_CTR_CODE_CENTRE_OF_MASS. G cannot have another component with meaning = SE_GEOM_CTR_CODE_CENTRE_OF_MASS, because no body B can have two different centres of mass at the same time. FAQs: None. ------------------------------------------------------------------------------- Constraint Name: Distinct Link Objects Definition: 1. Under any single or instance, the link objects (if any) shall have non-identical discriminators. 2. Under any single instance, the link objects shall have non-identical discriminators. 3. Under any single topology hierarchy, whether a or , the link objects shall have non-identical discriminators. 4. Under any single model instance, whether a or a , the instances shall be distinct. Rationale: Discriminators shall be distinct in order to allow the user to discriminate between the branches they represent. However, this does not apply to link objects that exist only to specify sides of a instance. For model instances, the indices into the instance shall be distinct because no can be set to more than one value at a time. Example: 1. For a level-of-detail-related aggregation, no 2 may be identical. 2. For a time-related aggregation, 2