DatumOperation
Description
- Derived from
-
GeoObject abstract
IConfigurableNull
Describes a well-known coordinate operation that converts between coordinate systems that have different geodetic and/or vertical datums.
For a given pair of source and target coordinate systems, more than one DatumOperation instances may be applicable. In such a case, the following criteria are used to select an optimal one:
-
The operation with the best Accuracy (i.e., having the lowest value greater than zero) is used.
-
The operation with the same source and target geographic unit is used (avoiding numeric conversion), see CoordinateSystem.GeographicUnit.
-
The operation with the same source and target vertical unit is used (avoiding numeric conversion), see CoordinateSystem.VerticalUnit.
The IGeoRegistry.LookupDatumOperation method uses the above logic when querying the DatumOperation instances in the IGeoRegistry. The returned IDatumTransform object will make use of Transform, possibly wrapping it in order to apply unit conversion and/or CoordinateSystemFlags.InverseZ.
Public / Methods
TransformFor
Tries to find a datum transformation between the given coordinate systems.
Based on Source, Target and Transform (which define a viable combination), this method tries to derive a suitable transform as follows:
-
CoordinateSystem.GeographicUnit, CoordinateSystem.Projection, CoordinateSystem.ProjectionUnit and CoordinateSystemFlags.MaskXY are ignored, because these are already handled by ICoordinateTransform.MapToGeographic and ICoordinateTransform.GeographicToMap, which wrap IDatumTransform.Transform.
-
If necessary, CoordinateSystemFlags.MaskZ and CoordinateSystem.VerticalUnit are used to create a variation of Transform, which performs the required value scaling.
-
Both CoordinateSystem.Geographic / CoordinateSystem.IsGeographic and CoordinateSystem.Vertical / CoordinateSystem.IsVertical must be equivalent for source in and target in, with respect to Source and Target.
Public / Attributes
Accuracy
The accuracy of the coordinate operation.
The accuracy gives the spatial (geocentric) error that must be tolerated when using the coordinate operation. Numeric precision issues have no significant influence on the error. Instead, the error results from the used formulae, which usually represent an approximation for a specific area of interest and use-case.
Transform
The datum transformation.
The ICoordinateTransform.MapToGeographic method of CoordinateSystem.CreateCoordinateTransform of Source may be used to convert source coordinates to input coordinates of IDatumTransform.Transform. Analogously, the ICoordinateTransform.GeographicToMap method of Target may be used to convert output coordinates to target coordinates.
The input and output vertical coordinates of IDatumTransform.Transform are interpreted according to CoordinateSystem.VerticalUnit and CoordinateSystemFlags.InverseZ of Source and Target, respectively.
The DatumOperation class can describe the following kinds of datum operations:
-
A: Geographic Transformation (2D)
Both Source and Target are 2D geographic coordinate systems, i.e. CoordinateSystem.IsGeographic returnstrueand CoordinateSystem.IsVertical returnsfalse. Transform modifies latitude and longitude, i.e. IDatumTransform.IsVertical returnsfalse. -
B: Geographic Transformation (3D)
Both Source and Target are 3D geographic coordinate systems, i.e. CoordinateSystem.IsGeographic returnstrueand CoordinateSystem.IsVertical returnstrue. Transform modifies latitude, longitude and the vertical coordinate, i.e. IDatumTransform.IsVertical returnsfalse. -
C: Vertical Transformation
Source is either a 3D geographic coordinate system, i.e. CoordinateSystem.IsGeographic returnstrueand CoordinateSystem.IsVertical returnstrue, or a pure vertical coordinate system, i.e. CoordinateSystem.IsGeographic returnsfalseand CoordinateSystem.IsVertical returnstrue. Target is a pure vertical coordinate system. Transform modifies only the vertical coordinate, i.e. IDatumTransform.IsVertical returnstrue. -
D: Vertical Transformation using Geodetic Datum
Source is a 2D geographic coordinate system, i.e. CoordinateSystem.IsGeographic returnstrueand CoordinateSystem.IsVertical returnsfalse. Target is a pure vertical coordinate system, i.e. CoordinateSystem.IsGeographic returnsfalseand CoordinateSystem.IsVertical returnstrue. Transform consumes the source latitude and longitude and modifies only the vertical coordinate, i.e. IDatumTransform.IsVertical returnstrue.
For 2D geographic coordinate systems and their respective 3D ellipsoid-height counterparts, implicit conversions are used (see TransformFor), which ignore the unused vertical coordinate or set the missing vertical coordinate to zero.
- See also