在一个团队中,不乏编程的高手,但有时却缺乏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程序中运行显示。