预览加载中,请您耐心等待几秒...
1/8
2/8
3/8
4/8
5/8
6/8
7/8
8/8

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

AE中的坐标系统转换 HYPERLINK"http://87656352.blog.163.com/blog/"\l"m=0&t=1&c=fks_081074087085089069080085074071080082088067081082084"ArcEngine开发总结2008-09-0422:47:33阅读405评论0字号:大中小 在搞AE开发的时候,经常碰到的一个问题就是不同坐标系统之间的转换,AE中IGlobeControl控件中提供了IGlobeViewUtil类实现了大地坐标、屏幕坐标和地理坐标三者之间的转换,IMapControl中则提供了ToMapPoint和FromMapPoint两种方法实现屏幕坐标和地理坐标之间的转换,但在实际开发中,这些转换还不够,比如当我们需要实现地理坐标转换到自定义格式的大地坐标时,上述方法则不能解决这些问题,最好的解决方法是使用IGeometry对象的Project方法,实现不同空间参照系之间的相互转换。以下以地理坐标转为自定义的Albers坐标系统为例予以说明,其主要用到的接口有ISpatialReferenceFactory、IProjectedCoordinateSystem、IProjectedCoordinateSystemEdit、ISpatialReferenceFactory、IGeographicCoordinateSystem、ISpatialReference等:其C#代码如下://将任意坐标系统转换为自定义Albers大地坐标(米)publicstaticIPointGeoToGra(IPointpoint){IPointpt=newPointClass();pt.PutCoords(point.X,point.Y);ISpatialReferenceFactory2pFact=newSpatialReferenceEnvironmentClass();//定义地理坐标,由输入的对象决定,也可以自己定义,参考:HYPERLINK"ms-help://ESRI.EDNv9.2/esriGeometry/html/esriSRGeoCSType.htm"esriSRGeoCSTypeIGeographicCoordinateSystempGCS=newGeographicCoordinateSystemClass();pGCS=pFact.CreateGeographicCoordinateSystem(point.SpatialReference.FactoryCode);//自定义投影方式IProjectedCoordinateSystempProjectedCS=newProjectedCoordinateSystemClass();IProjectedCoordinateSystemEditpProjectedCSEdit=pProjectedCSasIProjectedCoordinateSystemEdit;//定义投影方式,参考:HYPERLINK"ms-help://ESRI.EDNv9.2/esriGeometry/html/esriSRProjectionType.htm"esriSRProjectionTypeIProjectionpProjection=newProjectionClass();pProjection=pFact.CreateProjection((int)esriSRProjectionType.esriSRProjection_Albers);//定义投影单位,参考:HYPERLINK"ms-help://ESRI.EDNv9.2/esriGeometry/html/esriSRUnitType.htm"esriSRUnitTypeILinearUnitpUnit=newLinearUnitClass();pUnit=pFact.CreateUnit((int)esriSRUnitType.esriSRUnit_Meter)asILinearUnit;//定义其他参数,参考:HYPERLINK"ms-help://ESRI.EDNv9.2/esriGeometry/html/esriSRParameterType.htm"esriSRParameterTypeIParameter[]pParm=newIParameter[6];pParm[0]=pFact.CreateParameter((int)esriSRParameterType.esriSRParameter_FalseEasting);pParm[0].Value=0;pParm[1]=pFact.CreateParamet