ArcGIS Pro 2.7 API Reference Guide
FindTransformations Method
Example 

ArcGIS.Core.Geometry Namespace > ProjectionTransformation Class : FindTransformations Method
The input spatial reference.
The output spatial reference.
(Optional) The bounding box of the area of interest. If provided, the extent of interest is used to return the most applicable transformations for the area. The spatial reference for the extent of interest is assumed to be the inputSR. The default value is null.
(Optional) The number of transformations to return. If numResults has a value of -1, then all applicable transformations are returned. The default value is 1.
(Optional) Specifies whether to check for vertical transformations or not. If vertical is set to true, both inputSR and outputSR must have a vertical coordinate system. The transformation in each ProjectionTransformation in the list is a CompositeHVDatumTransformation in this case. If vertical is set to false, the transformation in each ProjectionTransformation in the list is a CompositeGeographicTransformation. The default value is false.
Gets a list of applicable transformations to use when projecting geometries from the input spatial reference to the output spatial reference.
Syntax
Public Shared Function FindTransformations( _
   ByVal inputSR As SpatialReference, _
   ByVal outputSR As SpatialReference, _
   Optional ByVal extentOfInterest As Envelope, _
   Optional ByVal numResults As Integer, _
   Optional ByVal vertical As Boolean _
) As List(Of ProjectionTransformation)

Parameters

inputSR
The input spatial reference.
outputSR
The output spatial reference.
extentOfInterest
(Optional) The bounding box of the area of interest. If provided, the extent of interest is used to return the most applicable transformations for the area. The spatial reference for the extent of interest is assumed to be the inputSR. The default value is null.
numResults
(Optional) The number of transformations to return. If numResults has a value of -1, then all applicable transformations are returned. The default value is 1.
vertical
(Optional) Specifies whether to check for vertical transformations or not. If vertical is set to true, both inputSR and outputSR must have a vertical coordinate system. The transformation in each ProjectionTransformation in the list is a CompositeHVDatumTransformation in this case. If vertical is set to false, the transformation in each ProjectionTransformation in the list is a CompositeGeographicTransformation. The default value is false.

Return Value

Exceptions
ExceptionDescription
inputSR or outputSR is null.
The vertical parameter is set to true and inputSR or outputSR does not have a vertical coordinate system.
Remarks
A geographic transformation is not needed when the input and output spatial references have the same underlying geographic coordinate systems. A vertical transformation is not needed if both datums (for ellipsoidal heights) or vertical datums (for gravity-related heights) are the same. In these cases an empty list is returned.
Example
// methods need to run on the MCT
ArcGIS.Desktop.Framework.Threading.Tasks.QueuedTask.Run(() =>
{
  //
  // find the first transformation used between spatial references 4267 and 4326
  //
  SpatialReference sr4267 = SpatialReferenceBuilder.CreateSpatialReference(4267);
  SpatialReference sr4326 = SpatialReferences.WGS84;

  List<ProjectionTransformation> transformations = ProjectionTransformation.FindTransformations(sr4267, sr4326);
  // transformations.Count = 1
  ProjectionTransformation projTrans = transformations[0];
  CompositeGeographicTransformation compositeGT = projTrans.Transformation as CompositeGeographicTransformation;
  GeographicTransformation gt = compositeGT[0];
  // gt.Wkid = 15851
  // gt.Name = "NAD_1927_To_WGS_1984_79_CONUS"
  // gt.IsForward = true


  //
  // find the first five transformation used between spatial references 4267 and 4326
  //
  transformations = ProjectionTransformation.FindTransformations(sr4267, sr4326, numResults: 5);
  // transformations.Count = 5
  projTrans = transformations[0];
  compositeGT = projTrans.Transformation as CompositeGeographicTransformation;
  // compositeGT.Count = 1
  // compositeGT[0].Wkid = 15851
  // compositeGT[0].Name = "NAD_1927_To_WGS_1984_79_CONUS"
  // compositeGT[0].IsForward = true

  projTrans = transformations[1];
  compositeGT = projTrans.Transformation as CompositeGeographicTransformation;
  // compositeGT.Count = 1
  // compositeGT[0].Wkid = 1173
  // compositeGT[0].Name = "NAD_1927_To_WGS_1984_4"
  // compositeGT[0].IsForward = true

  projTrans = transformations[2];
  compositeGT = projTrans.Transformation as CompositeGeographicTransformation;
  // compositeGT.Count = 1
  // compositeGT[0].Wkid = 1172
  // compositeGT[0].Name = "NAD_1927_To_WGS_1984_3"
  // compositeGT[0].IsForward = true

  projTrans = transformations[3];
  compositeGT = projTrans.Transformation as CompositeGeographicTransformation;
  // compositeGT.Count = 2
  // compositeGT[0].Wkid = 1241
  // compositeGT[0].Name = "NAD_1927_To_NAD_1983_NADCON"
  // compositeGT[0].IsForward = true

  // compositeGT[1].Wkid = 108190
  // compositeGT[1].Name = "WGS_1984_(ITRF00)_To_NAD_1983"
  // compositeGT[1].IsForward = false

  projTrans = transformations[4];
  compositeGT = projTrans.Transformation as CompositeGeographicTransformation;
  // compositeGT.Count = 2
  // compositeGT[0].Wkid = 1241
  // compositeGT[0].Name = "NAD_1927_To_NAD_1983_NADCON"
  // compositeGT[0].IsForward = true

  // compositeGT[1].Wkid = 1515
  // compositeGT[1].Name = "NAD_1983_To_WGS_1984_5"
  // compositeGT[1].IsForward = true


  //
  // find the first transformation used between spatial references 4267 and 4326 within Alaska
  //

  // Alaska
  Envelope envelope = EnvelopeBuilder.CreateEnvelope(-161, 61, -145, 69);
  transformations = ProjectionTransformation.FindTransformations(sr4267, sr4326, envelope);
  // transformations.Count = 1
  projTrans = transformations[0];
  compositeGT = projTrans.Transformation as CompositeGeographicTransformation;
  // compositeGT.Count = 2
  // compositeGT[0].Wkid = 1243
  // compositeGT[0].Name = "NAD_1927_To_NAD_1983_Alaska"
  // compositeGT[0].IsForward = true

  // compositeGT[1].Wkid = 108190
  // compositeGT[1].Name = "WGS_1984_(ITRF00)_To_NAD_1983"
  // compositeGT[1].IsForward = false


  //
  // find the first geographic transformation used between two spatial references with VCS  (use vertical = false)
  //

  SpatialReference inSR = SpatialReferenceBuilder.CreateSpatialReference(4269, 115702);
  SpatialReference outSR = SpatialReferenceBuilder.CreateSpatialReference(4326, 3855);

  // Even though each spatial reference has a VCS, vertical = false should return geographic transformations.
  transformations = ProjectionTransformation.FindTransformations(inSR, outSR);
  // transformations.Count = 1
  projTrans = transformations[0];
  compositeGT = projTrans.Transformation as CompositeGeographicTransformation;
  // compositeGT.Count = 1
  // compositeGT[0].Wkid = 108190
  // compositeGT[0].Name = ""WGS_1984_(ITRF00)_To_NAD_1983"
  // compositeGT[0].IsForward = false


  //
  // find the first vertical transformation used between two spatial references with VCS  (use vertical = true)
  //

  transformations = ProjectionTransformation.FindTransformations(inSR, outSR, vertical: true);
  // transformations.Count = 1
  projTrans = transformations[0];

  CompositeHVDatumTransformation compositeHV = projTrans.Transformation as CompositeHVDatumTransformation;
  // compositeHV.Count = 2
  // compositeHV[0].Wkid = 1188
  // compositeHV[0].Name = "NAD_1983_To_WGS_1984_1"
  // compositeHV[0].IsForward = true

  // compositeHV[1].Wkid = 110019
  // compositeHV[1].Name = "WGS_1984_To_WGS_1984_EGM2008_2.5x2.5_Height"
  // compositeHV[1].IsForward = true
});
Requirements

Target Platforms: Windows 10, Windows 8.1

See Also

Reference

ProjectionTransformation Class
ProjectionTransformation Members