日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【ArcGIS Engine二次开发】入门基础(2):ArcGIS开发方式(VBA、DLL、Add-in、Engine)对比

發(fā)布時間:2023/12/4 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【ArcGIS Engine二次开发】入门基础(2):ArcGIS开发方式(VBA、DLL、Add-in、Engine)对比 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • 2.1 使用VBA進行桌面軟件開發(fā)
    • 2.1.1 VBA開發(fā)方式
    • 2.1.1 VBA代碼的安全性
  • 2.2 使用DLL進行桌面軟件開發(fā)
    • 2.2.1 DLL開發(fā)方式
    • 2.2.2 DLL功能的應(yīng)用部署
  • 2.3 使用Add-in進行桌面軟件開發(fā)
  • 2.4 使用ArcGIS Engine構(gòu)建獨立應(yīng)用程序


對于桌面GIS應(yīng)用來說,ArcGIS平臺不僅提供了用于開發(fā)獨立運行的GIS應(yīng)用軟件的二次開發(fā)工包ArcGIS Engine,還提供了對ArcGIS Deskop桌面軟件進行擴展的開發(fā)的話,在開發(fā)個具體的GIS 行業(yè)應(yīng)用軟件時,程序員應(yīng)該根據(jù)系統(tǒng)規(guī)權(quán)用戶水平和其體應(yīng)用環(huán)境等設(shè)計相應(yīng)的系統(tǒng)架構(gòu),從而決定是采用C/S還是B/S架構(gòu)。如果采用C/S架構(gòu),是開發(fā)一個獨立的系統(tǒng)還是在現(xiàn)有的ArcGIS桌面軟件上進行擴展。因此,選擇合適的開發(fā)方式是進行GIS軟件設(shè)計的第一步。特別需要注意的是,并不是所有的GIS應(yīng)用系統(tǒng)都一定要基于ArcGIS Enine開發(fā)。

2.1 使用VBA進行桌面軟件開發(fā)

VBA(Visual Basic for Applications)可理解為簡化的Visual Basic語言,它是VisualBasic 語言的子集,主要用于對支持VBA的Windows程序(稱為“宿主程序")進行擴展和定制。微軟公司的Word、Excel等Office辦公套件很早就集成了VBA語言,利用它可以進一步擴充這些宿主程序的功能,或者基于這些宿主程序開發(fā)較為復(fù)雜的應(yīng)用系統(tǒng)。Visual Basic開發(fā)的系統(tǒng)可以脫離Visual Basic而運行,但是基于VBA開發(fā)的系統(tǒng)不能脫離宿主軟件運行,它的代碼存儲在宿主程序的文檔中,如對Word進行VBA定制和開發(fā)的代碼存儲在*.doc文件中,對ArcMap進行擴展的代碼存儲于. .mxd地圖文檔中。

使用VBA進行系統(tǒng)擴展是一種輕量級的軟件開發(fā)模式。 Esri目前不特別推薦使用VBA進行系統(tǒng)開發(fā),而更側(cè)重于推薦使用Python語言進行擴展。但在很多情況下,特別是一些業(yè)務(wù)模式相對固定的生產(chǎn)和管理部門,并不需要復(fù)雜的GIS分析功能,而是更側(cè)重于地理數(shù)據(jù)的管理,并且這些用戶基本掌握了ArcGIS軟件的使用,通過VBA開發(fā)方式將一系列業(yè)務(wù)管理流程自動化為工具按鈕置于ArcGIS桌面軟件中,既能滿足行業(yè)管理的需求,又能充分利用ArcGIS本身強大的空間數(shù)據(jù)管理功能,這時使用VBA開發(fā)定制無疑是種較好的方式。

2.1.1 VBA開發(fā)方式

通過VBA開發(fā)環(huán)境進行ArcGIS桌面軟件的擴展和定制是最簡單的GIS軟件開發(fā)方式,開發(fā)者只需專注于ArGIS軟件不能提供的功能,對于ArcGIS軟件已經(jīng)提供的工具,直接拿過來可以使用。

ArcGIS Desktop默認是沒有安裝VBA開發(fā)環(huán)境的,需要手動安裝安裝包中的VBACompatibility,如下圖所示,點擊setup.exe,一路完成即可。安裝完VBA之后,就可以在ArcMap的自定義菜單下看到macro了。

1. 宏命令方式


將那些能夠自動執(zhí)行某種操作的命令統(tǒng)稱為宏(Macros),是一種操作命令。

宏命令對話框如下:


VBA程序?qū)崿F(xiàn)界面如下:

2. UIControl方式

2.1.1 VBA代碼的安全性

VBA代碼保存在文檔或者模板中,開發(fā)人員編寫的代碼很容易被別人使用。為了保護,可以設(shè)置VBA密碼,增加安全性。

2.2 使用DLL進行桌面軟件開發(fā)

DLL(動態(tài)鏈接庫)是Windows 平臺下的一種類文件編譯格式,這種格式的文件可以被任何支持COM規(guī)則的語言所支持和引用,ArcObjects組件本身的物理文件就是DLL文件。DLL開發(fā)方式的特點是開發(fā)環(huán)境脫離了ArcGIS Desktop軟件,讀者可以使用自己熟悉的開發(fā)語言,如Java、C#等語言進行開發(fā);開發(fā)的功能可以更為強大和靈活;編譯的結(jié)果是DLL文件,封裝性更好,功能分發(fā)只需傳遞DLL文件即可。后期維護也只需要更新相應(yīng)的DLL文件即可,而不需要對源程序做任何修改。

2.2.1 DLL開發(fā)方式


選擇命名空間引用。


以新建一個工具為例,在項目名稱上右鍵→添加→新建項。


由于我們開發(fā)的工具實際上是對已有的工具進行調(diào)用和擴充,因此選擇第二項ArcMap,MapControl,or PageLyaoutControl Tool。

2.2.2 DLL功能的應(yīng)用部署

2.3 使用Add-in進行桌面軟件開發(fā)

1. addin介紹

ArcGIS從10.0開始支持addin(ArcGIS軟件中又叫作加載項)的方式進行插件制作。相對于以往9.x系列,addin的無論是從使用或者編寫都更加方便快捷。通過開發(fā)語言,可以制作ArcGIS Desktop各個軟件模塊的插件。

ArcGIS Add-In插件開發(fā)是對ArcGIS Desktop應(yīng)用軟件的功能擴充,ArcGIS Desktop 本身就是一個插件式框架,可以允許用戶根據(jù)自己的需求定制開發(fā)擴充功能,開發(fā)的功能主要是置于工具欄上。

2. addin開發(fā)方式

ArcGIS Add-In插件開發(fā)有兩大類型,如下:

  • 一是Python Add-In開發(fā),但是需要從ESRI官網(wǎng)上下載Python加載項向?qū)Р拍苓M行。。

  • 二是基于Arc0bject/ArcGIS Engine的Add-In開發(fā),又分command、tool、toolbar、Dockable Window開發(fā)。

(1)Python Add-In開發(fā)

Esri提供了Python加載項向?qū)Чぞ邅韺崿F(xiàn)Addin界面的搭建,可以到Esri官網(wǎng)去下載該工具Python加載項向?qū)?。從介紹來看,該設(shè)計器要求的最低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)建獨立應(yīng)用程序

對大型、專業(yè)的GIS應(yīng)用系統(tǒng)來講,由于功能的復(fù)雜性和軟件版本保護等原因,往往需要所包含的GIS功能脫離ArcGIS平臺軟件獨立運行,這就需要使用AE開發(fā)。

例1 :

打開VS2010,新建項目。


選擇需要添加的引用項,點擊Next。


勾選需要的軟件許可和擴展模塊,點擊Finish。


從工箱中添加ToolbarControl、TOCControl和MapControl,簡單的界面構(gòu)造如下(如果想要更優(yōu)美的界面,可以借助DevExpress插件來構(gòu)造個性化的界面):


ToolbarControl屬性設(shè)置如下:


TOCControl屬性設(shè)置如下:


MapControl屬性設(shè)置如下:


運行程序,點擊Add Data按鈕加載一個柵格數(shù),如下圖所示。


例2:

private void button1_Click(object sender, EventArgs e) {string sPath = Application.StartupPath + "\\world.mxd";if (axMapControl1.CheckMxFile(sPath)){axMapControl1.LoadMxFile(sPath);} }

總結(jié)

以上是生活随笔為你收集整理的【ArcGIS Engine二次开发】入门基础(2):ArcGIS开发方式(VBA、DLL、Add-in、Engine)对比的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。