我正在开发一个项目,在这个项目中,我需要计算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中使用。
感谢。