版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、地理信息系統(tǒng)工程實(shí)驗(yàn)報(bào)告(二)一、實(shí)驗(yàn)內(nèi)容 本次實(shí)驗(yàn)在上次實(shí)驗(yàn)所創(chuàng)建項(xiàng)目的基礎(chǔ)上進(jìn)行,圍繞鷹眼窗口的地圖同步功能的實(shí)現(xiàn)過程展開,通過學(xué)習(xí) MapControl 控件的事件處理過程,了解事件處理的基本概念和調(diào)用結(jié)構(gòu);通過學(xué)習(xí) Map 組件的事件處理過程,了解利用程序代碼處理組件事件;了解“事件驅(qū)動(dòng)”模式的基本概念,了解事件處理的控制流程及其涉及的主要部分,了解事件處理函數(shù)的定義規(guī)則和作用,學(xué)會(huì)利用時(shí)序圖表達(dá)事件處理過程,學(xué)會(huì)通過編寫代碼的方式自定義事件委托和事件處理函數(shù)的基本方法。二、實(shí)驗(yàn)原理方案“事件驅(qū)動(dòng)”“事件驅(qū)動(dòng)”是一種常用的交互式程序控制模式,“事件”通常代表程序?qū)ο蟮哪承┨厥鉅顟B(tài),這些
2、狀態(tài)是其他交互對(duì)象或者外界交互設(shè)備所關(guān)注的,它們可以根據(jù)這些狀態(tài)做出特定的響應(yīng),那么程序?qū)ο缶托枰环N機(jī)制能夠在這些特殊狀態(tài)發(fā)生時(shí)通知其他交互方,而其他交互方也需要能自由選擇對(duì)應(yīng)的響應(yīng)行為,這種機(jī)制就是“事件處理”機(jī)制。如果將主窗口看作被控制方,將鷹眼窗口看作控制方,則同步過程可以看作一種典型的事件處理過程,由控制方監(jiān)聽被控制方的“加載地圖”事件,然后在事件響應(yīng)中加載與被控制方相同的地圖數(shù)據(jù)?!坝|發(fā)”“事件監(jiān)聽”“事件處理函數(shù)”“事件響應(yīng)”三、實(shí)驗(yàn)器材計(jì)算機(jī) vs2010 AE10.1四、實(shí)驗(yàn)步驟1、打開上次的工程文件MyGISProgress;2、在工具欄中找到屬性按鈕標(biāo)簽,單擊,再在窗體體
3、設(shè)計(jì)窗口中單擊Form1窗口,查看相應(yīng)的屬性找到“”事件標(biāo)簽并單擊,然后雙擊Load;3、按照2中的類似方式打開MapControl1的OnMapReplaced事件并雙擊打開代碼編輯。五、實(shí)驗(yàn)結(jié)果分析 能進(jìn)行交互操作 問題:鷹眼窗口和主地圖窗口都是不可修改的內(nèi)置事件,所以要交互必須要有一個(gè)中間過渡 get_Layer的問題 既然 ItemAdded 表示添加一個(gè)新圖層的事件,為什么沒有命名為更直接的LayerAdded?通常地圖都需要加上一個(gè)鷹眼,要實(shí)現(xiàn)鷹眼功能,不可避免的就需要實(shí)現(xiàn)主地圖和鷹眼的同步。令人失望的是ArcGIS的幫助文檔和范例中都采用同時(shí)在主地圖和鷹眼中加載mxd文檔的方式來
4、實(shí)現(xiàn)同步的,確切的說,這樣只是加載了地圖,并沒有實(shí)現(xiàn)同步。如果程序啟動(dòng)后并沒有加載任何地圖文檔,而只是添加圖層,那么這種處理方式就暴露馬腳了。其實(shí)會(huì)出問題的不僅僅是這種情況,當(dāng)我們修改主地圖的符號(hào)、樣式等時(shí),也會(huì)有問題,因此我們必須使用同步加載圖層的方式來才能實(shí)現(xiàn)主圖和鷹眼的同步。所謂同步加載圖層,就是指直接在鷹眼中加載主圖的圖層,同步就是指主地圖中的圖層發(fā)生變化時(shí)這些變化也都要反映到鷹眼中去。 加載mxd文檔好辦,根據(jù)AE的幫助說明,當(dāng)加載mxd文檔后,MapControl會(huì)觸發(fā)OnMapReplaced事件,我們可以在這個(gè)事件中添加相應(yīng)的處理。但是當(dāng)添加圖層時(shí),M
5、apControl并沒有并沒有LayerAdded之類的事件,這種情況下,如果要同步鷹眼和主地圖,就需要捕獲類似于LayerAdded之類的事件。如何實(shí)現(xiàn)呢,答案就是IActiveViewEvents,具體如下: 添加事件對(duì)InitializeComponent 方法的影響,“+=”操作符 The operation was attempted on an empty geometry.六、實(shí)驗(yàn)小結(jié)地理信息工程實(shí)驗(yàn)報(bào)告(三)一、實(shí)驗(yàn)內(nèi)容本實(shí)驗(yàn)是在上一實(shí)驗(yàn)的鷹眼窗口中進(jìn)行對(duì)圖形元素的操作,實(shí)現(xiàn)在鷹眼窗口中實(shí)時(shí)顯示地圖主窗口顯示范圍標(biāo)志,并能在鷹眼中利用鼠標(biāo)控制矩形框來控制主窗口地圖顯示范圍,主要
6、利用到IEnvelope 接口類型的組件對(duì)象,進(jìn)行矩形框的代碼編寫(在上一實(shí)驗(yàn)中其實(shí)已經(jīng)實(shí)現(xiàn));了解 Map 組件在數(shù)據(jù)管理上的圖層化結(jié)構(gòu),掌握AO 組件顯示空間數(shù)據(jù)的基本模式:幾何圖形+顯示符號(hào),了解并熟練掌握IGraphicsContainer,IRectangleElement,IElement,ILineSymbol,IFillSymbol等一些與圖形元素繪制相關(guān)接口的應(yīng)用。二、實(shí)驗(yàn)原理1、在 AO 組件庫中只有一個(gè)組件實(shí)現(xiàn)了 IEnvelope接口,即 Envelope 組件,它表示了一種特殊的矩形,這種矩形的邊框與顯示窗口的邊框是平行的,常常用來表達(dá)其他空間圖形的最小外包矩形(ME
7、R),在本實(shí)驗(yàn)中我們可以獲取地圖主窗口的 Extent 屬性并將其矩形繪制在鷹眼窗口中,這樣就實(shí)現(xiàn)了在鷹眼中標(biāo)志地圖顯示范圍的效果。2、Element元素對(duì)象是一個(gè)非常龐雜的對(duì)象集合,主要分為兩大部分:圖形元素(Graphic Element)和框架元素(Frame Element),本實(shí)驗(yàn)我們主要討論應(yīng)用圖形元素。其中IElement是所有圖形元素都實(shí)現(xiàn)的接口,它可以確定元素的Geometry屬性,Element是一個(gè)抽象類。把圖形元素添加到視圖并顯示,主要步驟如下:a、IGraphicsContainer創(chuàng)建一個(gè)容器并清除原來元素;b、創(chuàng)建矩形,定義矩形,獲取新建矩形;c、創(chuàng)建相應(yīng)地理要素
8、,定義線性,線色,填充等符號(hào)特性d、在容器IGraphicsContainer中加載元素,刷新視圖,讓添加的元素可以顯示出來。三、實(shí)驗(yàn)儀器四、實(shí)驗(yàn)步驟1、打開MyGISProgress工程文件2、在設(shè)計(jì)窗口單擊MapControl1,找到OnExtenUpDated事件并雙擊打開,進(jìn)行相應(yīng)的代碼編寫3、進(jìn)行矩形框的具體代碼設(shè)計(jì),主要涉及的接口類型和方法有,IGraphicsContainer,IActiveView,IRectangleElement,IElement,IEnvelope,IRgbColor,ILineSymbol,IFillSymbol,DeleteAllElement(),
9、AddElement()等等。4、打開MapControl2中的OnMouseDown事件,并進(jìn)行相應(yīng)代碼的編寫,判斷當(dāng)點(diǎn)擊鼠標(biāo)左右鍵的區(qū)別,本實(shí)驗(yàn)中設(shè)定的是:點(diǎn)擊左鍵移動(dòng)當(dāng)前矩形框的幾何中心,點(diǎn)擊右鍵并拖動(dòng)可以改變矩形框大小,并在MapControl1中進(jìn)行響應(yīng)。主要用到兩個(gè)if()判斷,和IPoint,CenterAt(),和Extent等接口和屬性。5、同樣的道理我們可以在MapControl1的OnMouseDown事件中點(diǎn)擊右鍵拖動(dòng),也可以顯示相應(yīng)的圖層大小,并在鷹眼中顯示同步并且可以改變矩形框的大小。6、進(jìn)行程序調(diào)試直至完成。五、實(shí)驗(yàn)結(jié)果本實(shí)驗(yàn)的結(jié)果為,調(diào)試后未添加圖層之前,在Ma
10、pControl2鷹眼窗口初始化一個(gè)紅色的矩形框,表示MapControl1地圖主窗口的顯示范圍,加載圖層后單擊左鍵可以移動(dòng)矩形框,改變地圖主窗口的顯示區(qū)域,拖曳鼠標(biāo)右鍵可以改變矩形框大小,擴(kuò)大圖層顯示比例。在實(shí)驗(yàn)過程中,我們要在Form_Load()事件中,加入矩形框的初始化語句才能使得沒有加載圖層之前,就已經(jīng)出現(xiàn)矩形框; 當(dāng)加載圖層后,在IExtendsUpdated()事件中定義矩形框、圖形元素和顯示范圍等,然后在OnMouseDown()事件中判斷對(duì)矩形框的相應(yīng)操作,六、實(shí)驗(yàn)小結(jié)實(shí)驗(yàn)四利用 Geodatabase API 讀取 shapefiles 數(shù)據(jù)一、實(shí)驗(yàn)內(nèi)容本實(shí)驗(yàn)繼續(xù)之前的My
11、GISProgress工程實(shí)驗(yàn),即主要完成屬性表的顯示和shapefiles文件的添加兩個(gè)右鍵菜單功能的實(shí)現(xiàn)。實(shí)驗(yàn)通過 shapefiles 數(shù)據(jù)的讀取操作,認(rèn)識(shí) Geodatabase 數(shù)據(jù)模型下矢量數(shù)據(jù)的基本管理結(jié)構(gòu)和應(yīng)用特征,理解 Geodatabase 數(shù)據(jù)模型的基本框架,掌握 AO 組件中的 Geodatabase API 基本調(diào)用規(guī)則,初步了解ESRI.ArcGIS.Geodatabase 庫和ESRI.ArcGIS.DataSourceFile 庫及其與本實(shí)驗(yàn)相關(guān)的接口如IWorkspaceFactory,IWorkspace,esriDatasetType,IDatasetIE
12、numDataset,IFeatureClass,Shape。實(shí)驗(yàn)通過添加窗體、DataGridView控件進(jìn)行相應(yīng)shapefile圖層屬性表的顯示和添加ContextMenuStrip控件進(jìn)行右鍵菜單的實(shí)現(xiàn)。二、實(shí)驗(yàn)原理1、Geodatabase 的概念框架完全植根于關(guān)系型DBMS 的相關(guān)理論,在關(guān)系型 DBMS數(shù)據(jù)存儲(chǔ)的基本結(jié)構(gòu)是:數(shù)據(jù)庫->數(shù)據(jù)集的集合->數(shù)據(jù)集->數(shù)據(jù)記錄,其中的“->”表達(dá)包含關(guān)系。在 AO 的 Geodatabase API中都有對(duì)照的接口,數(shù)據(jù)庫對(duì)應(yīng)于 IWorkspace,數(shù)據(jù)集的集合對(duì)應(yīng)于 IDatasets,數(shù)據(jù)集對(duì)應(yīng)于 IData
13、set,而字段對(duì)應(yīng)于 IField,在矢量要素環(huán)境下數(shù)據(jù)記錄對(duì)應(yīng)于IFeature,有不同的組件實(shí)現(xiàn)了上述接口,也有的組件同時(shí)實(shí)現(xiàn)了上述接口中的多個(gè)接口。本實(shí)驗(yàn)將通過 Shapefiles 數(shù)據(jù)的讀取操作,分別介紹相關(guān)組件和接口的調(diào)用方法。2、由于 Shapefile 文件的數(shù)據(jù)庫是以文件形式存儲(chǔ)在本地磁盤中的,因此可以利用 IWorkspaceFactory 接口定義的OpenFromFile 方法來創(chuàng)建一個(gè)連接了指定 Shapefile 數(shù)據(jù)庫的 Workspace 組件對(duì)象;要連接 Shapefile 文件的數(shù)據(jù)庫,必須通過利用 Shape 組件對(duì)象創(chuàng)建 Workspace 組件對(duì)象的方
14、式來實(shí)現(xiàn)。Workspace 被定義為“數(shù)據(jù)集的集合的集合”,數(shù)據(jù)庫中的數(shù)據(jù)集先按照類型被組合為多種“數(shù)據(jù)集的集合”(Datasets),然后這些個(gè) Datasets 再組合為 Workspace,從而一個(gè) Workspace 中能包含多種類型的數(shù)據(jù)集。因此,在這一模型下,要獲取一個(gè)指定的數(shù)據(jù)集組件對(duì)象,需要先獲取指定類型的“數(shù)據(jù)集的集合”(Datasets),這是一個(gè)實(shí)現(xiàn)了 IEnumDataset 接口的組件對(duì)象,然后在這個(gè)對(duì)象中查找指定的數(shù)據(jù)集組件對(duì)象。三、實(shí)驗(yàn)儀器四、實(shí)驗(yàn)步驟1、打開MyGISProgress工程項(xiàng)目;2、新建一個(gè)窗體,將窗體的 Name 屬性修改為“LayerAttrib”,將窗體的 Text 屬性修改為“圖層屬性表”。 然后向窗體中拖入一個(gè) DataGridView 、MapControl、GroupBox控件及適當(dāng)按
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 瓦斯泵工崗前標(biāo)準(zhǔn)化考核試卷含答案
- 爬行類養(yǎng)殖工誠信品質(zhì)能力考核試卷含答案
- 雷達(dá)調(diào)試工安全演練競(jìng)賽考核試卷含答案
- 海關(guān)協(xié)管員培訓(xùn)
- 銀行內(nèi)部審計(jì)工作評(píng)價(jià)制度
- 超市員工勞動(dòng)紀(jì)律制度
- 濟(jì)南正煌中醫(yī)員工培訓(xùn)
- 寧蕪鐵路擴(kuò)能改造工程(220千伏牧板2588線、220千伏東板2589線塔桿線遷移項(xiàng)目)環(huán)境影響報(bào)告表
- 流程培訓(xùn)課件
- 流水線培訓(xùn)教學(xué)課件
- 標(biāo)準(zhǔn)化在企業(yè)知識(shí)管理和學(xué)習(xí)中的應(yīng)用
- 高中思政課考試分析報(bào)告
- 發(fā)展?jié)h語中級(jí)閱讀教學(xué)設(shè)計(jì)
- 《異丙腎上腺素》課件
- 本質(zhì)安全設(shè)計(jì)及其實(shí)施
- 超聲引導(dǎo)下椎管內(nèi)麻醉
- 包裝秤說明書(8804C2)
- 中小學(xué)教師職業(yè)道德考核辦法
- 大門圍墻施工組織設(shè)計(jì)方案
- 濟(jì)青高速現(xiàn)澆箱梁施工質(zhì)量控制QC成果
- 管道對(duì)接施工方案正式版
評(píng)論
0/150
提交評(píng)論