我正在做一个项目,在该项目中我需要计算 CRS 上的点到另一个,但是因为我们的源 CRS 和目标 CRS 仅在运行时确定。
ISpatialReference source = GCS_North_American_1983
ISpatialReference target = UTM Zone 13 North (108 W - 102 W Longitude)
IEnvelope extent = rasterLayer.VisibleExtent;
Console.WriteLine(extent.XMax); == -97.815540361118
Console.WriteLine(extent.XMin); == -102.045540576002
Console.WriteLine(extent.YMax); == 39.933228902485
Console.WriteLine(extent.YMin); == 37.113228759229
IGeoTransformation geoTransformation = "NAD_1927_To_NAD_1983_NADCON"
geoTransformationOperationSet.Set(esriTransformDirection.esriTransformForward, geoTransformation);
geoTransformationOperationSet.Set(esriTransformDirection.esriTransformReverse, geoTransformation);
//所以我们需要按相反的顺序进行。因为源在 NAD83 中,目标在 NAD27 中。并返回与 ArcMap 匹配的正确结果,但前进结果错误输出。
geometry.ProjectEx(target, esriTransformDirection.esriTransformReverse, geoTransformation, false, 0.0, 0.0);
Console.WriteLine(extent.XMax); == 1138797.89197912
Console.WriteLine(extent.XMin); == 752503.366222885
Console.WriteLine(extent.YMax); == 4444925.18943959
Console.WriteLine(extent.YMin); == 4111314.85519851
如果我们进行正向变换返回不正确的结果。
1138738.17611084
752424.161510695
4444923.04572637
4111317.16066915
那么如何确定我们需要使用哪个方向呢?像前进/后退。有什么方法可以使用 arcobject API 返回使用 fwd 或 reverse。我调查了IGeoTransformation
但没有成功,如果支持,有许多不同的预定义 GeoTransformation 可以在正向或反向中使用。
谢谢。