ArcGIS Engine

ArcGIS的軟體開發引擎

ArcGIS Engine是ArcGIS的一套軟體開發引擎,可以讓程序員創建自定義的GIS桌面程序。

ArcGIS Engine支持多種開發語言,包括COM、.NET框架、Java和C++,能夠運行在Windows、LinuxSolaris等平台上。這套API提供了一系列比較高級的可視化控制項,大大方便了程序員構建基於ArcGIS的應用程序。

ESRI在ArcGIS9版本才開始推出的新產品。

簡介


ArcGIS是美國ESRI(Environmental Systems Research Institute, Inc. 美國環境系統研究所公司)推出的一條為不同需求層次用戶提供的全面的、可伸縮的GIS產品線和解決方案。ESRI是GIS領域的拓荒者和領導者,而ArcGIS也代表了當前GIS行業最高的技術水平。
ArcGIS Engine是ESRI在ArcGIS9版本才開始推出的新產品,它是一套完備的嵌入式GIS 組件庫和工具庫,使用ArcGIS Engine開發的GIS應用程序可以脫離ArcGIS Desktop而運行。ArcGIS Engine面向的用戶並不是最終使用者,而是GIS項目程序開發員。對開發人員而言,ArcGIS Engine不再是一個終端應用,不再包括ArcGIS桌面的用戶界面,它只是一個用於開發新應用程序的二次開發功能組件包。
在ArcGIS Engine產品出現之前,使用ArcGIS開發自定義GIS功能有3種方法:在ArcGIS Desktop軟體的VBA環境中編寫代碼;使用支持COM技術的編程語言,通過實現ArcObjects開放的特定介面編寫能夠嵌入ArcGIS Desktop的DLL文件;使用ArcObjects包含的可視化控制項MapControl和PageLayoutControl控制項開發具有獨立界面的GIS應用程序。這3種開發方式都要求客戶端必須安裝一定級別的ArcGIS Desktop產品,因此產品的部署成本非常高昂。
由於GIS行業的特殊性,最終用戶一般都希望使用與自己業務邏輯相適合的自定義界面GIS系統而不是商業軟體成品,因此GIS行業從一開始對於定製業務的需求就非常迫切。ArcGIS Engine之前普遍使用的二次開發組件包括ESRI的MapObjects和MapInfo公司的MapX等產品,它們也可以讓程序員們使用不同的程序語言和開發環境,建構具有獨立界面的GIS程序。
由於MapObjects本身只是一個ActiveX控制項,與ESRI ArcGIS的核心庫ArcObjects不存在任何聯繫,因此,ArcGIS中的許多高級GIS功能無法在MapObjects中實現。為了改變這種情況,ESRI將ArcObjects中的一部分組件重新包裝后命名為ArcGIS Engine發布,這個產品取代MapObjects進入嵌入式GIS開發領域,同時,MapObjects在3.2版后已經退出了市場,ESRI不會再為這個產品開發下一個版本。
ArcGIS產品框架 ArcGIS是一個可伸縮的GIS平台,可以運行在桌面端、伺服器端和移動設備上。它包含了一套建設完整GIS系統的應用軟體,這些軟體可以互相獨立或集成配合使用,為不同需求的用戶提供完善的解決之道。

主要產品


■ ArcGIS的主要產品包括4種:
● ArcGIS Desktop——運行在桌面端的專業GIS軟體套件,這套軟體包括ArcReader、ArcView、ArcEditor和ArcInfo四個級別的產品,每個產品都擁有逐步增強的功能和ArcGIS擴展模塊。
● ArcGIS Engine——為開發嵌入式GIS和獨立運行的GIS桌面端應用程序而推出的二次開發組件庫,它是GIS開發者產品的主要部分。
● 伺服器端GIS——ArcIMSArcGIS Server和ArcGIS Image Server,它們是運行在伺服器端的數據管理和發布軟體,也是ESRI產品發展的趨勢。
● 移動GIS——ArcPad及ArcGIS Mobile,它們是運行在PDA等移動設備上的GIS軟體。
ArcGIS是基於一套共享的GIS組件開發實現的,這套組件被命名為ArcObjects,它包含了大量可編程組件,實現了ArcGIS的全部功能。因此,ArcObjects可以被認為是ArcGIS產品的核心,熟悉ArcObjects的過程同時也是熟悉ArcGIS Engine的過程。關於ArcObjects的基礎知識,讀者可以翻閱相關書籍。
ArcGIS可以訪問的數據包括各種類型的文件型數據、多用戶DBMS數據、Web Service和多種應用程序數據通道。
ArcGIS目前的最新穩定版本是9.2版,ArcGIS 9.2的最新架構如下所示。
ArcGIS 9.2的最新架構
ArcGIS 9.2的最新架構
ArcGIS9.2架構
ArcGIS 9.2的架構設計較之以前的版本發生了重大的變化,這些變化主要包括以下幾個方面。
n ArcGIS Desktop:提供給了用戶更加強大的數據編輯功能、更好的製圖效果,以及數據互操作模塊和分析建模工具等。
n ArcGIS Engine產品提供了更豐富的功能,它們包括新的如Data Interoperability、Maplex、Schematics和Tracking等擴展模塊,新的符號控制項,新的內置commands、tools、menus和模板等;此外,ArcGIS Engine還可以直接調用Geoprocessing的各種功能,能夠極大地簡化開發人員的代碼編寫工作。
n GeoDatabase:在ArcGIS9.2版中,GeoDatabase有了很大的改進,它增加了一種基於二進位文件格式的GeoDatabase——File GeoDatabase,這種數據存儲在文件系統的一個文件夾中,每個數據集都作為一個文件而存在,每個表文件的空間能夠達到1TB。它是一種跨平台的中立數據格式,其性能比基於MDB資料庫的Personal GeoDatabase好;單用戶,不支持版本;其壓縮數據格式是一種只讀的File GeoDatabase。
n ArcSDE:ESRI在ArcGIS 9.2中豐富了ArcSDE GeoDatabase類型。這個產品目前分為以下3種級別。
l Personal ArcSDE:ArcEditor和ArcInfo用戶可以使用MS SQL Express資料庫來搭建ArcSDE GeoDatabase,它支持3個數據連接,其中一個是可編輯用戶。其存儲數據量依賴SQL Server Express,最大可以達到4GB。
l Workgroup ArcSDE:ArcGIS Server for Workgroups版本的用戶可以使用此級別的ArcSDE GeoDatabase,它有10個同時編輯用戶,最大數據量也為4GB。
l Enterprise ArcSDE:傳統的基於Oracle等大型關係型資料庫的ArcSDE仍然可以進行使用。
n ArcIMS:ArcIMS已經開始面臨被ArcGIS Server取代的命運,但到9.2版為止,對ArcIMS的改進仍然在繼續,這些改變包括使用ArcIMS的ADF(Application Developer Framework)產生web上的電子地圖;使用AJAX技術增強客戶端體驗;提供更快的元數據服務和更高的系統安全性等。
n ArcGIS Server:ESRI認為基於伺服器的計算和空間服務是GIS行業發展的方向,而ArcGIS Server非常適合作為新的基於伺服器的GIS平台。在支持高性能Web製圖功能的同時,ArcGIS Server9.2還提供了功能完整的,充分利用了ArcGIS空間分析工具和功能實現的、面向服務的解決方案。
在ArcGIS 9.2所有這些變化中,最重要的部分是ArcGIS開始由桌面端、組件式GIS全面向基於Web的GIS Service轉變,ArcGIS Server得到了極大的改進和增強,成為一個成熟的軟體產品。ArcGIS產品提供了一個強大的基於伺服器的全功能平台,可以在其上建構完整的GIS業務邏輯,而這些是過去只有在專業桌面產品上才具備的GIS功能。這個轉變,意味著將來建立真正意義上的本地、全國或全球範圍內的GIS資源網路成為可能。1.3.2 GIS開發組件——ArcGIS Engine
■ ArcGIS Engine組件庫中的組件在邏輯上可以分為5個部分,這個劃分如下所示。
ArcGIS Engine組件庫
ArcGIS Engine組件庫
● Base Services包含了ArcGIS Engine中最核心的ArcObjects組件,幾乎所有的GIS組件都需要調用它們,如Geometry和Display等。
Data Access包含了訪問包含矢量或柵格數據的GeoDatabase所有的介面和類組件。
● Map Presentation包含了GIS應用程序用於數據顯示、數據符號化、要素標註和專題圖製作等需要的組件。
● Developer Components包含了進行快速開發所需要的全部可視化控制項,如SymbologyControl、GlobeControl、MapControl、PageLayoutControl、SceneControl、TOCControl、ToolbarControl和LicenseControl控制項等。除了這些,該庫還包括大量可以由ToolbarControl調用的內置commands、tools和menus,它們可以極大地簡化二次開發工作。
● Extensions包含了許多高級功能,如GeoDatabase Update、空間分析、三維分析、網路分析和數據互操作等。ArcGIS Engine標準版License並不包含這些ArcObjects組件的許可,它們只是作為一個擴展而存在,需要特定的License才能運行。
1、基本服務(Base Services):由GIS核心Arc Objects的組件構成,幾乎所有的GIS組件都需要調用它們,如Geometry和Display等。
2、數據存取(Data Access):對許多矢量或柵格數據進行存取,包括強大而靈活的地理資料庫
3、地圖表達(Map Presentation):包括用於創建和顯示帶有符號體系和標註功能的地圖的Arc Objects,以及包括創建自定義應用程序的專題圖功能的Arc Objects。
4、開發組件(Developer Components):用於快速應用程序開發的高級用戶介面控制項和高效開發的一個綜合幫助系統。包含了進行快速開發所需要的全部可視化控制項。
5、擴展功能(Extensions):包含了許多高級功能。
作為一個開發者,你能夠在程序中實現下列功能:
顯示多圖層的地圖,如道路、河流和邊界
地圖的漫遊和縮放
在地圖上識別要素
在地圖上查詢要素
顯示航片或衛片
繪製圖形要素,如點、線、圓和多邊形
繪製描述性文本
以線、選擇框、區域、多邊形和圓來選擇要素
以要素緩衝區進行選擇
以結構化查詢語句( SQL )查找和選擇要素
以專題符號化方法顯示要素,如獨立值圖、分類圖和點密度圖
動態顯示實時或時序數據
從街道地址或交叉點尋找位置
轉換地圖數據的坐標系統
對要素進行幾何操作,生成緩衝區、計算不同部分、尋找交叉點、合併等
修改要素形狀或旋轉地圖
新建和更新要素的幾何形狀和屬性
操作個人和企業級 geodatabase
開發者可以選擇集成開發環境( IDE )來建立 ArcGIS Engine 應用程序,如Windows 程序員使用的 DelphiVisual Studio ,Java 程序員使用的 JBuilderEclipse 和 Sun ONE Studio。開發者在他們的 IDE 中註冊 ArcGIS Engine 開發組件,然後創建基於窗體的應用程序,添加 ArcGIS Engine 組件並編寫代碼來建立應用邏輯。例如,你能夠建立一個面向 GIS 製圖的應用程序,在自己的應用程序中添加一個地圖控制項、目錄表控制項和選中的工具條。
儘管能夠通過高級控制項建立簡單的應用,但是實用的 ArcGIS Engine 應用程序需要不同對象庫的相關知識。