【ArcGIS Engine二次开发】入门基础(2):ArcGIS开发方式(VBA、DLL、Add-in、Engine)对比
文章目錄
- 2.1 使用VBA進(jìn)行桌面軟件開發(fā)
- 2.1.1 VBA開發(fā)方式
- 2.1.1 VBA代碼的安全性
- 2.2 使用DLL進(jìn)行桌面軟件開發(fā)
- 2.2.1 DLL開發(fā)方式
- 2.2.2 DLL功能的應(yīng)用部署
- 2.3 使用Add-in進(jìn)行桌面軟件開發(fā)
- 2.4 使用ArcGIS Engine構(gòu)建獨(dú)立應(yīng)用程序
對(duì)于桌面GIS應(yīng)用來(lái)說(shuō),ArcGIS平臺(tái)不僅提供了用于開發(fā)獨(dú)立運(yùn)行的GIS應(yīng)用軟件的二次開發(fā)工包ArcGIS Engine,還提供了對(duì)ArcGIS Deskop桌面軟件進(jìn)行擴(kuò)展的開發(fā)的話,在開發(fā)個(gè)具體的GIS 行業(yè)應(yīng)用軟件時(shí),程序員應(yīng)該根據(jù)系統(tǒng)規(guī)權(quán)用戶水平和其體應(yīng)用環(huán)境等設(shè)計(jì)相應(yīng)的系統(tǒng)架構(gòu),從而決定是采用C/S還是B/S架構(gòu)。如果采用C/S架構(gòu),是開發(fā)一個(gè)獨(dú)立的系統(tǒng)還是在現(xiàn)有的ArcGIS桌面軟件上進(jìn)行擴(kuò)展。因此,選擇合適的開發(fā)方式是進(jìn)行GIS軟件設(shè)計(jì)的第一步。特別需要注意的是,并不是所有的GIS應(yīng)用系統(tǒng)都一定要基于ArcGIS Enine開發(fā)。
2.1 使用VBA進(jìn)行桌面軟件開發(fā)
VBA(Visual Basic for Applications)可理解為簡(jiǎn)化的Visual Basic語(yǔ)言,它是VisualBasic 語(yǔ)言的子集,主要用于對(duì)支持VBA的Windows程序(稱為“宿主程序")進(jìn)行擴(kuò)展和定制。微軟公司的Word、Excel等Office辦公套件很早就集成了VBA語(yǔ)言,利用它可以進(jìn)一步擴(kuò)充這些宿主程序的功能,或者基于這些宿主程序開發(fā)較為復(fù)雜的應(yīng)用系統(tǒng)。Visual Basic開發(fā)的系統(tǒng)可以脫離Visual Basic而運(yùn)行,但是基于VBA開發(fā)的系統(tǒng)不能脫離宿主軟件運(yùn)行,它的代碼存儲(chǔ)在宿主程序的文檔中,如對(duì)Word進(jìn)行VBA定制和開發(fā)的代碼存儲(chǔ)在*.doc文件中,對(duì)ArcMap進(jìn)行擴(kuò)展的代碼存儲(chǔ)于. .mxd地圖文檔中。
使用VBA進(jìn)行系統(tǒng)擴(kuò)展是一種輕量級(jí)的軟件開發(fā)模式。 Esri目前不特別推薦使用VBA進(jìn)行系統(tǒng)開發(fā),而更側(cè)重于推薦使用Python語(yǔ)言進(jìn)行擴(kuò)展。但在很多情況下,特別是一些業(yè)務(wù)模式相對(duì)固定的生產(chǎn)和管理部門,并不需要復(fù)雜的GIS分析功能,而是更側(cè)重于地理數(shù)據(jù)的管理,并且這些用戶基本掌握了ArcGIS軟件的使用,通過(guò)VBA開發(fā)方式將一系列業(yè)務(wù)管理流程自動(dòng)化為工具按鈕置于ArcGIS桌面軟件中,既能滿足行業(yè)管理的需求,又能充分利用ArcGIS本身強(qiáng)大的空間數(shù)據(jù)管理功能,這時(shí)使用VBA開發(fā)定制無(wú)疑是種較好的方式。
2.1.1 VBA開發(fā)方式
通過(guò)VBA開發(fā)環(huán)境進(jìn)行ArcGIS桌面軟件的擴(kuò)展和定制是最簡(jiǎn)單的GIS軟件開發(fā)方式,開發(fā)者只需專注于ArGIS軟件不能提供的功能,對(duì)于ArcGIS軟件已經(jīng)提供的工具,直接拿過(guò)來(lái)可以使用。
ArcGIS Desktop默認(rèn)是沒有安裝VBA開發(fā)環(huán)境的,需要手動(dòng)安裝安裝包中的VBACompatibility,如下圖所示,點(diǎn)擊setup.exe,一路完成即可。安裝完VBA之后,就可以在ArcMap的自定義菜單下看到macro了。
1. 宏命令方式
將那些能夠自動(dòng)執(zhí)行某種操作的命令統(tǒng)稱為宏(Macros),是一種操作命令。
宏命令對(duì)話框如下:
VBA程序?qū)崿F(xiàn)界面如下:
2. UIControl方式
2.1.1 VBA代碼的安全性
VBA代碼保存在文檔或者模板中,開發(fā)人員編寫的代碼很容易被別人使用。為了保護(hù),可以設(shè)置VBA密碼,增加安全性。
2.2 使用DLL進(jìn)行桌面軟件開發(fā)
DLL(動(dòng)態(tài)鏈接庫(kù))是Windows 平臺(tái)下的一種類文件編譯格式,這種格式的文件可以被任何支持COM規(guī)則的語(yǔ)言所支持和引用,ArcObjects組件本身的物理文件就是DLL文件。DLL開發(fā)方式的特點(diǎn)是開發(fā)環(huán)境脫離了ArcGIS Desktop軟件,讀者可以使用自己熟悉的開發(fā)語(yǔ)言,如Java、C#等語(yǔ)言進(jìn)行開發(fā);開發(fā)的功能可以更為強(qiáng)大和靈活;編譯的結(jié)果是DLL文件,封裝性更好,功能分發(fā)只需傳遞DLL文件即可。后期維護(hù)也只需要更新相應(yīng)的DLL文件即可,而不需要對(duì)源程序做任何修改。
2.2.1 DLL開發(fā)方式
選擇命名空間引用。
以新建一個(gè)工具為例,在項(xiàng)目名稱上右鍵→添加→新建項(xiàng)。
由于我們開發(fā)的工具實(shí)際上是對(duì)已有的工具進(jìn)行調(diào)用和擴(kuò)充,因此選擇第二項(xiàng)ArcMap,MapControl,or PageLyaoutControl Tool。
2.2.2 DLL功能的應(yīng)用部署
2.3 使用Add-in進(jìn)行桌面軟件開發(fā)
1. addin介紹
ArcGIS從10.0開始支持addin(ArcGIS軟件中又叫作加載項(xiàng))的方式進(jìn)行插件制作。相對(duì)于以往9.x系列,addin的無(wú)論是從使用或者編寫都更加方便快捷。通過(guò)開發(fā)語(yǔ)言,可以制作ArcGIS Desktop各個(gè)軟件模塊的插件。
ArcGIS Add-In插件開發(fā)是對(duì)ArcGIS Desktop應(yīng)用軟件的功能擴(kuò)充,ArcGIS Desktop 本身就是一個(gè)插件式框架,可以允許用戶根據(jù)自己的需求定制開發(fā)擴(kuò)充功能,開發(fā)的功能主要是置于工具欄上。
2. addin開發(fā)方式
ArcGIS Add-In插件開發(fā)有兩大類型,如下:
-
一是Python Add-In開發(fā),但是需要從ESRI官網(wǎng)上下載Python加載項(xiàng)向?qū)Р拍苓M(jìn)行。。
-
二是基于Arc0bject/ArcGIS Engine的Add-In開發(fā),又分command、tool、toolbar、Dockable Window開發(fā)。
(1)Python Add-In開發(fā)
Esri提供了Python加載項(xiàng)向?qū)Чぞ邅?lái)實(shí)現(xiàn)Addin界面的搭建,可以到Esri官網(wǎng)去下載該工具Python加載項(xiàng)向?qū)?。從介紹來(lái)看,該設(shè)計(jì)器要求的最低ArcGIS版本為10.1 ,如下圖所示:
插件下載地址:https://www.arcgis.com/home/item.html?id=5f3aefe77f6b4f61ad3e4c62f30bff3b
雙擊安裝包中的addin_assistant.exe,即可。
(2)基于ArcObject/ArcGIS Engine的Add-In開發(fā)
2.4 使用ArcGIS Engine構(gòu)建獨(dú)立應(yīng)用程序
對(duì)大型、專業(yè)的GIS應(yīng)用系統(tǒng)來(lái)講,由于功能的復(fù)雜性和軟件版本保護(hù)等原因,往往需要所包含的GIS功能脫離ArcGIS平臺(tái)軟件獨(dú)立運(yùn)行,這就需要使用AE開發(fā)。
例1 :
打開VS2010,新建項(xiàng)目。
選擇需要添加的引用項(xiàng),點(diǎn)擊Next。
勾選需要的軟件許可和擴(kuò)展模塊,點(diǎn)擊Finish。
從工箱中添加ToolbarControl、TOCControl和MapControl,簡(jiǎn)單的界面構(gòu)造如下(如果想要更優(yōu)美的界面,可以借助DevExpress插件來(lái)構(gòu)造個(gè)性化的界面):
ToolbarControl屬性設(shè)置如下:
TOCControl屬性設(shè)置如下:
MapControl屬性設(shè)置如下:
運(yùn)行程序,點(diǎn)擊Add Data按鈕加載一個(gè)柵格數(shù),如下圖所示。
例2:
總結(jié)
以上是生活随笔為你收集整理的【ArcGIS Engine二次开发】入门基础(2):ArcGIS开发方式(VBA、DLL、Add-in、Engine)对比的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【ArcGIS Engine二次开发】入
- 下一篇: 工程测量不用愁,120个视频动画帮你忙,