[Visual Basic 6.0]
Private Sub Test()
'Set up spatial references
Dim pSpatialReferenceEnv As SpatialReferenceEnvironment
Set pSpatialReferenceEnv = New SpatialReferenceEnvironment
Dim pFromSR As ISpatialReference
Set pFromSR = pSpatialReferenceEnv.CreateGeographicCoordinateSystem(esriSRGeoCS_NAD1983)
Dim pToSR As ISpatialReference
Set pToSR = pSpatialReferenceEnv.CreateProjectedCoordinateSystem(esriSRProjCS_NAD1983UTM_10N)
'Set up Point for transforming
Dim pPt As IPoint
Dim pT2D As ITransform2D
Set pPt = New Point
pPt.PutCoords -122, 37
Set pPt.SpatialReference = pFromSR
pPt.Project pToSR
Set pT2D = pPt
'Set up Comparison Point
'This is the point the transformation should result in
Dim pPt2 As IPoint
Set pPt2 = New Point
pPt2.PutCoords -121, 42
Set pPt2.SpatialReference = pFromSR
pPt2.Project pToSR
'Transform
Dim pA2D2 As IAffineTransformation2D2
Dim pA2D As IAffineTransformation2D
Dim pOrigin As IPoint
' Set up Affine Transformation
' MoveOrigin is at the same location as the Point to be transformed: Yields accurate results
Set pA2D2 = New AffineTransformation2D
pA2D2.Move 1, 5
Set pA2D = pA2D2
Set pOrigin = New Point
pOrigin.PutCoords -122, 37
pA2D.MoveOrigin = pOrigin
Set pA2D.SpatialReference = pFromSR
pA2D.Project pToSR
' Transform and report results
Debug.Print "----Using MoveOrigin at the same location as the Point to be transformed----"
Debug.Print "A2D XTrans: " & pA2D.XTranslation & ", YTrans: " & pA2D.YTranslation
Debug.Print "A2D MoveOrigin X: " & pA2D2.MoveOrigin.x & ", Y: " & pA2D2.MoveOrigin.y
Debug.Print "Before Trans, Point X:" & pPt.x & ", Y:" & pPt.y
pT2D.Transform esriTransformForward, pA2D
Debug.Print "After Trans, Point X:" & pPt.x & ", Y:" & pPt.y
Debug.Print "Comparison, Point X:" & pPt2.x & ", Y:" & pPt2.y
Debug.Print "Did X coordinates match? " & (pPt.x = pPt2.x)
Debug.Print "Did Y coordinates match? " & (pPt.y = pPt2.y)
' Set up Affine Transformation
' MoveOrigin is at a slightly different location: Yields slightly inaccurate results
Set pA2D2 = New AffineTransformation2D
pA2D2.Move 1, 5
Set pA2D = pA2D2
Set pOrigin = New Point
pOrigin.PutCoords -125, 35
pA2D.MoveOrigin = pOrigin
Set pA2D.SpatialReference = pFromSR< BR > pA2D.Project pToSR
' Transform and report results
Debug.Print "----Using MoveOrigin at a slightly different location----"
Debug.Print "A2D XTrans: " & pA2D.XTranslation & ", YTrans: " & pA2D.YTranslation
Debug.Print "A2D MoveOrigin X: " & pA2D2.MoveOrigin.x & ", Y: " & pA2D2.MoveOrigin.y
Debug.Print "Before Trans, Point X:" & pPt.x & ", Y:" & pPt.y
pT2D.Transform esriTransformForward, pA2D
Debug.Print "After Trans, Point X:" & pPt.x & ", Y:" & pPt.y
Debug.Print "Comparison, Point X:" & pPt2.x & ", Y:" & pPt2.y
Debug.Print "Did X coordinates match? " & (pPt.x = pPt2.x)
Debug.Print "Did Y coordinates match? " & (pPt.y = pPt2.y)
End Sub
[C#]public void Driver()
{
Test(-122, 37);
// MoveOrigin is at a slightly different location: Yields slightly inaccurate results
Test(-125, 35);
}
private void Test(double originX, double originY)
{
//Set up spatial references
SpatialReferenceEnvironment spatialReferenceEnvironemnt = new SpatialReferenceEnvironment();ISpatialReference fromSpatialReference = spatialReferenceEnvironemnt.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_NAD1983);
ISpatialReference toSpatialReference = spatialReferenceEnvironemnt.CreateProjectedCoordinateSystem((int)esriSRProjCSType.esriSRProjCS_NAD1983UTM_10N);//Set up Point for transforming
IPoint point = new PointClass();
point.PutCoords(-122, 37);point.SpatialReference = fromSpatialReference;
point.Project(toSpatialReference);
ITransform2D transformator = point as ITransform2D;//up Comparison Point
//This is the point the transformation should result in
IPoint comparisonPoint = new PointClass();
comparisonPoint.PutCoords(-121, 42);
comparisonPoint.SpatialReference = fromSpatialReference;
comparisonPoint.Project(toSpatialReference);//Transform//Set up Affine Transformation
//MoveOrigin is at the same location as the Point to be transformed: Yields accurate results
IAffineTransformation2D2 affineTranformation = new AffineTransformation2DClass() as IAffineTransformation2D2;
affineTranformation.Move(1, 5);
IPoint origin = new PointClass();
origin.PutCoords(originX, originY);
affineTranformation.MoveOrigin = origin;
affineTranformation.SpatialReference = fromSpatialReference;
affineTranformation.Project(toSpatialReference);//Transform and report results
System.Windows.Forms.MessageBox.Show(
"A2D XTrans: " + affineTranformation.XTranslation + ", YTrans: " + affineTranformation.YTranslation + "\n" +
"A2D MoveOrigin X: " + affineTranformation.MoveOrigin_2.X + ", Y: " + affineTranformation.MoveOrigin_2.Y + "\n" +
"Before Trans, Point X:" + point.X + ", Y:" + point.Z
);transformator.Transform(esriTransformDirection.esriTransformForward, affineTranformation);
System.Windows.Forms.MessageBox.Show(
"After Trans, Point X:" + point.X + ", Y:" + point.Y + "\n" +
"Comparison, Point X:" + comparisonPoint.X + ", Y:" + comparisonPoint.Y + "\n" +
"Did X coordinates match? " + (point.X == comparisonPoint.X) + "\n" +
"Did Y coordinates match? " + (point.Y == comparisonPoint.Y)
);}
[Visual Basic .NET, C++]
No example is available for Visual Basic .NET or C++. To view a Visual Basic 6.0 or C# example, click the Language Filter button
in the upper-left corner of the page.