Click or drag to resize

GeographicTransformationStep Class

Represents a step in the process of transforming between datums.
Inheritance Hierarchy
SystemObject
  Esri.ArcGISRuntime.GeometryGeographicTransformationStep

Namespace:  Esri.ArcGISRuntime.Geometry
Assembly:  Esri.ArcGISRuntime (in Esri.ArcGISRuntime.dll) Version: 100.9.0
Syntax
public sealed class GeographicTransformationStep : IEquatable<GeographicTransformationStep>

The GeographicTransformationStep type exposes the following members.

Constructors
  NameDescription
Public methodCode exampleGeographicTransformationStep(Int32)
Initializes a new instance of the GeographicTransformationStep class from a Well-Known ID.
Public methodGeographicTransformationStep(String)
Initializes a new instance of the GeographicTransformationStep class from a Well-Known Text string.
Top
Properties
  NameDescription
Public propertyIsMissingProjectionEngineFiles
Gets a value indicating (true) if any files needed by the Projection Engine for this geographic transformation step are missing from the local file system.
Public propertyProjectionEngineFilenames
Gets a read-only list of Projection Engine files required to support this geographic transformation step.
Public propertyWkid
Gets the Well-Known ID or 0 if the transformation in this step doesn't have a Well-Known ID.
Public propertyWkText
Gets the Well-Known Text of the geographic transformation step.
Top
Methods
  NameDescription
Public methodEquals(Object)
Returns a value indicating if the two objects are equal.
(Overrides ObjectEquals(Object).)
Public methodEquals(GeographicTransformationStep)
Returns true if the two transformation steps are equal, false otherwise.
Public methodGetHashCode
Serves as the hash function for the class.
(Overrides ObjectGetHashCode.)
Public methodGetInverse
Returns the inverse of the geographic transformation step or NULL if the transformation is not invertible.
Top
Remarks

Each geographic transformation step can be constructed from a well-known ID (WKID) that represents a geographic transformation. Because the Projection Engine supports thousands of transformations, WKIDs are not presented in the SDK as enumerations. Instead, they are documented in the guide and online.

The list of supported WKIDs includes a transformation from every supported datum to WGS 1984. Additionally, there is more limited list of transformations directly between two non-WGS84 datums, such as 4461, which is NAD_1983_HARN_To_NAD_1983_NSRS2007_1.

Transformations with more than one step typically go via WGS84, with one forward and one inverse geographic transformation chained together to get the required geographic coordinates.

A geographic transformation step object is immutable.

Examples

WPF

Example Name: ProjectWithSpecificTransformation

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

Code example screen shot.

C#
// 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: http://www.apache.org/licenses/LICENSE-2.0
// 
// 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
{
    [ArcGISRuntime.Samples.Shared.Attributes.Sample(
        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()
        {
            InitializeComponent();

            Initialize();
        }

        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);
        }
    }
}
XAML
<UserControl x:Class="ArcGISRuntime.WPF.Samples.ProjectWithSpecificTransformation.ProjectWithSpecificTransformation"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <StackPanel>
        <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" />
    </StackPanel>
</UserControl>
See Also
Additional Examples
Hyperlink to ExampleDescription
ProjectWithSpecificTransformationProject a point from one coordinate system to another using a specific transformation step.