POSC Specifications: Epicentre Version 3.0 | Logical Data Model |
This change implements the recommendations of the EPSG.
CHANGE ERP_EPSG_coordinate_system ALTER ENTITY coordinate_system; (*<PROJNK>NO*) DROP ref_axis_orientation (*<CHANGE>Redundant to orientation of axis.*); DROP vertex; ALTER coordinate_system_axis ALTER INVERT ALTER AGGREGATE AS SET DROP UNIQUE (*<DESC>These are coordinate system axes that make up this coordinate system. An axis may not be used more than once in a coordinate system.*) (*<CHANGE>Move the LIST behavior to the axis entity.*); END_ENTITY; ALTER ENTITY coordinate_system_axis DROP ABSTRACT; (*<POPULATION>OPEN*) ADD axis_order : ndt_pint1 (*<DESC>This is the order of the axis within the definition of the coordinate system. This order should match the "normal" order assumed for the coordinate system. For exporting tuples of data, this would be the normal order of coordinates within the tuple. Note that the data base is somewhat independent of order because the order is explicit and not assumed. The only place that this order is used is in the LIST associated with data type LOCATION, in the LIST of axis types associated with the coordinate system constraint and in the determination of the right/left handed orientation of the coordinate system. The first axis should have an axis order of one, the second an order of two, etc.*); ALTER ref_axis_orientation (*<DESC>The orientation of the positive direction of the coordinate system axis. The orientations may be absolute in an Earth sense or be relative to other axes. For example, "east", "west", "north", "south", "upward", "downward", "right handed" and "left handed". Note that a 3D system with axis orientations of north/east/upward inherently defines a left-handed coordinate system (or from an alternative viewpoint, a left-handed third axis).*) (*<VERB>have orientation defined by*); INVERSE DROP grid_1d_equal; ALTER coordinate_system ALTER INVERT DROP AGGREGATE (*<DESC>This is a coordinate system axis that is part of a coordinate system. The axis is ordered within the context of the coordinate system. An axis may not be used more than once in a coordinate system.*); UNIQUE ADD si : coordinate_system, ref_quantity_property (*<CHANGE>Moved up from deleted subtypes.*); WHERE ADD val : axis_order > 0 (*<DESC>The axis order must be greater than zero.*) (*<RULETYPE>VAL*); END_ENTITY; ALTER ENTITY grid_1d_equal; ALTER coordinate_system_axis AS ref_quantity_property ALTER TYPE AS ref_quantity_property (*<DESC>This designates the property used for the origin and step.*); END_ENTITY; ALTER ENTITY coordinate_transformation; ADD reverse_transform_valid : ndt_boolean (*<DESC>TRUE indicates that the reverse transform is valid using the same parameters. FALSE indicates that the reverse transform is not valid.*); ADD sign_reversal : OPTIONAL ndt_boolean (*<DESC>TRUE indicates that the sign of the transformation parameter values must be reversed in order to perform a reverse transformation. FALSE indicates that the sign of the transformation parameter values must not be reversed in order to perform a reverse transformation.*); WHERE ADD val : ((reverse_transform_valid = FALSE) AND NOT EXISTS (sign_reversal)) OR ((reverse_transform_valid = TRUE) AND EXISTS (sign_reversal)) (*<DESC>SIGN REVERSAL must be specified if REVERSE TRANSFORMATION VALID is true and cannot be specified if REVERSE TRANSFORMATION VALID is false*) (*<RULETYPE>VAL*); END_ENTITY; DROP ENTITY geoid; DROP ENTITY geoid_model (*<CHANGE>Moved to transformation.*); DROP ENTITY vertical_datum_offset (*<CHANGE>Moved to transformation.*); DROP ENTITY ref_map_projection; ALTER ENTITY local_spatial_coordinate_system AS local_coordinate_system; (*<DESC>A spatial coordinate system that is not referenced to the Earth except through a datum (which may have an origin reference). A local coordinate system may also be related to the Earth via transform to a coordinate system that is referenced to the Earth. Local coordinate systems may be 1D, 2D or 3D.*) ADD local_datum : OPTIONAL local_datum (*<DESC>This is the local datum for the coordinate system.*) (*<VERB>be measured from*); INVERSE ADD compound_system : SET[0:?] OF compound_coordinate_system FOR local_system (*<DESC>These are the compound coordinate systems for which this system forms the either the horizontal 2d or vertical 1D component.*) (*<VERB>be part of*); END_ENTITY; ALTER ENTITY projected_coordinate_system AS projected_2d_coordinate_system; (*<DESC>A 2D coordinate system that is a systematic representation of all or part of the surface of the earth on a plane based upon a projection coordinate transformation from a geographic coordinate system. The datum for the projected system is the same as for the geographic system.*) DROP ref_map_projection; ADD source_geodetic_system : geographic_2d_coordinate_system (*<DESC>This is the related geographic system. The datum for the projected system is the same as for the geographic system. The only transformation between this projected system and a geographic system will be to/from the source geodetic system.*) (*<VERB>be projection of*); INVERSE ADD compound_system : SET[0:?] OF compound_coordinate_system FOR projected_system (*<DESC>These are the compound coordinate systems for which this system forms the horizontal 2D component.*) (*<VERB>be part of*); END_ENTITY; ALTER ENTITY geographic_coordinate_system AS geographic_2d_coordinate_system; (*<DESC>A curvilinear 2D coordinate system based upon a geodetic datum. This left-handed coordinate system is defined by the orthogonal axes of latitude and longitude. The latitude of a point is specified as an angle between the equatorial plane and a suitably chosen line thorough the point. The longitude of a point is specified as an angle between the local meridian of the point and the chosen reference meridian, measured in the equatorial plane.*) INVERSE ADD compound_system : SET[0:?] OF compound_coordinate_system FOR geographic_system (*<DESC>These are the compound coordinate systems for which this system forms the horizontal 2D component.*) (*<VERB>be part of*); ADD projected_coordinate_system : SET[0:?] OF projected_coordinate_system FOR source_geodetic_system (*<DESC>These are the coordinate systems which represent a projection from this system.*) (*<VERB>be basis for*); END_ENTITY; ADD ENTITY vertical_coordinate_system SUBTYPE OF (coordinate_system); (*<POPULATION>OPEN*) (*<PROJMETH>CON*) (*<PROJNK>YES*) (*<DESC>A vertical earth-referenced height or depth coordinate system. Local heights or depths should use subtype Local Coordinate System.*) vertical_datum : vertical_datum (*<DESC>This is the vertical datum for the coordinate system.*) (*<VERB>be measured from*); INVERSE compound_system : SET[0:?] OF compound_coordinate_system FOR vertical_system (*<DESC>These are the compound coordinate systems for which this system forms the vertical component.*) (*<VERB>be part of*); UNIQUE si : identifier; END_ENTITY; ADD ENTITY geographic_3d_coordinate_system SUBTYPE OF (coordinate_system); (*<POPULATION>OPEN*) (*<PROJMETH>CON*) (*<PROJNK>YES*) (*<DESC>A curvilinear 3D coordinate system based upon a geodetic datum. This left-handed coordinate system is defined by the orthogonal axes of latitude, longitude and ellipsoidal height. The latitude of a point is specified as an angle between the equatorial plane and a suitably chosen line thorough the point. The longitude of a point is specified as an angle between the local meridian of the point and the chosen reference meridian, measured in the equatorial plane. The height is the distance between a point and a vertical datum, such as the ellipsoidal surface associated with the geodetic datum.*) geodetic_datum : geodetic_datum (*<DESC>This is the geodetic datum that this geographic coordinate system is based upon. This defines the surface upon which the coordinate values in this coordinate system are expressed.*) (*<VERB>be based upon*); prime_meridian : prime_meridian (*<DESC>This is the prime meridian for the geographic coordinate system.*) (*<VERB>be based upon*); UNIQUE si : identifier; END_ENTITY; ADD ENTITY compound_coordinate_system SUBTYPE OF (coordinate_system); (*<POPULATION>OPEN*) (*<PROJMETH>CON*) (*<PROJNK>YES*) (*<DESC>This is a combination of two coordinate systems, a horizontal and a vertical coordinate system. The typical example is a 'geographic 2d' or a 'projected 2d' coordinate system, extended to become a 3d system by any gravity related or local vertical coordinate system (e.g. depths w.r.t. instantaneous sea level). However, it is also possible to define a 'local 2d' coordinate system, extended by a gravity related vertical component. An example of the latter would be a seismic bin grid system with Mean Sea Level referenced depths.*) geographic_system : OPTIONAL geographic_2d_coordinate_system (*<DESC>This is the 2D geographic system which forms the horizontal portion of the compound system.*) (*<VERB>be composed of*); projected_system : OPTIONAL projected_2d_coordinate_system (*<DESC>This is the 2D projected system which forms the horizontal portion of the compound system.*) (*<VERB>be composed of*); vertical_system : OPTIONAL vertical_coordinate_system (*<DESC>This is the system which forms the vertical 1D portion of the compound system.*) (*<VERB>be composed of*); local_system : OPTIONAL local_coordinate_system (*<DESC>This is the system which forms either the horizontal 2D or the vertical 1D portion of the compound system.*) (*<VERB>be composed of*); UNIQUE si : identifier; WHERE ose : NOT (EXISTS (geographic_system) AND EXISTS (projected_system)) (*<DESC>Each instance of COMPOUND COORDINATE SYSTEM may be composed of one and only one of GEOGRAPHIC SYSTEM or PROJECTED SYSTEM.*) (*<RULETYPE>OSE*); END_ENTITY; ADD ENTITY datum ABSTRACT SUPERTYPE OF (ONEOF(geodetic_datum, vertical_datum, local_vertical_datum)) SUBTYPE OF (earth_feature); (*<PROJMETH>REP*) (*<DESC>The abstract supertype of all horizontal and vertical datums.*) END_ENTITY; ALTER ENTITY vertical_datum DROP SUBTYPE OF (earth_feature) DROP SUPERTYPE OF (local_vertical_datum, geodetic_datum); (*<PROJMETH>TAB*) (*<PROJNK>YES*) (*<DESC>A set of fundamental elevations to which other earth based elevations or depths are referenced. These fundamental elevations are determined for a country or continent through measurements in a network of reference benchmarks which are connected to sea level.*) ADD datum_kind : ref_vertical_datum (*<DESC>This defines the type of vertical datum.*) (*<VERB>be a type of*); INVERSE DROP orient_axis; DROP datum_for_axis; DROP terminate_offset; DROP initiate_offset; DROP local_vertical_datum; DROP measured_depth_system_axis; DROP vertical_time_system_axis; ADD vertical_coordinate_system : SET[0:?] OF vertical_coordinate_system FOR vertical_datum (*<DESC>These are the vertical coordinate systems that use this vertical datum as their measurement datum.*) (*<VERB>be used by*); UNIQUE ADD si : identifier; END_ENTITY; ADD ENTITY ref_vertical_datum SUBTYPE OF (ref_code); (*<POPULATION>OPEN*) (*<PROJMETH>TAB*) (*<PROJNK>YES*) (*<DESC>This defines the types of vertical datums. Values of "geoidal", "ellipsoidal", "general vertical reference datum", or "unknown"*) (*<POPULATION>FIXED*) INVERSE vertical_datum : SET[0:?] OF vertical_datum FOR datum_kind (*<DESC>These are the instances which utilize the semantics of this instance.*) (*<VERB>be referenced by*); UNIQUE si : identifier; END_ENTITY; DROP ENTITY vertical_reference_datum (*<CHANGE>Moved up to Vertical_datum.*); ALTER ENTITY local_vertical_datum AS local_datum; (*<DESC>A vertical or horizontal datum defined as a reference surface passing through a point. It may be parallel to another datum at that point, or it may have an optional geometry.*) DROP vertical_datum; ALTER vertex ADD OPTIONAL; INVERSE ADD local_system : SET[0:?] OF local_coordinate_system FOR local_datum (*<DESC>These are the local coordinate systems which are based on this datum.*) (*<VERB>be used by*); END_ENTITY; ALTER ENTITY geodetic_datum; INVERSE DROP geoid_model; ALTER geographic_coordinate_system AS geographic_2D (*<DESC>This describes the geographic 2D coordinate systems that are based upon this geodetic datum.*); ADD geographic_3D : SET[0:?] OF geographic_3d_coordinate_system FOR geodetic_datum (*<DESC>This describes the geographic 3D coordinate systems that are based upon this geodetic datum.*) (*<VERB>be used to define*); END_ENTITY; ALTER ENTITY prime_meridian; INVERSE ALTER geographic_coordinate_system AS geographic_2D (*<DESC>These are the geographic 2D coordinate systems that use this prime meridian.*); ADD geographic_3D : SET[0:?] OF geographic_3d_coordinate_system FOR prime_meridian (*<DESC>These are the geographic 3D coordinate systems that use this prime meridian.*) (*<VERB>be used to define*); END_ENTITY; DROP ENTITY vertical_depth_system_axis (*<CHANGE>Moved to be an instance of Ref_axis_type.*); DROP ENTITY vertical_time_system_axis (*<CHANGE>Moved to be an instance of Ref_axis_type.*); DROP ENTITY measured_depth_system_axis (*<CHANGE>Moved to be an instance of Ref_axis_type.*); DROP ENTITY general_coordinate_system_axis (*<CHANGE>Moved to be an instance of Ref_axis_type.*); DROP ENTITY ref_vertical_axis_orientation (*<CHANGE>Moved to be an instance of Ref_axis_orientation.*); ALTER ENTITY ref_axis_orientation; (*<POPULATION>OPEN*) (*<DESC>The orientation of a coordinate axis. This may define the orientation in an Earth sense or relative to the preceding axes. For example, "east", "west", "north", "south", "upward", "downward", "right handed" and "left handed".*) (*<REMARK>We need to "un-deprecate" this entity.*) INVERSE DROP coordinate_system; END_ENTITY; ALTER ENTITY applied_coordinate_transformation ADD ABSTRACT DROP SUBTYPE OF (association_reference) ADD SUBTYPE OF (aliasable_technical_reference); (*<DESC>This describes a recognized transformation between two coordinate systems. The transformation may be simple or concatenated.*) DROP coordinate_transformation; UNIQUE ALTER si DROP coordinate_transformation ADD identifier FIRST; END_ENTITY; ADD ENTITY applied_simple_transformation SUBTYPE OF (applied_coordinate_transformation); (*<POPULATION>OPEN*) (*<PROJMETH>CON*) (*<DESC>An applied transformation which is represented by a single coordinate transformation.*) coordinate_transformation : coordinate_transformation (*<DESC>This defines the coordinate transformation which is used to transform the source coordinate system into the target coordinate system.*) (*<VERB>utilize*); INVERSE concatenated_transformation : SET[0:?] OF coordinate_transformation_concatenation FOR simple_transformation (*<DESC>These are the concatenated transformations which utilize this simple transformation.*) (*<VERB>be utilized by*); END_ENTITY; ADD ENTITY applied_concatenated_transformation SUBTYPE OF (applied_coordinate_transformation); (*<POPULATION>OPEN*) (*<PROJMETH>CON*) (*<DESC>An applied transformation which is represented by an ordered list of simple transformations.*) INVERSE simple_transformation : SET[2:?] OF coordinate_transformation_concatenation FOR concatenated_transformation (*<DESC>This is the ordered list of coordinate transformations are used to transform the source coordinate system into the target coordinate system. The transformations must be serially applied in the order defined by the apply order.*) (*<VERB>utilize*); WHERE val : EXISTS (simple_transformation) (*<DESC>For each instance of applied concatenated transformation, simple transformation must be specified.*) (*<RULETYPE>VAL*); END_ENTITY; ADD ENTITY coordinate_transformation_concatenation SUBTYPE OF (association_reference); (*<POPULATION>OPEN*) (*<PROJMETH>TAB*) (*<DESC>This association asserts that a simple transformation is utilized by a concatenated transformation.*) simple_transformation : applied_simple_transformation (*<DESC>This is the applied transformation which is part of the the concatenated transformation.*) (*<VERB>utilize*); concatenated_transformation : applied_concatenated_transformation (*<DESC>This is the concatenated transformation which is composed of the simple transformation.*) (*<VERB>be utilized by*); apply_order : ndt_pint1 (*<DESC>This is the order of application of the simple transformation within the context of the concatenated transformation. The first simple transformation should have a value of one.*); UNIQUE si : concatenated_transformation, simple_transformation; WHERE val : apply_order > 0 (*<DESC>The apply order must be greater than zero.*) (*<RULETYPE>VAL*); END_ENTITY; ALTER ENTITY coordinate_transformation; INVERSE ALTER applied_coordinate_transformation AS applied_transformation ALTER TYPE AS applied_simple_transformation; END_ENTITY; ALTER ENTITY coordinate_transformation_value; ADD vertex : OPTIONAL vertex (*<DESC>A vertex whose location is used as a coordinate transformation value.*) (*<VERB>use*); END_ENTITY; ALTER ENTITY vertex; INVERSE DROP coordinate_system; DROP vertical_datum_offset; ADD coordinate_transformation_value : SET[0:?] OF coordinate_transformation_value FOR vertex (*<DESC>These are coordinate transformation values which utilize the location of the vertex.*) (*<VERB>be used by*); END_ENTITY; END_CHANGE;