001 ArcObjects SDK 簡介

1、什麼是ArcObjects SDK

在網上搜索什麼是ArcObjects,會搜到如下的定義。

截圖.png

1.png

這個定義比較準確,也比較容易理解。

2、什麼是ArcEngine

在網上搜索ArcEngine,一般會搜到以下定義。

2.png

這段話講的非常清楚明白,ArcGIS Desktop、ArcGIS Engine和ArcGIS Server都是基於核心組件庫ArcObjects搭建。也就是說ArcGIS Desktop和ArcGIS Engine是同一個級別的產品。

但第四段說ArcGISEngine的出現對於需要使用ArcObjects的開發人員來說是個福音,因爲ArcGISEngine發佈之前,基於ArcObjects的開發只能在龐大的ArcGIS Desktop框架下進行。這個我非常不認同,無論是ArcEngine還是Desktop,都是使用同一個ArcObject SDK開發包進行開發,不存在所謂的簡化開發。感覺更主要的還是商業原因。

截圖.png

聯繫這塊說ArcEngine包括核心ArcObjects的功能,是對AO中的大部分接口、類等進行封裝所構成的嵌入式組件。這個說法有可能是對的,但確實難以讓人理解,並且容易和開發包混淆。我認爲ArcEngine環境下,只支持 ArcObjects的部分功能,而不是對其的再次封裝。

3、ArcObjects和ArcEngine開發的區別

我們經常聽說AO開發和AE開發,兩者到底有什麼區別呢?我覺得兩者基本上沒什麼區別,用的都是Arcobjects SDK一套開發包,只是運行環境不同。我們說的AO開發可以用開發包中所有的模塊、類和接口,但必須在Desktop的環境下運行。而AE開發只能使用開發包中ArcEngine Runtime支持的部分類和接口。

也就是說,同一個開發包,想使用裏面的全部功能,就需要購買Desktop,開發的應用在此環境下運行,這就是AO開發,Desktop價格會貴些。如果想便宜些,那就可以購買ArcEngine Runtime,使用開發包裏面ArcEngine Runtime支持的類和接口開發應用,這就是AE開發,但功能沒有那麼全,很多功能,特別是Toolbox裏面的工具以及一些UI都需要自己開發。

如果使用了ArcEngine Runtime不支持的接口,在ArcEngine Runtime的環境下運行,系統會報錯。

我們從安裝包也可以看出兩者的區別。

4.png

這個安裝界面上包括ArcGIS Desktop安裝以及for .Net和Java的安裝包,這樣就可以進行AO開發了。

ArcEngine開發的安裝包如下圖所示。

5.png

可以看出,該安裝包包含了ArcEngine Runtime的安裝包以及for .Net、Java和C++的開發包,如果基於這個開發,並且只使用ArcEngine Runtime支持的接口,並最終在ArcEngine Runtime環境下運行,我們就可以稱爲AE開發。

AE開發起始比AO開發弱很多,至少大部分Toolbox裏面的工具都是不能直接用的。這和開發包沒關係,和運行環境有關係,開發包中,這些接口都是有的。如何判斷一個接口或類AE是否支持,我們可以在幫助中查看。

例如IFeatureLayer接口,幫助如下圖所示。

6.png

在支持的環境中有ArcGIS Engine這項,那麼就可以在ArcEngine Runtime的環境下運行。

顏色選擇器接口,幫助如下圖所示。

7.png

在支持的環境中只有ArcGIS Desktop這項,所以該接口只能在ArcGIS Desktop環境下正常被調用。

網上很多人都說ArcEngine的出現是爲了降低開發難度,但我覺得是爲了降低開發成本。即用戶可以花比較少的錢,基於SDK中的部分常用接口開發一些應用,此時就可以購買便宜的ArcEngine Runtime,而不必購買昂貴的ArcGIS Desktop。只是現在Desktop綠色版較容易獲取,大家開發的時候,都不是那麼在意,開發的軟件基本上都是直接在Desktop的環境下運行,反而ArcEngine Runtime的安裝包在網上不易找到。

我們一直都在說我們在做AE開發,其實很多時候我們做的就是AO開發,但我們還是習慣稱爲基於ArcEngine的開發。所以以後我們不需要過多糾結到底是AE還是AO。

總結一下,我們使用ArcObejcts SDK開發了一個應用程序,驗證許可的時候驗證的是桌面許可,並在桌面環境下部署運行,我們稱爲AO開發。如果驗證許可的時候驗證的是Engine許可,並在安裝ArcEngine環境下部署運行,我們稱爲AE開發。ArcObejcts SDK中的很多API,ArcEngine是不支持的。

4、ArcObjects SDK在ArcGIS各類API中的位置

8.png

WebAPIs主要指的是ArcGISAPIfor js。

Mobile APIs是做移動端開發的API。

Native/Desktop APIs,翻譯出來是本地/桌面APIs,裏面具體API名稱爲ArcGIS Runtime API for,這個和我們上面說的ArcEngine Runtime沒什麼關係,和我們使用的ArcMap桌面軟件以及Arcobjects SDK也沒什麼關係。這是一套輕量級的GIS桌面軟件開發包,和WebAPIs以及Mobile APIs是一個體系的。API提供了地圖數據展示、繪製以及簡單的分析等功能,但如果實現複雜的業務,就需要GIS Server的配合。如果我們要做一些行業軟件,只是在底圖的基礎上展示一些簡單矢量數據,並進行查詢等,就可以使用這套API。

ArcGIS Pro SDK目前只能在ArcGISPro上進行擴展功能,還不能實現類似於Arcobjects SDK單獨的應用程序開發。如果後面出現能夠開發獨立應用程序的ArcGIS Pro SDK,我感覺Arcobjects SDK會慢慢退出歷史舞臺。

最後就是Arcobject SDK,也就是功能最全的一套SDK,我們平常說的基於AO或者AE的開發就是指基於這套SDK上進行的開發。使用Arcobject SDK,可以充分調用ArcGIS提供的各種數據加載、分析和處理等功能。

Native/Desktop APIs和ArcobjectSDK都是用來做桌面軟件的。我覺得Native/Desktop APIs的推出是因爲Arcobject SDK太重了,例如我們要實現一個加載底圖,並在上面顯示一些點和路線,點擊點,可以彈出信息框,這樣一個輕GIS桌面軟件。在沒有Native/Desktop APIs之前,如果基於ArcGIS技術體系做的話,就只能使用Arcobject SDK開發,其部署的時候還需要依賴ArcGIS Desktop或者ArcEngine Runtime,部署困難,成本也很高。

推出Native/Desktop APIs後,底圖可以加載瓦片。點和線數據可以存儲到數據庫、文本文件或者轉換成Geojosn,系統啓動的時候,直接繪製上去即可。這樣做出的軟件,可以單獨打包部署,比ArcobjectSDK要輕很多。

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