GIS信息系统AO/MO基础

GIS信息系统AO/MO基础

——远帆

2009-02-05

GIS开发分为二次开发,底层开发,组件开发。二次开发就是不脱离mapinfo,Arcgis的环境,使用VBA开发特定功能的程序底层就是不借助其它公司平台,自主开发实现组件开发和二次开发类似,就是使用AO/MO/MAPX等进行引用开发。  

AO ArcObjects,有上千个对象和接口,可以在其基础上开发出业界最强大的GIS应用程序。完全支持空间数据引擎。但由于运行时需要安装ArcGIS核心产品和开发时用到的扩展模块产品,软件发布成本不菲,其下一代产品ArcGIS   Engine则有望解决这个问题。

AE - ArcGis Engine是一个创建定制的GIS桌面应用程序的开发产品。ArcGIS Engine包括构建ArcGIS产品ArcView, ArcEditor, ArcInfo, ArcGIS Server.的所有核心组件。使用ArcGIS Engine可以创建独立界面版本(stand-alone)的应用程序,或者对现有的应用程序进行扩展。

MO  -  MapObjects,只有十多个对象,用于简单的GIS应用程序开发,对空间数据引擎的支持度较低,但软件发布成本很低。

一分钱一分货,AO是主流,AO的分析功能比MO强,AO支持的格式更多,开发时的模式和可扩展性等等强些,当然也复杂多了。

MO使用简单,也很不错。  其实,如果非特别专业的、有些变态的要求,MO没问题的。MO也可以连接geodatabase的,建议你采用AO 因为MO现在基本上已经没有新版本了。

AO其实是一组COM接口,适用于任何语言,VC++,VB,DELPHI等开发语言,MO是一个产品。AO不能独立存在,只要安装成功ARCGIS就可以使用AO开发,听说今后arcgis的版本中AO可以单独发行了。

AOAEArcGIS DesktopArcGIS Server三者的集合,按功能AO大于AE大于MOAO面向桌面扩展开发,需要有desktop支持,不能开发出独立发布的程序AE不需要desktop支撑,包括了AO中的大部分库,可以开发出独立发布的应用程序,MO功能简单,主要面向小型的系统开发如地图浏览,查询系统等等,或结合MIS系统运行。

如何学习AO,相信是很多人都关心的问题。相比MO而言,AO的入门门槛要高的多,首先是知道COM技术,AO编程使用的是COM组件技术标准,它使用接口定义,对象实现的方法,接口与类之间是多对多的关系。在MO中,一把钥匙开一把锁,而在AO中,一把钥匙可以开多把锁,一个锁也可能安装在很多门上,ArcGIS8.3版本已经高达2000多个接口,要了解这里面最常用的部分当然是难之又难

什么是AO,按照ESRI的官方说法,AO就是ARCGIS大部分软件的组成组件,它是构成ArcMAPArcCATALOG和一部分 ArcToolBox的基础。从ARCGIS8开始,ESRI决定使用COM技术重新构建他们的技术,使用COM技术将整个GIS系统组合起来,这部分工作从1999年就开始,但是到现在都没有完全结束事实上,我在学习AO的过程中,发现了无数不可思议的地方和明显违反命名默认规则的例子,但是没有办法。

对于高级的AO程序设计人员我想必须跨越四大技术障碍:
1
面向对象技术思想;
2
COM技术;
3
AO各组件对象的层次组织和相互关系;
4
支持COM的各种开发工具及其环境(如VBVCDEPHI等)

真正属于ESRI自己的东西无非就是这套AO组件库。对于初次进入AO开发领域的人员来说,我个人觉得(至于COM还有其它暂时可以先放一边,照猫画虎完成许多任务还是没有问题的了)可以先从ArcGIS Desktop的应用开始,对AO的层次及相关概念有一个了解(如MapLayerViewLabel、支持的数据格式等)

AO开发资源
1
.《ArcObjects Developer Help ----- 这是AO开发的首选资源,个人觉得一定程度上甚至可以和微软的MSDN相媲美。不管是AO的基础COMAO的对象层次图都提供了说明,此外还提供了大量的开发示例。
2
.《ArcObjects Online ----- 提供了最新的AO组件库文档,其中有一个关于AO的技术论坛相信会让大家有很多意外的收获;
3
.《Exploring ArcObjects -----一本很不错的AO技术文档,对AO的开发进行了很好的组织,而且有大量的示例,可以随时复制利用;
4
.《Building a Geodatabase -----应用都是围绕数据来展开的,这本书主要是用来设计和创建Geodatabase的,但理解和掌握Geodatabase的层次和建摸方法,对AO的开发是很好的补充。
5
.《Microsoft MSDN----即使你的AO开发工具不是微软的,也建议安装一套完整的MSDN,想多了解和应用COM进行设计开发,MSDN是个宝藏。

终于开始COM了我想许多AO的开发者对此都会有不同的感受。COMMicrosoftComponent Object Model缩写,它不仅定义了组件程序之间进行交互的标准,而且也提供了组件程序运行所需要的环境(COM本身要实现一个称为COM(COM library)API,它提供诸如客户对组件的查询,以及组件的注册/反注册等一系列服务,一般来说,COM库由操作系统加以实现,我们不必关心其实现的细节,象大家经常看到的ActiveXDirectX,OLEDB都是基于COM技术的),主要应用于Microsoft Windows操作系统平台上。COM通常的发布形式是:以win32动态链接库(DLL)或可执行文件(EXE)的形式发布。

你可能感兴趣的:(Microsoft,扩展,vb,开发工具,Delphi,产品)