ArcEngine 坐标系变换
arcgis中对于坐标的管理有三个:
1、数据文件本身的坐标系,体现在数据坐标x,y上。
2、空间参考文件,一般是和数据配套存在的。详细定义数据的地理坐标、投影坐标等,主要是在arcgis相关软件加载数据的时候使用。
3、arcgis等软件显示时的坐标,是在加载数据的时候动态投影变换得到的。在软件中的一些操作都是以此为基础的。(对于toolbox中的工具是否使用此坐标,现在我还不知道)
对于坐标的变换:
IGeometry接口提供了SpatialReference属性和Project方法来直接变换IGeometry对象的坐标
1)地理坐标转投影坐标:
IPolygon iparea;
ISpatialReferenceFactory ispReferenceFactory = new SpatialReferenceEnvironmentClass(); IProjectedCoordinateSystem ipCoorSys = ispReferenceFactory.CreateProjectedCoordinateSystem(2383);//2362xian 80 38度带 2383 xian 114 IGeographicCoordinateSystem earthref = ispReferenceFactory.CreateGeographicCoordinateSystem((int)esriSRGeoCS3Type.esriSRGeoCS_Xian1980); //西安80地理坐标4610
iparea.SpatialReference = earthref; iparea.Project(ipCoorSys);
2)投影到地理的方法正好相反:
3)这里需要注意的是,IPolygon如果是COM对象的话转换不过来,只能重新构造新的面对象进行转换。(自己编程中遇到的,也不知道是不是所有的都是这样)
4)IArea计算面积,只能先将对应几何对象的坐标转为投影坐标才能得到正确的面积。(IArea计算面积应该是直接利用点集的坐标,直接算的,没有考虑其坐标系类型)