




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
學(xué)號 實(shí)習(xí)匯報GIS程序設(shè)計實(shí)習(xí)起止日期:年7月13日至年7月19日學(xué)生姓名吳餒班級12級地信2班成績指導(dǎo)教師(簽字)地質(zhì)與測繪學(xué)院7月20日GIS程序設(shè)計實(shí)習(xí)一、實(shí)習(xí)目的通過GIS程序設(shè)計實(shí)習(xí),使學(xué)生理解需求分析、項(xiàng)目管理方案設(shè)計、系統(tǒng)總體設(shè)計以及系統(tǒng)詳細(xì)設(shè)計、系統(tǒng)實(shí)行、運(yùn)行和維護(hù)等階段要完畢的詳細(xì)工作;掌握在C#和ArcEngine環(huán)境下構(gòu)建應(yīng)用型地理信息系統(tǒng)的措施。二、實(shí)習(xí)內(nèi)容熟悉開發(fā)環(huán)境:VisualStudio;C#;ArcEngine10.1功能需求分析基于組件技術(shù)開發(fā)應(yīng)用型地理信息系統(tǒng)組件式技術(shù)已成為當(dāng)今軟件技術(shù)的時尚之一。組件式GIS軟件的基本思想是把GIS各大功能模塊劃分為幾種控件。各個GIS控件之間,以及GIS控件與其他非GIS控件之間,可以以便地通過可視化的軟件開發(fā)工具集成起來,形成最終的GIS應(yīng)用。重點(diǎn)完畢的工作包括:1)建立ArcGISEngine應(yīng)用程序框架;2)實(shí)現(xiàn)對矢量數(shù)據(jù)(ShapeFile格式)的訪問;3)實(shí)現(xiàn)采用簡樸、唯一值、分類等多種方式對面狀矢量數(shù)據(jù)進(jìn)行渲染(Render)。三、實(shí)習(xí)環(huán)節(jié):實(shí)習(xí)一:初識ArcGISEngine開發(fā)環(huán)境1、新建一種Windows窗體應(yīng)用程序2、在新建窗體中添加控件在工具箱中選擇添加toolbarcontrol,TOCControl,MapControl控件在處理方案資源管理器中雙擊program.cs在主函數(shù)中添加ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Engine);使得文獻(xiàn)可以加載到MapControl中。右擊toolbarcontrol選擇屬性,如圖選擇Items選項(xiàng),添加如圖控件右擊MapControl屬性,在General的mapdocument中添加要加載的地圖文獻(xiàn)通過以上環(huán)節(jié)添加的控件還只是單獨(dú)存在,而我們的程序需要各控件間協(xié)同工作,因此要進(jìn)行控件綁定。分別右擊ToolbarControl、TOCControl控件,將Buddy設(shè)置為axMapControl1。試運(yùn)行一下如圖可以看出基本框架已經(jīng)搭建好了,不過還得調(diào)整一下布局在工具箱的所有Windows窗體下選擇控件,放在窗體里,如圖分別選擇窗體里TOCControl,MapControl的屬性,將其Dock值設(shè)置為fill,如圖調(diào)整窗體布局如圖實(shí)習(xí)二:建立ArcGISEngine應(yīng)用程序框架2.1地圖瀏覽1、新建項(xiàng)目,添加控件 新建windows窗體應(yīng)用程序,選擇工具箱中StatusStrip(狀態(tài)欄),將其拖入到窗體,再選擇工具箱中的ToolbarControl控件拖入窗體,修改dock值為TOP,再將SplitContainer控件拖入窗體,Dock設(shè)置為Fill,將TabControl控件拖入Panel1,將Alignment屬性設(shè)置為Bottom,Dock屬性設(shè)置為Fill。點(diǎn)擊TabPages屬性右邊的按鈕,彈出TabPage集合編輯器,將tabPage1的Name設(shè)置為“Layer”,Text設(shè)置為“圖層”;將tabPage2的Name設(shè)置為“Property”,Text設(shè)置為“屬性”。 選擇“圖層”選項(xiàng)卡,拖入TOCControl控件,設(shè)置Dock屬性為Fill,選擇“屬性”選項(xiàng)卡,拖入所有Windows窗體|PropertyGrid控件,設(shè)置Dock屬性為Fill。拖入TabControl控件到Panel2,設(shè)置Dock屬性為Fill。成果如圖所示:2、加shp數(shù)據(jù) 在工具箱中選擇MenuStrip控件,添加到左上角,命名為文獻(xiàn),下拉選項(xiàng)為打開矢量數(shù)據(jù)和打開柵格數(shù)據(jù),如圖:同樣添加地圖渲染,及其下拉選項(xiàng)簡樸渲染、唯一值渲染、分級渲染,如圖:3、代碼處理 選中文獻(xiàn)控件下的加入矢量數(shù)據(jù)控件,雙擊事件并寫入代碼,在開始使用ArcGISEngine進(jìn)行編碼前,首先需要添加ArcGIS的引用,在處理方案管理器中右鍵點(diǎn)擊“添加引用”,如圖: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;鍵入的代碼如圖:實(shí)習(xí)三:矢量要素符號化簡樸渲染選中“簡樸渲染”菜單,在屬性框中點(diǎn)擊事件按鈕,在事件列表中雙擊Click事件;或者雙擊“簡樸渲染”菜單,在措施內(nèi)輸入處理代碼。部分代碼如下:privatevoid簡樸渲染ToolStripMenuItem_Click(objectsender,EventArgse){IFeatureLayerpFLForRender=axMapControl1.get_Layer(0)asIFeatureLayer;SimpleRender(pFLForRender,@"");}privatevoidSimpleRender(IFeatureLayerpFeatureLayer,stringsFieldName){//設(shè)置用于渲染的顏色I(xiàn)RgbColorpColor=newRgbColor();pColor.Red=255;pColor.Blue=0;pColor.Green=0;//設(shè)置用于渲染的符號的基本屬性(面狀符號)ISimpleFillSymbolpSFSBase=newSimpleFillSymbol();pSFSBase.Style=esriSimpleFillStyle.esriSFSSolid;//設(shè)置填充方式pSFSBase.Outline.Width=0.4;//設(shè)置邊框的寬度pSFSBase.Color=pColorasIColor;//設(shè)置簡樸渲染的有關(guān)屬性ISimpleRendererpSR=newSimpleRenderer();pSR.Symbol=pSFSBaseasISymbol;//接口轉(zhuǎn)換,對渲染方式進(jìn)行設(shè)置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;//用于存儲字段所在的索引值//設(shè)置顏色列表,用于隨機(jī)生成顏色(用于填充面狀要素)//設(shè)置顏色的基本屬性,包括色調(diào)(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;//設(shè)置唯一值渲染的有關(guān)屬性IUniqueValueRendererpUVR=newUniqueValueRenderer();pUVR.FieldCount=1;pUVR.set_Field(0,sFieldName);//遍歷要素類的所有要素,并為每個要素設(shè)置基本的渲染形式//遍歷要素類中的所有要素IFeatureClasspFC=pFeatureLayer.FeatureClass;IFeatureCursorpFCursor=pFC.Search(null,false);//通過遍歷,返回要素指針(FeatureCursor)IFeaturepFeature=pFCursor.NextFeature();//獲取目前第一種要素//獲得指定字段的索引值IFieldspFields=pFCursor.Fields;iFieldIndex=pFields.FindField(sFieldName);//為不一樣的要素,設(shè)置不一樣的填充顏色pRCR.Size=pFC.FeatureCount(null);//獲得應(yīng)產(chǎn)生的顏色的數(shù)目boolbOK;pRCR.CreateRamp(outbOK);//判斷隨機(jī)顏色生產(chǎn)與否成功?//獲得隨機(jī)生成的顏色列表IEnumColorspEnumColors=pRCR.Colors;pEnumColors.Reset();IColorpColorForFeature=pEnumColors.Next();//開始遍歷,為每個要素設(shè)置基本的渲染信息while(pFeature!=null){//為每個要素設(shè)置基本的渲染符號ISimpleFillSymbolpSFSForFeature=newSimpleFillSymbol();pSFSForFeature.Style=esriSimpleFillStyle.esriSFSSolid;pSFSForFeature.Outline.Width=0.4;pSFSForFeature.Color=pColorForFeature;//獲得目前要素中指定字段的名稱stringsFeatureName;sFeatureName=pFeature.get_Value(iFieldIndex)asstring;//設(shè)置唯一值渲染的有關(guān)屬性pUVR.AddValue(sFeatureName,sFieldName,pSFSForFeatureasISymbol);pUVR.set_Label(sFeatureName,sFeatureName);pUVR.set_Symbol(sFeatureName,pSFSForFeatureasISymbol);//設(shè)置該值渲染信息//獲得下一組要素和顏色pFeature=pFCursor.NextFeature();pColorForFeature=pEnumColors.Next();}//接口轉(zhuǎn)換,對渲染方式進(jìn)行設(shè)置IGeoFeatureLayerpGFL=pFeatureLayerasIGeoFeatureLayer;pGFL.Renderer=pUVRasIFeatureRenderer;//地圖刷新axMapControl1.Refresh();}3、分級渲染 先打開ArcMap講要導(dǎo)入數(shù)據(jù)的屬性表打開添加一種字段命名為X,并進(jìn)行計算幾何處理,分級渲染便以這個字段里的值分級,分為兩級,最小值到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)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 初中物理教學(xué)全套
- 湖南省岳陽市一中下學(xué)期2025年高三二診模擬考試英語試卷含解析
- 北京市北方交通大學(xué)附屬中學(xué)2025屆高三第一次模擬考試英語試卷含解析
- 電修工考試題
- 2025屆陜西省漢中市漢臺區(qū)縣高三第三次測評英語試卷含答案
- 天津市紅橋區(qū)2024-2025學(xué)年高二下學(xué)期4月期中考試 化學(xué)試題(原卷版+解析版)
- 白酒營銷策劃與執(zhí)行考核試卷
- 篷布在農(nóng)業(yè)溫室建設(shè)的材料研發(fā)與性能優(yōu)化方法研究進(jìn)展考核試卷
- 城市配送中的物流配送路徑再優(yōu)化考核試卷
- 空調(diào)器節(jié)能認(rèn)證流程考核試卷
- 家政保潔安全培訓(xùn)課件
- 《MRI圖像偽影》課件
- 固體廢棄物處理和資源化利用項(xiàng)目可行性研究報告申請建議書案例一
- DeepSeek零基礎(chǔ)到精通手冊(保姆級教程)
- 2025年度紅木家具出口退稅申報代理合同
- 2025-2030全球氫燃料電池膜電極組件行業(yè)調(diào)研及趨勢分析報告
- 中國輕客行業(yè)市場調(diào)研分析及投資戰(zhàn)略規(guī)劃報告
- 2024年度醫(yī)療設(shè)備運(yùn)營維護(hù)合作框架協(xié)議2篇
- 人教版小學(xué)五年級數(shù)學(xué)下冊《第八單元 數(shù)學(xué)廣角-找次品》大單元整體教學(xué)設(shè)計2022課標(biāo)
- 中國百日咳診療與預(yù)防指南(2024版)
- GB/T 44947-2024機(jī)器狀態(tài)監(jiān)測與診斷性能診斷方法
評論
0/150
提交評論