Click or drag to resize

DatumTransformation Class

Represents a function to convert between two coordinate systems.
Inheritance Hierarchy

Namespace:  Esri.ArcGISRuntime.Geometry
Assembly:  Esri.ArcGISRuntime (in Esri.ArcGISRuntime.dll) Version: 100.9.0
public abstract class DatumTransformation

The DatumTransformation type exposes the following members.

Public propertyInputSpatialReference
Gets the input SpatialReference.
Public propertyIsMissingProjectionEngineFiles
Gets true if the dataset needed by the Projection Engine is missing locally.
Public propertyCode exampleName
Returns the name of the datum transformation.
Public propertyOutputSpatialReference
Gets the output SpatialReference.
Public methodGetInverse
Returns the inverse of this datum transformation or null if the transformation is not invertible.
Public methodIsEqual
Returns true if the two transformations are equal, false otherwise.

This is the base class for classes used to transform coordinates between spatial references that have different datums. The inverse of the datum transformation, used to transform in the opposite direction, may be accessed using a member function.

A datum transformation has a Name property intended to be suitable for display, such as when displaying a list of available transformations to an end user.

You can get a list of suitable transformations for a given input and output spatial reference using methods of the TransformationCatalog class. Some transformations require that certain Projection Engine data files be present on the local file system. The property IsMissingProjectionEngineFiles indicates whether any of the files are missing. The complete list of necessary files is available using the ProjectionEngineFilenames property.

In order for any Projection Engine files to be found, the data location must be set first using the ProjectionEngineDirectory property.

A datum transformation object is immutable.



Example Name: ProjectWithSpecificTransformation

Project a point from one coordinate system to another using a specific transformation step.

Code example screen shot.

// Copyright 2018 Esri.
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
// You may obtain a copy of the License at:
// Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific
// language governing permissions and limitations under the License.

using Esri.ArcGISRuntime.Geometry;
using System;

namespace ArcGISRuntime.WPF.Samples.ProjectWithSpecificTransformation
        name: "Project with specific transformation",
        category: "Geometry",
        description: "Project a point from one coordinate system to another using a specific transformation step.",
        instructions: "View the values for: unprojected point, projected with the GeometryEngine default, and projected with a specific transformation step.",
        tags: new[] { "coordinate system", "geographic", "project", "projection", "transform", "transformation", "transformation step" })]
    public partial class ProjectWithSpecificTransformation
        public ProjectWithSpecificTransformation()


        private void Initialize()
            // Create a point geometry in NYC in WGS84
            MapPoint startingPoint = new MapPoint(-73.984513, 40.748469, SpatialReferences.Wgs84);

            // Update the UI with the initial coordinates
            BeforeLabel.Content = String.Format("x: {0}, y: {1}", startingPoint.X, startingPoint.Y);

            // Create a geographic transformation step for transform WKID 108055, WGS_1984_To_MSK_1942
            GeographicTransformationStep geoStep = new GeographicTransformationStep(108055);

            // Create the transformation
            GeographicTransformation geoTransform = new GeographicTransformation(geoStep);

            // Project to a coordinate system used in New York, NAD_1983_HARN_StatePlane_New_York_Central_FIPS_3102
            MapPoint afterPoint = (MapPoint)GeometryEngine.Project(startingPoint, SpatialReference.Create(2829), geoTransform);

            // Update the UI with the projected coordinates
            AfterLabel.Content = String.Format("x: {0}, y: {1}", afterPoint.X, afterPoint.Y);

            // Perform the same projection without specified transformation
            MapPoint unspecifiedTransformPoint = (MapPoint)GeometryEngine.Project(startingPoint, SpatialReference.Create(2829));

            // Update the UI with the projection done without specific transform for comparison purposes
            NonSpecificLabel.Content = String.Format("x: {0}, y: {1}", unspecifiedTransformPoint.X, unspecifiedTransformPoint.Y);
<UserControl x:Class="ArcGISRuntime.WPF.Samples.ProjectWithSpecificTransformation.ProjectWithSpecificTransformation"
        <Label Content="Geometry before (WGS 84):" />
        <Label x:Name="BeforeLabel" />
        <Label Content="Geometry to NAD_1983_HARN_StatePlane_New_York_Central_FIPS_3102 after WGS_1984_To_MSK_1942:" />
        <Label x:Name="AfterLabel" />
        <Label Content="Geometry to NAD_1983_HARN_StatePlane_New_York_Central_FIPS_3102 after (without specific transform)" />
        <Label x:Name="NonSpecificLabel" />
See Also
Additional Examples
Hyperlink to ExampleDescription
ListTransformationsGet a list of suitable transformations for projecting a geometry between two spatial references with different horizontal datums.
ProjectWithSpecificTransformationProject a point from one coordinate system to another using a specific transformation step.