版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
學號 實習匯報GIS程序設計實習起止日期:年7月13日至年7月19日學生姓名吳餒班級12級地信2班成績指導教師(簽字)地質與測繪學院7月20日GIS程序設計實習一、實習目的通過GIS程序設計實習,使學生理解需求分析、項目管理方案設計、系統(tǒng)總體設計以及系統(tǒng)詳細設計、系統(tǒng)實行、運行和維護等階段要完畢的詳細工作;掌握在C#和ArcEngine環(huán)境下構建應用型地理信息系統(tǒng)的措施。二、實習內容熟悉開發(fā)環(huán)境:VisualStudio;C#;ArcEngine10.1功能需求分析基于組件技術開發(fā)應用型地理信息系統(tǒng)組件式技術已成為當今軟件技術的時尚之一。組件式GIS軟件的基本思想是把GIS各大功能模塊劃分為幾種控件。各個GIS控件之間,以及GIS控件與其他非GIS控件之間,可以以便地通過可視化的軟件開發(fā)工具集成起來,形成最終的GIS應用。重點完畢的工作包括:1)建立ArcGISEngine應用程序框架;2)實現(xiàn)對矢量數(shù)據(jù)(ShapeFile格式)的訪問;3)實現(xiàn)采用簡樸、唯一值、分類等多種方式對面狀矢量數(shù)據(jù)進行渲染(Render)。三、實習環(huán)節(jié):實習一:初識ArcGISEngine開發(fā)環(huán)境1、新建一種Windows窗體應用程序2、在新建窗體中添加控件在工具箱中選擇添加toolbarcontrol,TOCControl,MapControl控件在處理方案資源管理器中雙擊program.cs在主函數(shù)中添加ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Engine);使得文獻可以加載到MapControl中。右擊toolbarcontrol選擇屬性,如圖選擇Items選項,添加如圖控件右擊MapControl屬性,在General的mapdocument中添加要加載的地圖文獻通過以上環(huán)節(jié)添加的控件還只是單獨存在,而我們的程序需要各控件間協(xié)同工作,因此要進行控件綁定。分別右擊ToolbarControl、TOCControl控件,將Buddy設置為axMapControl1。試運行一下如圖可以看出基本框架已經搭建好了,不過還得調整一下布局在工具箱的所有Windows窗體下選擇控件,放在窗體里,如圖分別選擇窗體里TOCControl,MapControl的屬性,將其Dock值設置為fill,如圖調整窗體布局如圖實習二:建立ArcGISEngine應用程序框架2.1地圖瀏覽1、新建項目,添加控件 新建windows窗體應用程序,選擇工具箱中StatusStrip(狀態(tài)欄),將其拖入到窗體,再選擇工具箱中的ToolbarControl控件拖入窗體,修改dock值為TOP,再將SplitContainer控件拖入窗體,Dock設置為Fill,將TabControl控件拖入Panel1,將Alignment屬性設置為Bottom,Dock屬性設置為Fill。點擊TabPages屬性右邊的按鈕,彈出TabPage集合編輯器,將tabPage1的Name設置為“Layer”,Text設置為“圖層”;將tabPage2的Name設置為“Property”,Text設置為“屬性”。 選擇“圖層”選項卡,拖入TOCControl控件,設置Dock屬性為Fill,選擇“屬性”選項卡,拖入所有Windows窗體|PropertyGrid控件,設置Dock屬性為Fill。拖入TabControl控件到Panel2,設置Dock屬性為Fill。成果如圖所示:2、加shp數(shù)據(jù) 在工具箱中選擇MenuStrip控件,添加到左上角,命名為文獻,下拉選項為打開矢量數(shù)據(jù)和打開柵格數(shù)據(jù),如圖:同樣添加地圖渲染,及其下拉選項簡樸渲染、唯一值渲染、分級渲染,如圖:3、代碼處理 選中文獻控件下的加入矢量數(shù)據(jù)控件,雙擊事件并寫入代碼,在開始使用ArcGISEngine進行編碼前,首先需要添加ArcGIS的引用,在處理方案管理器中右鍵點擊“添加引用”,如圖:usingESRI.ArcGIS.Carto;usingESRI.ArcGIS.Controls;usingESRI.ArcGIS.esriSystem;usingESRI.ArcGIS.Display;usingESRI.ArcGIS.Geometry;usingESRI.ArcGIS.SystemUI;usingESRI.ArcGIS.DataSourcesRaster;///////////////為SHP數(shù)據(jù)功能增長的類庫usingESRI.ArcGIS.DataSourcesFile;usingESRI.ArcGIS.Geodatabase;usingSystem.IO;鍵入的代碼如圖:實習三:矢量要素符號化簡樸渲染選中“簡樸渲染”菜單,在屬性框中點擊事件按鈕,在事件列表中雙擊Click事件;或者雙擊“簡樸渲染”菜單,在措施內輸入處理代碼。部分代碼如下:privatevoid簡樸渲染ToolStripMenuItem_Click(objectsender,EventArgse){IFeatureLayerpFLForRender=axMapControl1.get_Layer(0)asIFeatureLayer;SimpleRender(pFLForRender,@"");}privatevoidSimpleRender(IFeatureLayerpFeatureLayer,stringsFieldName){//設置用于渲染的顏色IRgbColorpColor=newRgbColor();pColor.Red=255;pColor.Blue=0;pColor.Green=0;//設置用于渲染的符號的基本屬性(面狀符號)ISimpleFillSymbolpSFSBase=newSimpleFillSymbol();pSFSBase.Style=esriSimpleFillStyle.esriSFSSolid;//設置填充方式pSFSBase.Outline.Width=0.4;//設置邊框的寬度pSFSBase.Color=pColorasIColor;//設置簡樸渲染的有關屬性ISimpleRendererpSR=newSimpleRenderer();pSR.Symbol=pSFSBaseasISymbol;//接口轉換,對渲染方式進行設置IGeoFeatureLayerpGFL=pFeatureLayerasIGeoFeatureLayer;pGFL.Renderer=pSRasIFeatureRenderer;//地圖刷新axMapControl1.Refresh();}唯一值渲染privatevoid唯一值渲染ToolStripMenuItem_Click(objectsender,EventArgse){IFeatureLayerpFLForRender=axMapControl1.get_Layer(0)asIFeatureLayer;DefineUniqueValueRender(pFLForRender,@"CONTINENT");}privatevoidDefineUniqueValueRender(IFeatureLayerpFeatureLayer,stringsFieldName){//變量申明boolbValFound;//判斷要素值與否存在intiFieldIndex;//用于存儲字段所在的索引值//設置顏色列表,用于隨機生成顏色(用于填充面狀要素)//設置顏色的基本屬性,包括色調(H)、飽和度(S)以及亮度(V)IRandomColorRamppRCR=newRandomColorRamp();pRCR.StartHue=76;pRCR.EndHue=188;pRCR.MinSaturation=20;pRCR.MaxSaturation=40;pRCR.MaxValue=85;pRCR.MaxValue=100;pRCR.UseSeed=true;pRCR.Seed=43;//設置唯一值渲染的有關屬性IUniqueValueRendererpUVR=newUniqueValueRenderer();pUVR.FieldCount=1;pUVR.set_Field(0,sFieldName);//遍歷要素類的所有要素,并為每個要素設置基本的渲染形式//遍歷要素類中的所有要素IFeatureClasspFC=pFeatureLayer.FeatureClass;IFeatureCursorpFCursor=pFC.Search(null,false);//通過遍歷,返回要素指針(FeatureCursor)IFeaturepFeature=pFCursor.NextFeature();//獲取目前第一種要素//獲得指定字段的索引值IFieldspFields=pFCursor.Fields;iFieldIndex=pFields.FindField(sFieldName);//為不一樣的要素,設置不一樣的填充顏色pRCR.Size=pFC.FeatureCount(null);//獲得應產生的顏色的數(shù)目boolbOK;pRCR.CreateRamp(outbOK);//判斷隨機顏色生產與否成功?//獲得隨機生成的顏色列表IEnumColorspEnumColors=pRCR.Colors;pEnumColors.Reset();IColorpColorForFeature=pEnumColors.Next();//開始遍歷,為每個要素設置基本的渲染信息while(pFeature!=null){//為每個要素設置基本的渲染符號ISimpleFillSymbolpSFSForFeature=newSimpleFillSymbol();pSFSForFeature.Style=esriSimpleFillStyle.esriSFSSolid;pSFSForFeature.Outline.Width=0.4;pSFSForFeature.Color=pColorForFeature;//獲得目前要素中指定字段的名稱stringsFeatureName;sFeatureName=pFeature.get_Value(iFieldIndex)asstring;//設置唯一值渲染的有關屬性pUVR.AddValue(sFeatureName,sFieldName,pSFSForFeatureasISymbol);pUVR.set_Label(sFeatureName,sFeatureName);pUVR.set_Symbol(sFeatureName,pSFSForFeatureasISymbol);//設置該值渲染信息//獲得下一組要素和顏色pFeature=pFCursor.NextFeature();pColorForFeature=pEnumColors.Next();}//接口轉換,對渲染方式進行設置IGeoFeatureLayerpGFL=pFeatureLayerasIGeoFeatureLayer;pGFL.Renderer=pUVRasIFeatureRenderer;//地圖刷新axMapControl1.Refresh();}3、分級渲染 先打開ArcMap講要導入數(shù)據(jù)的屬性表打開添加一種字段命名為X,并進行計算幾何處理,分級渲染便以這個字段里的值分級,分為兩級,最小值到90,和90到最大值。代碼如下:privatevoid分類渲染ToolStripMenuItem_Click(objectsender,EventArgse){IFeatureLayerpFLForRender=axMapControl1.get_Layer(0)asIFeatureLayer;ClassBreakRender(pFLForRender,@"x");}privatevoidClassBreakRender(IFeatureLayerpFL,stringsFieldName){IRandomColorRamppRCR=newRandomColorRamp();IClassBreaksRendererpCBR=newClassBreaksRenderer();pRCR.StartHue=76;pRCR.EndHue=188;pRCR.MinSaturation=20;pRCR.MaxSaturation=40;pRCR.MinValue=85;pRCR.MaxValue=100;pRCR.UseSeed=true;pRCR.Seed=43;pCBR.Field=sFieldName;pCBR.BreakCount=2;IFeatureClasspFC=pFL.FeatureClass;pRCR.Size=3;boolbOK;pRCR.CreateRamp(outbOK);if(bOK==true){IEnumColorspEC=pRCR.Colors;pEC.Reset();IColorpColorForFeature=pEC.Next();for(inti=0;i<pCBR.BreakCount;i++){ISimpleFillSymbolpSFSForFeature=newSimpleFillSymbol();ISimpleFillSymbolpSFSForFeature1=newSimpleFillSymbol();pSFSForFeature.Style=esriSimpleFillStyle.esriSFSSolid;pSFSForFeature.Outline.Width=0.4;pSFSForFeature.Color=pColorForFeature;switch(i){case0:pCBR.set_Break(i,90);pCBR.set_Label(i,"-92-90");pCBR.set_Description(i,"-92-90");pCBR.set_Symbol(i,pSFSForFeatureasISymbol);pSFSForFeature1.Color=pSFSForFeature.Color;br
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版地質公園場地規(guī)劃與咨詢服務合同3篇
- 《英國文學》課件
- 二零二五年汽車租賃與共享出行服務合同2篇
- 2025投資公司借款合同范本
- 2025年度金融資產委托代理合同補充協(xié)議(證券業(yè)務)3篇
- 2025信息查詢技術服務合同范本
- 2025年度鐵路信號維護施工合同范本3篇
- 個人與公司2024年度物流運輸服務合同3篇
- 2025借款合同甲方乙方模板
- 家具行業(yè)試用期合同簽訂指南
- 第8課《列夫-托爾斯泰》公開課一等獎創(chuàng)新教學設計
- 人教版2024-2025學年七年級數(shù)學上冊計算題專項訓專題09運用運算律簡便運算(計算題專項訓練)(學生版+解析)
- GB 26134-2024乘用車頂部抗壓強度
- 2024年高中生物新教材同步必修第二冊學習筆記第3章 本章知識網絡
- (正式版)YS∕T 5040-2024 有色金屬礦山工程項目可行性研究報告編制標準
- 2024版軟包合同模板
- GB/T 36548-2024電化學儲能電站接入電網測試規(guī)程
- NB-T+31010-2019陸上風電場工程概算定額
- JT-T-617.7-2018危險貨物道路運輸規(guī)則第7部分:運輸條件及作業(yè)要求
- 2024土方運輸居間合同范本
- 新概念英語第二冊考評試卷含答案(第49-56課)
評論
0/150
提交評論