Arcgis的坐标转换

首先理解一下基准面

基准面是在特定区域内与地球表面极为吻合的椭球体。椭球体表面上的点与地球表面上的特定位置相匹配,也就是对椭球体进行定位,该点也被称作基准面的原点,原点是固定的,所有其他点由其计算获得。基准面的坐标系原点往往距地心有一定偏移(有的也在地心,如WGS1984),如西安80的基准面和北京54的基准面,因为原点不同,所以不同的基准面上,同一个点的坐标是不相同的。

利用ArcEngine创建一个坐标系或者基准面的是SpatialReferenceClass类,

该类实现了ISpatialReferenceFactory接口,该接口定义了创建坐标系,基准面等方法和属性;在利用 ISpatialReferenceFactory创建坐标系的时候往往需要一个int类型的参数,这个int其实就是这些坐标系的代号,如我们熟悉的4326就是WGS1984.

同一基准面的坐标转换

对于同一基准面,我们可以肯定一点就是同一位置经纬度坐标是一样的,而不同的就是计算成平面坐标的时候可能有所不同,因为算法不一样,在这里我只是将经纬度坐标转成平面的坐标。

private IPoint GetProjectPoint(IPoint pPoint, boolpBool)

     {

    ISpatialReferenceFactory   pSpatialReferenceEnvironment      =  new SpatialReferenceEnvironment();

   ISpatialReference  pFormSpatialReference  = pSpatialReferenceEnvironment.Creat eGeographicCoordinateSystem((int)esriGeoCS3Type.esriSRGeo_Xian1980)'//西安80

   ISpatialReference pToSpatialReference  =

                                pSpatialReferenceEnvironemnt.CreateProjectedCoordinateSystem((int)esriSRProjCS4Type.esriSRProjCS_Xian1980_3_Degree_GK_Zone_34);//西安80

      if (pBool == true)//球面转平面
       {
                    IGeometry pGeo = (IGeometry)pPoint;
                    pGeo.SpatialReference = pFromSpatialReference;
                   pGeo.Project(pToSpatialReference);
                  return pPoint;
       }
   else //平面转球面
     {
                 IGeometry pGeo = (IGeometry)pPoint;
                 pGeo.SpatialReference = pToSpatialReference;
                 pGeo.Project(pFromSpatialReference);
                return pPoint;
    }
}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值