ArcObjects、ArcGIS Engine、ArcGIS Runtime以及Pro SDK的區別與聯繫

衆所周知,ArcGIS的產品種類很多,光ArcGIS桌面端的二次開發產品就包括ArcGIS Engine、ArcGIS Runtime以及ArcGIS Pro SDK。初學者時常被這些產品搞亂,既不清楚這些產品的區別與聯繫,也不清楚做開發時應該選擇哪種產品。由於這個問題被問的頻率實在太高了,所以這裏寫個普及貼,以幫助大家更好的定位各個產品。

1,ArcObjects和ArcGIS Engine的區別和聯繫

ArcObjects:是一整套組件式開發接口的統稱,ArcGIS Desktop(不含ArcGIS Pro)、ArcGIS Engine、ArcGIS Server都是基於ArcObjects開發出來的產品,下圖一看便知:

在這裏插入圖片描述
所有這些功能模塊都是ArcObjects,所以說ArcObjects的功能非常強大,既可以進行Desktop的擴展開發,也可以進行Server的功能擴展,如Server Object Extension(俗稱SOE),也可以進行ArcGIS Engine開發。

ArcGIS Engine:於2004年發佈,是基於COM技術的可嵌入的組件庫和工具包,構建在覈心的ArcObjects之上,完全可擴展。它提供多種開發接口,可以適應.NET,Java和C++等開發環境,開發者可以使用這些組件來開發和GIS相關的地圖應用。ArcGIS Engine既可以開發出具有地圖界面的獨立應用程序,也可以開發出進行後臺數據處理的控制檯程序,還可以進行嵌入式開發。ArcGIS Engine在10.0及之前版本又稱爲ArcGIS Engine Runtime,這裏要和ArcGIS Runtime產品進行區分,經常有用戶以爲ArcGIS Runtime就是之前的Engine Runtime,這兩者是不同的產品。此外,需要注意:目前ArcGIS Engine 10.7版本僅支持.Net和Java開發平臺。

TipsVC++屬於.Net平臺仍是支持的,但Cross Platform C++(例如Qt等)以及Engine的Linux版本從10.5版本起已經不再提供。

綜上,ArcGIS Engine是ArcObjects的一部分,使用Engine可以開發出具有獨立地圖界面的應用程序,能夠進行非常細粒度的控制,可以實現大部分ArcMap的功能(界面部分需要自定義);而ArcObjects除了可以進行Engine開發,還可以進行ArcMap以及Server的擴展開發。

2,ArcGIS Engine與ArcGIS Runtime區別和聯繫

ArcGIS Runtime:是伴隨ArcGIS 10.1發佈而誕生的一款基於服務架構的全新產品,是一款輕量級桌面移動端跨平臺開發產品。目前提供了5種API:.Net、Java、Qt、Android、IOS,支持6種平臺:Windows、Linux、MacOS、UWP、Android、IOS,可以輕鬆構建跨平臺應用程序。

ArcGIS Engine和ArcGIS Runtime 都屬於開發軟件,可以用來開發獨立的C/S程序。但是兩者的底層是不同的,Engine是基於ArcObjects的,Runtime是基於Runtime API的;另一方面其開發模式也不同,Engine是單線程、同步、32位程序,而Runtime是多線程、異步、64位程序。所以如果想從Engine遷移到Runtime上來,代碼是需要重寫的。此外,Engine和Runtime在功能上也各有利弊:

ArcGIS Engine:

優點:功能強大,可以實現ArcMap的大部分功能,包括操作複雜對象如拓撲,幾何網絡等,可以進行精細化編輯,還可以進行專業級製圖。

缺點:只能32位,部署繁重,不支持矢量切片、三維場景、portal等。

ArcGIS Runtime:

優點:Esri大力發展,64位,部署簡單,跨平臺,展示效果好,支持矢量切片、三維場景、可以操縱Portal、此外還支持VR/AR等。

缺點:對於複雜對象、精細化編輯和專業級製圖的支持稍顯不足。

3,ArcGIS Runtime 10.2.x和ArcGIS Runtime 100.x的區別和聯繫

10.2.x和100.x都是ArcGIS Runtime的產品,所以其功能是差不多的。10.2.x是早期的Runtime版本,相信進行早期Runtime開發的用戶都不陌生;而100.x採用了全新的底層架構,API進行了重新設計,使得用戶熟悉了一種API可以很容易的遷移到另一種,因爲其API的名稱、功能、參數都是一樣的,比如熟悉了Runtime .Net API可以很容易遷移到移動端如Runtime Android API上。由於10.2.x版本已經不再更新,推薦直接使用100.x。10.2.x與100.x版本在結構和功能實現上都有區別,下面簡單看一下:

結構上

ArcGIS Runtime SDK for .NET包括:
Windows Presentation Framework (WPF)
Universal Windows Platform (UWP) – 替代了10.2.x Windows Store and Windows Phone APIs.
Xamarin.Android
Xamarin.iOS
Xamarin.Forms - Supports cross-platform development for Android, iOS, and UWP.

Local Server之前是必裝的,現在變爲可選,程序中如果用到LocalServer的功能就安裝,如果沒有用到就不需要安裝,更加輕量化。另外,部署Runtime產品時不再需要ArcGIS Runtime .NET Deployment Manifest,詳細信息

功能實現上

API是不同的,如果將Runtime 10.2.x版本的程序遷移到100.x上的話,代碼需要改寫。100.x實現了Map和View的分離,採用了Loadable模式,GraphicsOverlay代替了之前的GraphicsLayer等等。此外,100.x版本增加了對一些新的離線格式如mmpk、mspk的支持,詳細信息可以參考官方幫助

4,Pro SDK與ArcObjects、ArcGIS Engine的區別

Pro SDK:利用它可以實現對ArcGIS Pro的定製與擴展。Pro SDK是基於Pro API的,目前只有.Net,同樣採用的是Add-ins的開發模式。需要注意,目前有部分Pro API是沒有公開的。
在這裏插入圖片描述
下面以提問題和回答的方式讓大家對Pro SDK有個初步認識:

Q:ArcGIS Pro .NET SDK支持開發獨立程序嗎?
A:可以開發獨立程序,但是沒有地圖界面,ArcGIS.Core.dll中的Geometry和Geodatabase 類是可以的,參考CoreHost

Q:ArcGIS Pro SDK是ArcObjects的替代品嗎?
A:不是,ArcObjects SDK用於定製和擴展ArcMap、ArcCatalog、ArcScene以及ArcGlobe。Pro SDK只用於ArcGIS Pro的定製和擴展。

Q:ArcGIS Pro SDK是ArcGIS Engine的替代品嗎?
A:不是,ArcGIS Engine Developer Kit會繼續提供。

Q:之前的ArcObjects代碼可以用於Pro嗎?
A:不行,ArcObjects代碼必須使用Pro SDK進行重寫。

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