投影转换_AE地理坐标与投影坐标转换

24672f24f7f91649cc044b13d3cf03ca.gif

代码是将WGS84地理坐标转换为WGS84UTM投影坐标,如果要转换为西安80或北京54坐标,则参数是:

北京54坐标:

地理坐标枚举值为:esriSRGeoCSType.esriSRGeoCS_Beijing1954

投影坐标枚举值为:

esriSRProjCSType.esriSRProjCS_Beijing1954GK_13……

52855eb606ad028de74b218c545f20f0.png

西安80坐标:

地理坐标枚举值为:esriSRGeoCS3Type.esriSRGeoCS_Xian1980

投影坐标枚举值为:

esriSRProjCS4Type.esriSRProjCS_Xian1980_3_Degree_GK_CM_102E……

代码如下:

public class WGS84UTM    {/// /// 从地理坐标转换到投影坐标/// /// 经度/// 纬度,南半球为负数/// X/// Y/// 带区(1-60,从-180到+180,6度带)public static void GeoToPrj(double longitude, double latitude, out double x, out double y, out int zone)        {            ISpatialReferenceFactory pSpatialReferenceFactory = new SpatialReferenceEnvironmentClass();            IGeographicCoordinateSystem pGeoCoordSys = pSpatialReferenceFactory.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_WGS1984);int startprjnum = 32601;if (latitude < 0) startprjnum = 32701;            zone = (int)Math.Round(((longitude + 3) / 6)) + 30;int prjnum = startprjnum + zone - 1;            IProjectedCoordinateSystem pPrjCoordSys = pSpatialReferenceFactory.CreateProjectedCoordinateSystem(prjnum);            IPoint pt = new PointClass();            pt.PutCoords(longitude, latitude);            IGeometry geo = (IGeometry)pt;            geo.SpatialReference = pGeoCoordSys;            geo.Project(pPrjCoordSys);            x = pt.X;            y = pt.Y;if (latitude < 0)                y = 0 - y;        }/// /// 从投影坐标转换到地理坐标/// /// X/// Y,南半球为负数/// 带区(1-60,从-180到+180,6度带)/// 经度/// 纬度public static void PrjToGeo(double x, double y, int zone, out double longitude, out double latitude)        {            ISpatialReferenceFactory pSpatialReferenceFactory = new SpatialReferenceEnvironmentClass();            IGeographicCoordinateSystem pGeoCoordSys = pSpatialReferenceFactory.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_WGS1984);int startprjnum = 32601;bool South = false;if(y < 0)             {                South = true;                y = 0 - y;            }if (South) startprjnum = 32701;int prjnum = startprjnum + zone - 1;            IProjectedCoordinateSystem pPrjCoordSys = pSpatialReferenceFactory.CreateProjectedCoordinateSystem(prjnum);            IPoint pt = new PointClass();            pt.PutCoords(x, y);            IGeometry geo = pt as IGeometry;            geo.SpatialReference = pPrjCoordSys;            geo.Project(pGeoCoordSys);            longitude = pt.X;            latitude = pt.Y;if (South) latitude = 0 - latitude;        }    }

本文作者:lai_xiao_hui

原文地址:

http://blog.163.com/lai_xiao_hui/blog/static/123037324201151443221942/

33ab4af40ca1c03f7b7f79a39fbb45ce.png

文末福利来袭公众号后台回复‘交流群’,即可进入我们地信交流群哦,进群回复论坛用户名即可获得500铜板奖励哦,群里还有更多论坛新活动和福利等着你的到来

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值