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计算面积应该是直接利用点集的坐标,直接算的,没有考虑其坐标系类型)

posted @ 2015-01-16 15:46  授之以渔  阅读(1826)  评论(0编辑  收藏  举报