003 宏观角度看ArcObject SDK

1、为什么要宏观上看ArcObjects SDK

ArcObjects SDK库是一个非常庞大复杂COM组件集合,ArcGIS10.0有1053个枚举、93个结构体、5555个接口以及4081个类,合计10982。现在到10.8版本,是更多了。

image1.png

当然我们常用的只是其中的一小部分,即使是一小部分,那也是一个错综复杂的关系网。我们需要把这个关系网理清楚。

如果在网上搜索ArcObjects SDK的结构,大概率会搜到类似下面的图。

image2.png

甚至还有下面的图。

image3.png

如果你对ArcObjects SDK中的内容比较熟悉的话,这些图基本上一看就能明白表达的什么意思。但一般情况下,我们开发的时候是不怎么看这种图的,主要还是直接看ArcObject SDK的帮助文档中的接口帮助页面以及参考AcrMap是怎么操作实现的。

但对于初学者,最好还是从实际应用着手,逐渐深入的去了解。如果直接看这样的图的话,是很难看明白的。所以我们从应用的角度重新从宏观角度看下Arcobjects SDK的结构。

2、Arcobjects SDK五大部分

在这些繁杂的API中,我总结出了五大部分。五大部分的关系图如下。

 

截图.png

AxControl-Tool部分比较独立,主要是控制几个AxControl和ITool、ICommand接口之间的交互。我们理解SDK这部分的设计后,会对我们的系统架构设计能力有很大的提高。AcrObjects SDK定义的工具交互这块解耦做的非常好,各工具之间相互独立,耦合性很低,是我们学习借鉴的非常好的例子。只要能把AxControl和ITool、ICommand接口之间的交互关系搞清楚,这部分就算掌握了。

Map-Layers部分是系统核心的部分,基本上我们开发写的代码,都是围绕这部分来展开的,涉及到重要概念包括地图、工作空间、图层、矢量数据集、字段、要素、栅格数据、查询、标注、渲染等。

PageLayout-Elment部分是相对独立的模块,一般我们在出图的时候会使用到该部分。Map和PageLayout均实现了IActiveView,都可以添加Elment。但就重要性而言,Elment对于PageLayout要重要的多。PageLayout上基本上所有添加的内容都是实现了IElement接口的。例如Layout上面添加的MapFrame、指北针、比例尺、图例、文本、图片、图框等都是以Element的方式添加到PageLayout上。

GeoProcess-ArcToolbox是一个相对独立但又非常重要的模块。例如我们在做矢量数据裁剪、空间连接、生成水系流域、坡度分析、栅格运算等,都是调用的ArcToolbox里面的工具。这个主要是做数据处理的时候使用。其实我们做AO开发,很多数据处理等都是调用的ArcToolbox里面的工具。能使用好这些工具,开发系统将事半功倍。

Geometry-SpatialReference部分是比较基础重要的部分,AcrObjects SDK的各个部分都会用到这些内容,比较重要的概念包括几何体、空间参考、投影转换、样式库等。对于非GIS专业从事GIS开发的人员,空间参考以及空间参考之间的转换是一个非常难以理解的概念,我们可以通过ArcMap操作以及API的接口,把这块了解的更清楚一些。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章