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的接口,把這塊瞭解的更清楚一些。

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