`
hi_ajg
  • 浏览: 81819 次
  • 来自: 北京
社区版块
存档分类
最新评论

ArcObjects疑难解答(一)

 
阅读更多

     在一个团队中,不乏编程的高手,但有时却缺乏GIS高手。结合自己的工作,以ArcGIS为例,来补充解答ArcObjects的问题。面对问题,大家一起探讨,我们会将所有的问题日益完善,并解答。非常欢迎大家的留言及后续补充,同时个别解答不完善的地方,欢迎指正。

 

     1、AO、AE与SOE

     ArcObjects(AO)是构建所有ArcGIS应用的底层类库,是实现ArcGIS功能的核心;ArcGIS Engine则是基于AO的C/S模式开发框架。

     ArcGIS Engine(AE)开发,通常用于C/S模式的应用系统开发,它需要安装有ArcGIS Engine Runtime;

     AO开发,则可以适用于Desktop和Server的开发,没有ArcGIS Engine同样可以。AO开发可以实现:Desktop功能拓展(如Desktop的工具条、各种工具)、Server服务端的功能拓展(开发服务器端的底层功能实现)

     所以 AO>AE,甚至可以说 AO>>AE

     SOE(Server Object Extension),即是Server服务器端的拓展开发。这也是未来ArcGIS Server 10.1版本之后拓展Server功能的基本方式,它同样也是基于AO实现的。我会今后整理这一方面内容,并与大家分享。

 

   2、.Net中的类比AO中的类多了class后缀

   比如AO中是Point类,而.NET中却多了个PointClass类,等等

   其实简化理解就可以了。Point类是基于COM的纯AO类,而PointClass是AO类经.Net封装后形成的类。仅此而已,两者在使用中没有区别。

 

   3、ArcGIS Engine中的AxMapControl是什么类,与MapControl什么关系

    AxMapControl非AO类,它是AO的MapControl经.NET封装后形成的,因此在ArcObjects的帮助文档中查无此类。欲知AxMapControl的属性和方法,查询ArcObjects帮助中的IMapControl相应接口,基本相当。

    其实,出现AxMapControl的本质在于:Engine多是创建.NET窗体程序,MapControl对象虽为Map控件,但它并不能直接添加在.NET的Form中显示。只有将MapControl封装为.NET的控件,即AxMapControl,才可以在Form程序中运行显示。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics