1

我正在做一个项目,在该项目中我需要计算 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 可以在正向或反向中使用。

谢谢。

4

0 回答 0