DatumOperation

Description

sealed class Tinman.Terrain.Georef.DatumOperation

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:

  1. The operation with the best Accuracy (i.e., having the lowest value greater than zero) is used.

  2. The operation with the same source and target geographic unit is used (avoiding numeric conversion), see CoordinateSystem.GeographicUnit.

  3. 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 / Constructors

Datum​Operation


public constructor DatumOperation → (5)

source in : CoordinateSystem

[not-null]
The source coordinate system.

target in : CoordinateSystem

[not-null]
The target coordinate system.

transform in : IDatumTransform

[not-null]
The datum transformation.

accuracy in : float64

The accuracy of the coordinate operation.

name opt : string = null

Human-readable name of the geo object. If empty, null will be used instead.

Creates a new instance of DatumOperation.

Public / Methods

Transform​For


public method TransformFor → (3)

source in : CoordinateSystem

[not-null]
The source coordinate system.

target in : CoordinateSystem

[not-null]
The target coordinate system.

reverse opt : bool = true

Allow use of IDatumTransform.Reverse to return a datum transformation if source and target are swapped?

returns → IDatumTransform

The found datum transformation, which may be Transform, a variation of it or null.

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:

Public / Attributes

Accuracy


public attribute Accuracy → (get)

value : float64

[>=0]
The accuracy, given in UnitOfMeasure.Metre. Will be 0 if the accuracy is not known or unspecified.

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.

Source


public attribute Source → (get)

value : CoordinateSystem

[not-null]
The coordinate system (geographic and/or vertical).

The source coordinate system.

Target


public attribute Target → (get)

value : CoordinateSystem

[not-null]
The coordinate system (geographic and/or vertical).

The target coordinate system.

Transform


public attribute Transform → (get)

value : IDatumTransform

[not-null]
The datum transformation.

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:

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.

Configuration

Config


public static attribute Config → (get)

value : IConfigurator<DatumOperation>

[not-null]
The configurator object.

The configurator object for this type.

Serialization

Serial​Id


public static readonly attribute SerialId → (ISerialTypeInfo)

Serialization information about this type.