




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
GIS工程設(shè)計(jì)開(kāi)發(fā)綜合實(shí)習(xí)——基于C#.NET和AO/AE的GIS設(shè)計(jì)與開(kāi)發(fā)2Part6:基于VBA的二次開(kāi)發(fā)ArcObjects是ArcGIS家族的應(yīng)用,如ArcMap,ArcCatalog,ArcScene等應(yīng)用程序的開(kāi)發(fā)平臺(tái)。ArcObjects是ArcGISDesktop的開(kāi)發(fā)平臺(tái)。
ArcObjects是利用微軟的COM技術(shù)來(lái)建立的,因此,可以使用兼容COM技術(shù)的所有語(yǔ)言來(lái)進(jìn)行開(kāi)發(fā),如VC、VB、Java、Delphi、.Net等等。從而對(duì)ArcObjects的結(jié)構(gòu)進(jìn)行擴(kuò)展。
6.1概述GIS設(shè)計(jì)與開(kāi)發(fā)3對(duì)象模型圖GIS設(shè)計(jì)與開(kāi)發(fā)4在UML的圖中,有三種類型的類,abstractclasses,colasses,和classes.(1)coclass代表在開(kāi)發(fā)環(huán)境中可以使用對(duì)象定義語(yǔ)法直接創(chuàng)建的對(duì)象。在VisualBasic環(huán)境中,可以寫(xiě)為DimpFooAsNewFooObject(2)class不能直接創(chuàng)建新的對(duì)象,但是類的對(duì)象可以作為另一個(gè)類的屬性進(jìn)行創(chuàng)建。(3)abstractclass不能用于創(chuàng)建新類,但是可以作為子類的一個(gè)說(shuō)明。(1)類和對(duì)象GIS設(shè)計(jì)與開(kāi)發(fā)5在abstractclasses,coclasses,和classes之間具有多種可能的類之間的關(guān)系。如上圖所示,一個(gè)Owner(主人)可能有一個(gè)或多個(gè)Landparcels(地塊);一個(gè)Landparcel(地塊)也可能有一個(gè)或多個(gè)Owners(主人)。Associations代表類之間的關(guān)系。(2)關(guān)系GIS設(shè)計(jì)與開(kāi)發(fā)6類的繼承表示特殊類具有超類的所有屬性和方法,同時(shí)具有一些另外的屬性和方法。右圖表示:primaryline和secondaryline是line的子類。(3)類的繼承GIS設(shè)計(jì)與開(kāi)發(fā)7詳細(xì)說(shuō)明請(qǐng)參考電子書(shū):Exploring_ArcObjects.pdf,這里只對(duì)部分知識(shí)加以說(shuō)明,起到一個(gè)入門(mén)的作用??梢允褂貌煌拈_(kāi)發(fā)語(yǔ)言來(lái)進(jìn)行開(kāi)發(fā),但是最容易和最快的還是使用ArcGIS應(yīng)用,VBA:VisualBasicApplication。
1、啟動(dòng)ArcMap。啟動(dòng)ArcMap,并添加一些圖層。
2、使用定制對(duì)話框顯示或隱藏工具條。點(diǎn)擊Tools菜單,點(diǎn)擊Customize子菜單。
6.2開(kāi)始使用VBA和ArcObjectsGIS設(shè)計(jì)與開(kāi)發(fā)8在如上對(duì)話框中,可以選擇或取消某些工具條。
GIS設(shè)計(jì)與開(kāi)發(fā)9點(diǎn)擊New按鈕,在彈出的對(duì)話框中創(chuàng)建新的工具條。注意:在Save下拉菜單中選擇“無(wú)標(biāo)題”,不要選擇Normal.mxt3、創(chuàng)建新的工具條GIS設(shè)計(jì)與開(kāi)發(fā)10
(1)右鍵點(diǎn)擊剛才添加的工具條,點(diǎn)擊右鍵,選擇Customize子菜單。(2)點(diǎn)擊Commands選項(xiàng)卡,
(3)選擇Pan/Zoom類,將需要的命令按鈕利用鼠標(biāo)拖動(dòng)到工具條中。4、在工具條上添加按鈕GIS設(shè)計(jì)與開(kāi)發(fā)11如下圖所示,在Toolbars選項(xiàng)卡中,點(diǎn)擊Rename,修改工具條的名稱。
5、修改工具條的名稱GIS設(shè)計(jì)與開(kāi)發(fā)12(1)右鍵點(diǎn)擊工具條,選擇Customize,(2)然后從工具條中,將相關(guān)的按鈕從工具條中拖出,刪除相關(guān)的按鈕。
7、在工具條上添加菜單
如圖所示,在Customize對(duì)話框中,選擇Menus類,然后拖動(dòng)Commands列表中的相關(guān)菜單到所創(chuàng)建的新的工具條中。也可以直接修改ArcMap的菜單系統(tǒng)。6、從工具條中刪除按鈕GIS設(shè)計(jì)與開(kāi)發(fā)13(1)點(diǎn)擊File菜單,點(diǎn)擊SaveAs。(2)導(dǎo)航到Templates文件夾,保存成模板文件(*.mxt)。
8、將變化存儲(chǔ)到模板中GIS設(shè)計(jì)與開(kāi)發(fā)14可以使用VBA的集成開(kāi)發(fā)環(huán)境,創(chuàng)建宏用于幫助自動(dòng)執(zhí)行一些重復(fù)性的工作,擴(kuò)展內(nèi)置的嵌入函數(shù)。
(1)創(chuàng)建宏使用VB編輯器,可以編輯宏,將宏從一個(gè)模塊拷貝到另外一個(gè)宏,改變存儲(chǔ)宏的模塊的名字,改變宏的名稱。點(diǎn)擊Tools菜單,指向Macros,然后點(diǎn)擊Macros。9、在VBA中創(chuàng)建Macros(宏)GIS設(shè)計(jì)與開(kāi)發(fā)15
在如上圖所示的對(duì)話框中,輸入”MyZoomIn”,然后點(diǎn)擊Create,調(diào)出如下圖所示的VBA的開(kāi)發(fā)環(huán)境。
GIS設(shè)計(jì)與開(kāi)發(fā)16GIS設(shè)計(jì)與開(kāi)發(fā)17代碼解釋:(1)第一行:DimpDocAsIMxDocument定義一個(gè)表示ArcMap文檔的變量。(2)第二行:DimpEnvAsIEnvelope定義一個(gè)矩形,確定數(shù)據(jù)的范圍。(3)ThisDocument:預(yù)定義的變量,代表當(dāng)前的文檔。(4)ActiveView:提供一個(gè)IActiveView接口,將文檔數(shù)據(jù)連接到當(dāng)前的屏幕顯示數(shù)據(jù)。GIS設(shè)計(jì)與開(kāi)發(fā)18(2)關(guān)閉VBA開(kāi)發(fā)環(huán)境,返回到ArcMap。GIS設(shè)計(jì)與開(kāi)發(fā)19在ArcMap環(huán)境中,點(diǎn)擊菜單Tools,指向Macros,然后點(diǎn)擊Macros。選擇Module1.MyZoomIn,然后點(diǎn)擊Run,當(dāng)前的圖層將被放大顯示。(3)運(yùn)行宏GIS設(shè)計(jì)與開(kāi)發(fā)201)點(diǎn)擊Tools菜單,點(diǎn)擊Customize子菜單2)點(diǎn)擊Commands選項(xiàng)卡,選擇Project.Module1.MyZoomIn。
(4)將宏添加到工具條上GIS設(shè)計(jì)與開(kāi)發(fā)213)將Project.Module1.MyZoomIn拖動(dòng)到MyOwnTools工具條上。4)在Customize環(huán)境下,可以右鍵點(diǎn)擊該按鈕,修改其相關(guān)屬性,如點(diǎn)擊ChangeButtonImage,改變圖標(biāo)的類型。5)關(guān)閉Customize對(duì)話框。6)點(diǎn)擊剛才添加的宏按鈕,運(yùn)行相關(guān)的宏。練習(xí):請(qǐng)按照同樣的辦法添加MyZoomOut宏。
區(qū)別在于:將pEnv.Expand0.5,0.5,True
改為:pEnv.Expand2.0,2.0,TrueGIS設(shè)計(jì)與開(kāi)發(fā)22可以在代碼中調(diào)用一些嵌入式命令,如Find命令。具體方法如下:(1)在ArcMap中,點(diǎn)擊Tools,指向Macros,然后點(diǎn)擊VisualBasicEditor。10、調(diào)用嵌入命令GIS設(shè)計(jì)與開(kāi)發(fā)23
(2)在如圖所示的VisualBasicEditor中,在Modules中添加一個(gè)模塊,即Module2,然后添加如下圖所示的代碼。GIS設(shè)計(jì)與開(kāi)發(fā)24(3)返回到ArcMap。(4)右鍵點(diǎn)擊需要添加命令的菜單,點(diǎn)擊Customize,如圖所示,將Commands中的宏拖動(dòng)到菜單條上。GIS設(shè)計(jì)與開(kāi)發(fā)25(5)測(cè)試:調(diào)入一個(gè)圖層,將其放大或縮小,點(diǎn)擊剛才添加的按鈕,對(duì)程序進(jìn)行測(cè)試。GIS設(shè)計(jì)與開(kāi)發(fā)26命令(command)類似于一個(gè)宏,但是允許有更多的定制。命令是UIControl的一種類型。在VBA中創(chuàng)建命令的具體方法如下:(1)在ArcMap環(huán)境中,點(diǎn)擊菜單Tools,Customize。(2)在Customize對(duì)話框中,點(diǎn)擊Commands選項(xiàng)卡,(3)在Save下拉框中,選擇你的Project的名字,或者選擇“無(wú)標(biāo)題”11、在VBA中創(chuàng)建一個(gè)Command(命令)GIS設(shè)計(jì)與開(kāi)發(fā)27(4)在Categories列表框中,選擇UIControls。(5)點(diǎn)擊NewUIControl。(6)在如圖所示的NewUIControl對(duì)話框中,選擇UIButtonControl,然后點(diǎn)擊CreateandEdit.GIS設(shè)計(jì)與開(kāi)發(fā)28下面為UIButtonControl的點(diǎn)擊(Click)事件添加代碼。添加將圖形恢復(fù)到數(shù)據(jù)集的范圍。添加如下代碼:(6)為UIToolControl添加代碼GIS設(shè)計(jì)與開(kāi)發(fā)29(7)下面為該Command添加ToolTip(工具提示)和message(消息)。在Procedure(進(jìn)程)組合框中,選擇Message,并添加如下代碼。GIS設(shè)計(jì)與開(kāi)發(fā)30(8)點(diǎn)擊ToolTip進(jìn)程,并輸入下列代碼GIS設(shè)計(jì)與開(kāi)發(fā)31(9)點(diǎn)擊File,CloseandReturntoArcMap(10)在ArcMap中,點(diǎn)擊Tools,Customize,然后點(diǎn)擊Commands選項(xiàng)。(11)點(diǎn)擊Save下拉框,選擇你的project名,或“無(wú)標(biāo)題”(12)在Categories列表中,選擇UIControls并拖動(dòng)UIButtonControl1到你所創(chuàng)建的工具條上,如圖所示。然后關(guān)閉Customize對(duì)話框。(13)在ArcMap中打開(kāi)一個(gè)圖層,然后進(jìn)行測(cè)試。GIS設(shè)計(jì)與開(kāi)發(fā)32(1)在ArcMap環(huán)境中,點(diǎn)擊Tools,Customize;(2)點(diǎn)擊Commands選項(xiàng)卡,在Save下拉組合框中選擇“無(wú)標(biāo)題”;(3)在Categories列表中選擇UIControls;(4)點(diǎn)擊NewUIControl;(5)選擇UIToolControl類型,點(diǎn)擊CreateandEdit。12、在VBA中創(chuàng)建一個(gè)Tool(工具)GIS設(shè)計(jì)與開(kāi)發(fā)33(6)添加如下代碼GIS設(shè)計(jì)與開(kāi)發(fā)34(7)在UIToolControl1的Enabled事件進(jìn)程中添加如下代碼:(8)在CursorID事件過(guò)程中添加如下代碼,從而控制使用該工具時(shí)的光標(biāo)的類型。GIS設(shè)計(jì)與開(kāi)發(fā)35(9)按照如同11創(chuàng)建一個(gè)Command類似的方法創(chuàng)建ToolTip和message。(10)點(diǎn)擊File,CloseandReturntoArcMap。(11)在ArcMap中,點(diǎn)擊Tools,Customize,然后點(diǎn)擊Commands選項(xiàng)。(12)在Commands列表中,選擇UIControls,然后拖動(dòng)UIToolControl到自己創(chuàng)建的工具條中,然后關(guān)閉Customize對(duì)話框。GIS設(shè)計(jì)與開(kāi)發(fā)36(14)點(diǎn)擊剛才添加的工具按鈕,然后在圖層顯示區(qū)畫(huà)一個(gè)矩形,將執(zhí)行放大處理。(15)如果刪除了所有的圖層,工具按鈕將變?yōu)榛疑?,這是執(zhí)行Enabled事件的結(jié)果。GIS設(shè)計(jì)與開(kāi)發(fā)37(1)右鍵點(diǎn)擊工具條,在彈出菜單中選擇Customize,這時(shí)可以對(duì)按鈕進(jìn)行修改。注意:如果沒(méi)有打開(kāi)Customize對(duì)話框,將不允許對(duì)按鈕進(jìn)行修改。(2)右鍵點(diǎn)擊需要修改的按鈕,選擇ChangeButtonImage,修改按鈕的圖像。13、改變按鈕的屬性GIS設(shè)計(jì)與開(kāi)發(fā)38通過(guò)建立一些定制的用戶接口來(lái)安排標(biāo)準(zhǔn)的用戶界面以及添加新的定制命令。
AO的定制框架允許用戶定制ArcMap,ArcCatalog,以及其他的ArcGIS應(yīng)用??梢酝ㄟ^(guò)管理用戶接口元素:toolbars,menus,commands等等。
(1)文檔(Documents)和模板(Templates)
當(dāng)我們使用ArcMap時(shí),打開(kāi)了一個(gè)圖形文檔(.mxd),該文檔中存儲(chǔ)了圖形的狀態(tài)、定制的用戶接口設(shè)置、以及VBA工程等。理解文檔和模板是理解使用ArcObjects對(duì)ArcGIS的應(yīng)用進(jìn)行定制的關(guān)鍵。對(duì)于不同的應(yīng)用,文檔和模般的結(jié)構(gòu)和功能是不同的。6.3定制用戶接口GIS設(shè)計(jì)與開(kāi)發(fā)39有多種定制ArcMap的方法:(1)通過(guò)給地理數(shù)據(jù)添加空間參考,以及定義數(shù)據(jù)的顯示方式來(lái)定制;(2)通過(guò)創(chuàng)建具有空間參考和輔助值圖要素的圖形輸出來(lái)定制。(3)通過(guò)添加、刪除、重新安排標(biāo)準(zhǔn)用戶接口中的元素來(lái)定制。(4)通過(guò)在VBA工程中添
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 海南思政黨史課題申報(bào)書(shū)
- 材料課題申報(bào)書(shū)范文
- 辦公隔斷合同范例
- 假肢定制合同范例
- 臨滄代理記賬合同范本
- 甘肅教學(xué)課題申報(bào)書(shū)
- 下水道整修合同范本
- 合法派遣合同范本
- 書(shū)畫(huà)掛牌合同范本
- 公司激勵(lì)股合同范本
- 急診醫(yī)院感染與控制課件
- 人教版 七年級(jí)英語(yǔ)下冊(cè) UNIT 2 單元綜合測(cè)試卷(2025年春)
- 2024年“新能源汽車裝調(diào)工”技能及理論知識(shí)考試題與答案
- 【地理】非洲-位置與范圍 高原為主的地形課件-2024-2025學(xué)年湘教版(2024)七下
- 搶救車的管理
- GB/T 44927-2024知識(shí)管理體系要求
- GB/T 17350-2024專用汽車和專用掛車分類、名稱及型號(hào)編制方法
- 2024年07月山東省泰山財(cái)產(chǎn)保險(xiǎn)股份有限公司2024年夏季校園招考29名工作人員筆試歷年參考題庫(kù)附帶答案詳解
- 臨床護(hù)理死亡病例討論
- 2025年廣東韶關(guān)城投集團(tuán)招聘筆試參考題庫(kù)含答案解析
- 醫(yī)療器械生產(chǎn)企業(yè)并購(gòu)合同
評(píng)論
0/150
提交評(píng)論