如何确定我们需要在ArcObject IGeometry5中使用哪个esriTransformDirection ProjectEx

时间:2016-05-16 12:11:53

标签: esri arcmap arcobjects esri-arc-engine

我正在开发一个项目,在这个项目中,我需要计算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中,而Target在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或反向。我查看IGeoTransformation但没有成功,有许多不同的预定义GeoTransformation,如果支持,可以在fwd或reverse中使用。

感谢。

0 个答案:

没有答案