地理信息系統工程實驗報告_第1頁
地理信息系統工程實驗報告_第2頁
地理信息系統工程實驗報告_第3頁
地理信息系統工程實驗報告_第4頁
地理信息系統工程實驗報告_第5頁
已閱讀5頁,還剩4頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、地理信息系統工程實驗報告(二)一、實驗內容 本次實驗在上次實驗所創建項目的基礎上進行,圍繞鷹眼窗口的地圖同步功能的實現過程展開,通過學習 MapControl 控件的事件處理過程,了解事件處理的基本概念和調用結構;通過學習 Map 組件的事件處理過程,了解利用程序代碼處理組件事件;了解“事件驅動”模式的基本概念,了解事件處理的控制流程及其涉及的主要部分,了解事件處理函數的定義規則和作用,學會利用時序圖表達事件處理過程,學會通過編寫代碼的方式自定義事件委托和事件處理函數的基本方法。二、實驗原理方案“事件驅動”“事件驅動”是一種常用的交互式程序控制模式,“事件”通常代表程序對象的某些特殊狀態,這些

2、狀態是其他交互對象或者外界交互設備所關注的,它們可以根據這些狀態做出特定的響應,那么程序對象就需要一種機制能夠在這些特殊狀態發生時通知其他交互方,而其他交互方也需要能自由選擇對應的響應行為,這種機制就是“事件處理”機制。如果將主窗口看作被控制方,將鷹眼窗口看作控制方,則同步過程可以看作一種典型的事件處理過程,由控制方監聽被控制方的“加載地圖”事件,然后在事件響應中加載與被控制方相同的地圖數據。“觸發”“事件監聽”“事件處理函數”“事件響應”三、實驗器材計算機 vs2010 AE10.1四、實驗步驟1、打開上次的工程文件MyGISProgress;2、在工具欄中找到屬性按鈕標簽,單擊,再在窗體體

3、設計窗口中單擊Form1窗口,查看相應的屬性找到“”事件標簽并單擊,然后雙擊Load;3、按照2中的類似方式打開MapControl1的OnMapReplaced事件并雙擊打開代碼編輯。五、實驗結果分析 能進行交互操作 問題:鷹眼窗口和主地圖窗口都是不可修改的內置事件,所以要交互必須要有一個中間過渡 get_Layer的問題 既然 ItemAdded 表示添加一個新圖層的事件,為什么沒有命名為更直接的LayerAdded?通常地圖都需要加上一個鷹眼,要實現鷹眼功能,不可避免的就需要實現主地圖和鷹眼的同步。令人失望的是ArcGIS的幫助文檔和范例中都采用同時在主地圖和鷹眼中加載mxd文檔的方式來

4、實現同步的,確切的說,這樣只是加載了地圖,并沒有實現同步。如果程序啟動后并沒有加載任何地圖文檔,而只是添加圖層,那么這種處理方式就暴露馬腳了。其實會出問題的不僅僅是這種情況,當我們修改主地圖的符號、樣式等時,也會有問題,因此我們必須使用同步加載圖層的方式來才能實現主圖和鷹眼的同步。所謂同步加載圖層,就是指直接在鷹眼中加載主圖的圖層,同步就是指主地圖中的圖層發生變化時這些變化也都要反映到鷹眼中去。    加載mxd文檔好辦,根據AE的幫助說明,當加載mxd文檔后,MapControl會觸發OnMapReplaced事件,我們可以在這個事件中添加相應的處理。但是當添加圖層時,M

5、apControl并沒有并沒有LayerAdded之類的事件,這種情況下,如果要同步鷹眼和主地圖,就需要捕獲類似于LayerAdded之類的事件。如何實現呢,答案就是IActiveViewEvents,具體如下: 添加事件對InitializeComponent 方法的影響,“+=”操作符 The operation was attempted on an empty geometry.六、實驗小結地理信息工程實驗報告(三)一、實驗內容本實驗是在上一實驗的鷹眼窗口中進行對圖形元素的操作,實現在鷹眼窗口中實時顯示地圖主窗口顯示范圍標志,并能在鷹眼中利用鼠標控制矩形框來控制主窗口地圖顯示范圍,主要

6、利用到IEnvelope 接口類型的組件對象,進行矩形框的代碼編寫(在上一實驗中其實已經實現);了解 Map 組件在數據管理上的圖層化結構,掌握AO 組件顯示空間數據的基本模式:幾何圖形+顯示符號,了解并熟練掌握IGraphicsContainer,IRectangleElement,IElement,ILineSymbol,IFillSymbol等一些與圖形元素繪制相關接口的應用。二、實驗原理1、在 AO 組件庫中只有一個組件實現了 IEnvelope接口,即 Envelope 組件,它表示了一種特殊的矩形,這種矩形的邊框與顯示窗口的邊框是平行的,常常用來表達其他空間圖形的最小外包矩形(ME

7、R),在本實驗中我們可以獲取地圖主窗口的 Extent 屬性并將其矩形繪制在鷹眼窗口中,這樣就實現了在鷹眼中標志地圖顯示范圍的效果。2、Element元素對象是一個非常龐雜的對象集合,主要分為兩大部分:圖形元素(Graphic Element)和框架元素(Frame Element),本實驗我們主要討論應用圖形元素。其中IElement是所有圖形元素都實現的接口,它可以確定元素的Geometry屬性,Element是一個抽象類。把圖形元素添加到視圖并顯示,主要步驟如下:a、IGraphicsContainer創建一個容器并清除原來元素;b、創建矩形,定義矩形,獲取新建矩形;c、創建相應地理要素

8、,定義線性,線色,填充等符號特性d、在容器IGraphicsContainer中加載元素,刷新視圖,讓添加的元素可以顯示出來。三、實驗儀器四、實驗步驟1、打開MyGISProgress工程文件2、在設計窗口單擊MapControl1,找到OnExtenUpDated事件并雙擊打開,進行相應的代碼編寫3、進行矩形框的具體代碼設計,主要涉及的接口類型和方法有,IGraphicsContainer,IActiveView,IRectangleElement,IElement,IEnvelope,IRgbColor,ILineSymbol,IFillSymbol,DeleteAllElement(),

9、AddElement()等等。4、打開MapControl2中的OnMouseDown事件,并進行相應代碼的編寫,判斷當點擊鼠標左右鍵的區別,本實驗中設定的是:點擊左鍵移動當前矩形框的幾何中心,點擊右鍵并拖動可以改變矩形框大小,并在MapControl1中進行響應。主要用到兩個if()判斷,和IPoint,CenterAt(),和Extent等接口和屬性。5、同樣的道理我們可以在MapControl1的OnMouseDown事件中點擊右鍵拖動,也可以顯示相應的圖層大小,并在鷹眼中顯示同步并且可以改變矩形框的大小。6、進行程序調試直至完成。五、實驗結果本實驗的結果為,調試后未添加圖層之前,在Ma

10、pControl2鷹眼窗口初始化一個紅色的矩形框,表示MapControl1地圖主窗口的顯示范圍,加載圖層后單擊左鍵可以移動矩形框,改變地圖主窗口的顯示區域,拖曳鼠標右鍵可以改變矩形框大小,擴大圖層顯示比例。在實驗過程中,我們要在Form_Load()事件中,加入矩形框的初始化語句才能使得沒有加載圖層之前,就已經出現矩形框; 當加載圖層后,在IExtendsUpdated()事件中定義矩形框、圖形元素和顯示范圍等,然后在OnMouseDown()事件中判斷對矩形框的相應操作,六、實驗小結實驗四利用 Geodatabase API 讀取 shapefiles 數據一、實驗內容本實驗繼續之前的My

11、GISProgress工程實驗,即主要完成屬性表的顯示和shapefiles文件的添加兩個右鍵菜單功能的實現。實驗通過 shapefiles 數據的讀取操作,認識 Geodatabase 數據模型下矢量數據的基本管理結構和應用特征,理解 Geodatabase 數據模型的基本框架,掌握 AO 組件中的 Geodatabase API 基本調用規則,初步了解ESRI.ArcGIS.Geodatabase 庫和ESRI.ArcGIS.DataSourceFile 庫及其與本實驗相關的接口如IWorkspaceFactory,IWorkspace,esriDatasetType,IDatasetIE

12、numDataset,IFeatureClass,Shape。實驗通過添加窗體、DataGridView控件進行相應shapefile圖層屬性表的顯示和添加ContextMenuStrip控件進行右鍵菜單的實現。二、實驗原理1、Geodatabase 的概念框架完全植根于關系型DBMS 的相關理論,在關系型 DBMS數據存儲的基本結構是:數據庫->數據集的集合->數據集->數據記錄,其中的“->”表達包含關系。在 AO 的 Geodatabase API中都有對照的接口,數據庫對應于 IWorkspace,數據集的集合對應于 IDatasets,數據集對應于 IData

13、set,而字段對應于 IField,在矢量要素環境下數據記錄對應于IFeature,有不同的組件實現了上述接口,也有的組件同時實現了上述接口中的多個接口。本實驗將通過 Shapefiles 數據的讀取操作,分別介紹相關組件和接口的調用方法。2、由于 Shapefile 文件的數據庫是以文件形式存儲在本地磁盤中的,因此可以利用 IWorkspaceFactory 接口定義的OpenFromFile 方法來創建一個連接了指定 Shapefile 數據庫的 Workspace 組件對象;要連接 Shapefile 文件的數據庫,必須通過利用 Shape 組件對象創建 Workspace 組件對象的方

14、式來實現。Workspace 被定義為“數據集的集合的集合”,數據庫中的數據集先按照類型被組合為多種“數據集的集合”(Datasets),然后這些個 Datasets 再組合為 Workspace,從而一個 Workspace 中能包含多種類型的數據集。因此,在這一模型下,要獲取一個指定的數據集組件對象,需要先獲取指定類型的“數據集的集合”(Datasets),這是一個實現了 IEnumDataset 接口的組件對象,然后在這個對象中查找指定的數據集組件對象。三、實驗儀器四、實驗步驟1、打開MyGISProgress工程項目;2、新建一個窗體,將窗體的 Name 屬性修改為“LayerAttrib”,將窗體的 Text 屬性修改為“圖層屬性表”。 然后向窗體中拖入一個 DataGridView 、MapControl、GroupBox控件及適當按

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論