!! File CoordSys.ili Release 2015-11-23 INTERLIS 2.2; !! 2015-11-24 Cardinalities adapted (line 114, 115, 116, 124, 125, 126, 134, 135, !! 149, 150, 154, 155, 159, 160, 197 and 198) !!@precursorVersion = 2003-03-18 REFSYSTEM MODEL CoordSys (en) = !! 2-letter code (ISO 639) UNIT Angle_Degree = 180 / PI [INTERLIS.rad]; Angle_Minute = 1 / 60 [Angle_Degree]; Angle_Second = 1 / 60 [Angle_Minute]; Angle_DMS = {Angle_Degree:Angle_Minute[0 .. 59]:Angle_Second[0 .. 59]} CONTINUOUS; TOPIC CoordsysTopic = !! Special space aspects to be referenced !! ************************************** CLASS Ellipsoid EXTENDS INTERLIS.REFSYSTEM = EllipsoidAlias: TEXT*70; SemiMajorAxis: MANDATORY 6360000.0000 .. 6390000.0000 [INTERLIS.m]; InverseFlattening: MANDATORY 0.00000000 .. 350.00000000; !! The inverse flattening 0 characterizes the 2-dim sphere Remarks: TEXT*70; END Ellipsoid; CLASS GravityModel EXTENDS INTERLIS.REFSYSTEM = GravityModAlias: TEXT*70; Definition: TEXT*70; END GravityModel; CLASS GeoidModel EXTENDS INTERLIS.REFSYSTEM = GeoidModAlias: TEXT*70; Definition: TEXT*70; END GeoidModel; !! Coordinate systems for geodetic purposes !! **************************************** STRUCTURE LengthAXIS EXTENDS INTERLIS.AXIS = ShortName: TEXT*12; Description: TEXT*255; PARAMETER Unit (EXTENDED): NUMERIC [INTERLIS.LENGTH]; END LengthAXIS; STRUCTURE AngleAXIS EXTENDS INTERLIS.AXIS = ShortName: TEXT*12; Description: TEXT*255; PARAMETER Unit (EXTENDED): NUMERIC [INTERLIS.ANGLE]; END AngleAXIS; CLASS GeoCartesian1D EXTENDS INTERLIS.COORDSYSTEM = Axis (EXTENDED): LIST {1} OF LengthAXIS; END GeoCartesian1D; CLASS GeoHeight EXTENDS GeoCartesian1D = System: MANDATORY ( normal, orthometric, ellipsoidal, other); ReferenceHeight: MANDATORY -10000.000 .. +10000.000 [INTERLIS.m]; ReferenceHeightDescr: TEXT*70; END GeoHeight; ASSOCIATION HeightEllips = GeoHeightRef -- {*} GeoHeight; EllipsoidRef -- {1} Ellipsoid; END HeightEllips; ASSOCIATION HeightGravit = GeoHeightRef -- {*} GeoHeight; GravityRef -- {1} GravityModel; END HeightGravit; ASSOCIATION HeightGeoid = GeoHeightRef -- {*} GeoHeight; GeoidRef -- {1} GeoidModel; END HeightGeoid; CLASS GeoCartesian2D EXTENDS INTERLIS.COORDSYSTEM = Definition: TEXT*70; Axis (EXTENDED): LIST {2} OF LengthAXIS; END GeoCartesian2D; CLASS GeoCartesian3D EXTENDS INTERLIS.COORDSYSTEM = Definition: TEXT*70; Axis (EXTENDED): LIST {3} OF LengthAXIS; END GeoCartesian3D; CLASS GeoEllipsoidal EXTENDS INTERLIS.COORDSYSTEM = Definition: TEXT*70; Axis (EXTENDED): LIST {2} OF AngleAXIS; END GeoEllipsoidal; ASSOCIATION EllCSEllips = GeoEllipsoidalRef -- {*} GeoEllipsoidal; EllipsoidRef -- {1} Ellipsoid; END EllCSEllips; !! Mappings between coordinate systems !! *********************************** ASSOCIATION ToGeoEllipsoidal = From -- {0..*} GeoCartesian3D; To -- {0..*} GeoEllipsoidal; ToHeight -- {0..*} GeoHeight; MANDATORY CONSTRAINT ToHeight -> System == #ellipsoidal; MANDATORY CONSTRAINT To -> EllipsoidRef -> Name == ToHeight -> EllipsoidRef -> Name; END ToGeoEllipsoidal; ASSOCIATION ToGeoCartesian3D = From2 -- {0..*} GeoEllipsoidal; FromHeight-- {0..*} GeoHeight; To3 -- {0..*} GeoCartesian3D; MANDATORY CONSTRAINT FromHeight -> System == #ellipsoidal; MANDATORY CONSTRAINT From2 -> EllipsoidRef -> Name == FromHeight -> EllipsoidRef -> Name; END ToGeoCartesian3D; ASSOCIATION BidirectGeoCartesian3D = From -- {0..*} GeoCartesian3D; To2 -- {0..*} GeoCartesian3D; Precision: MANDATORY ( exact, measure_based); ShiftAxis1: MANDATORY -10000.000 .. 10000.000 [INTERLIS.m]; ShiftAxis2: MANDATORY -10000.000 .. 10000.000 [INTERLIS.m]; ShiftAxis3: MANDATORY -10000.000 .. 10000.000 [INTERLIS.m]; RotationAxis1: -90:00:00.000 .. 90:00:00.000 [Angle_DMS]; RotationAxis2: -90:00:00.000 .. 90:00:00.000 [Angle_DMS]; RotationAxis3: -90:00:00.000 .. 90:00:00.000 [Angle_DMS]; NewScale: 0.000001 .. 1000000.000000; END BidirectGeoCartesian3D; ASSOCIATION BidirectGeoCartesian2D = From -- {0..*} GeoCartesian2D; To -- {0..*} GeoCartesian2D; END BidirectGeoCartesian2D; ASSOCIATION BidirectGeoEllipsoidal = From4 -- {0..*} GeoEllipsoidal; To4 -- {0..*} GeoEllipsoidal; END BidirectGeoEllipsoidal; ASSOCIATION MapProjection (ABSTRACT) = From5 -- {0..*} GeoEllipsoidal; To5 -- {0..*} GeoCartesian2D; FromCo1_FundPt: MANDATORY -90:00:00.00 .. +90:00:00.00 [Angle_DMS]; FromCo2_FundPt: MANDATORY -90:00:00.00 .. +90:00:00.00 [Angle_DMS]; ToCoord1_FundPt: MANDATORY -10000000 .. +10000000 [INTERLIS.m]; ToCoord2_FundPt: MANDATORY -10000000 .. +10000000 [INTERLIS.m]; END MapProjection; ASSOCIATION TransverseMercator EXTENDS MapProjection = END TransverseMercator; ASSOCIATION SwissProjection EXTENDS MapProjection = IntermFundP1: MANDATORY -90:00:00.00 .. +90:00:00.00 [Angle_DMS]; IntermFundP2: MANDATORY -90:00:00.00 .. +90:00:00.00 [Angle_DMS]; END SwissProjection; ASSOCIATION Mercator EXTENDS MapProjection = END Mercator; ASSOCIATION ObliqueMercator EXTENDS MapProjection = END ObliqueMercator; ASSOCIATION Lambert EXTENDS MapProjection = END Lambert; ASSOCIATION Polyconic EXTENDS MapProjection = END Polyconic; ASSOCIATION Albus EXTENDS MapProjection = END Albus; ASSOCIATION Azimutal EXTENDS MapProjection = END Azimutal; ASSOCIATION Stereographic EXTENDS MapProjection = END Stereographic; ASSOCIATION HeightConversion = FromHeight -- {0..*} GeoHeight; ToHeight -- {0..*} GeoHeight; Definition: TEXT*70; END HeightConversion; END CoordsysTopic; END CoordSys.