GIS開發(fā)實(shí)習(xí)報(bào)告_第1頁
GIS開發(fā)實(shí)習(xí)報(bào)告_第2頁
GIS開發(fā)實(shí)習(xí)報(bào)告_第3頁
GIS開發(fā)實(shí)習(xí)報(bào)告_第4頁
GIS開發(fā)實(shí)習(xí)報(bào)告_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、實(shí)習(xí)報(bào)告GIS程序設(shè)計(jì)實(shí)習(xí)起止日期:2015年7 月生日至 2015 年7 月19 日學(xué)生 姓名吳餒班級12級地信2班成績指導(dǎo)教師(簽字)2015年7月20日GIS程序設(shè)計(jì)實(shí)習(xí)一、實(shí)習(xí)目的通過GIS程序設(shè)計(jì)實(shí)習(xí),使學(xué)生了解需求分析、項(xiàng)目管理方案設(shè)計(jì)、系統(tǒng)總體設(shè)計(jì)以及系統(tǒng)詳細(xì)設(shè)計(jì)、系統(tǒng)實(shí)施、運(yùn)行和維護(hù)等階段要完成的具體工作;掌握在C杯口ArcEngine環(huán)境下構(gòu)建應(yīng)用型地理信息系統(tǒng)的方法。二、實(shí)習(xí)內(nèi)容* 熟悉開發(fā)環(huán)境:Visual Studio 2010; C#; Arc Engine 10.1功能需求分析事基于組件技術(shù)開發(fā)應(yīng)用型地理信息系統(tǒng)組件式技術(shù)已成為當(dāng)今軟件技術(shù)的潮流之一。 組件式GIS

2、軟件的基本思想是把GIS 各大功能模塊劃分為幾個(gè)控件。各個(gè) GIS控件之間,以及GIS控件與其他非GIS控件 之間,可以方便地通過可視化的軟件開發(fā)工具集成起來,形成最終的GIS應(yīng)用。重點(diǎn)完成的工作包括:1)建立ArcGIS Engine應(yīng)用程序框架;2)實(shí)現(xiàn)對矢量 數(shù)據(jù)(Shape File格式)的訪問;3)實(shí)現(xiàn)采用簡單、唯一值、分類等多種方式對面 狀矢量數(shù)據(jù)進(jìn)行渲染(Render)。三、實(shí)習(xí)步驟:實(shí)習(xí)一:初識ArcGIS Engine開發(fā)環(huán)境1、新建一個(gè)Windows窗體應(yīng)用程序2、在新建窗體中添加控件在工具箱中選擇添加 toolbarcontrol , TOCControl, MapCon

3、trol 控件在解決方案資源管理器中雙擊program.cs在主函數(shù)中添加);使得文件可以加載到 MapControl 中。右擊toolbarcontrol選擇屬性,如圖選擇 Items選項(xiàng),添加如圖控件右擊MapControl屬性,在 General的map document中添加要加載的地圖文件通過以上步驟添加的控件還只是單獨(dú)存在,而我們的程序需要各控件間協(xié)同工作,因此要進(jìn)行控件綁定。分別右擊ToolbarControl 、TOCControl控件,將Buddy設(shè)置為 axMapControl1。試運(yùn)行一下如圖可以看出基本框架已經(jīng)搭建好了,但是還得調(diào)整一下布局在工具箱的所有 Windows

4、窗體下選擇 中 濟(jì)怔人控件,放在窗體里,如圖分別選擇窗體里 TOCControl, MapControl的屬性,將其 Dock值設(shè)置為fill,如圖調(diào)整窗體布局如圖實(shí)習(xí)二:建立ArcGIS Engine應(yīng)用程序框架2.1地圖瀏覽1、新建項(xiàng)目,添加控件新建windows窗體應(yīng)用程序,選擇工具箱中StatusStrip( 狀態(tài)欄),將其拖入到窗體,再選擇工具箱中的 ToolbarControl 控件拖入窗體,修改dock值為TOP 再將SplitContainer控件拖入窗體,Dock設(shè)置為Fill ,將TabControl控件拖入 Panell ,將 Alignment 屬性設(shè)置為 Bottom

5、 , Dock屬性設(shè)置為 Fill 。點(diǎn)擊 TabPages屬性右邊的按鈕,彈出 TabPage集合編輯器,將tabPage1的Name® 置為“Layer" ,Text 設(shè)置為“圖 層”;將tabPage2 的 Name設(shè)置為 “Property ",Text 設(shè)置為“屬性”。選擇“圖層”選項(xiàng)卡,拖入 TOCControl控件,設(shè)置Dock屬性為Fill ,Dock選擇“屬性”選項(xiàng)卡,拖入所有Windows窗體|PropertyGrid 控件,設(shè)置 屬性為Fill o拖入TabControl控件到Panel2,設(shè)置Dock屬性為Fill 。到左上角,命名為文件,

6、下拉選項(xiàng)為打開矢量數(shù)據(jù)和打開柵格數(shù)據(jù),如圖:結(jié)果如圖所示: 2、加shp數(shù)據(jù) 在工 具箱 中選擇Menu Stri p控 件, 添加染、分級渲染,如圖:同樣 添加 地圖渲 染, 及其 下拉 選項(xiàng) 簡單渲染、 唯一 值渲3、代 碼處理選中 文件 控件 下的 加入 矢量 數(shù)據(jù)控 件, 雙擊 事件并寫入代碼,在開始使用ArcGIS Engine進(jìn)行編碼前,首先需要添加ArcGIS的引用,在解決方案管理器中右鍵點(diǎn)擊“添加引用”,如圖:using using usingusing usingusingusing/為SH瞰據(jù)功能 增加的類庫usingusingusing System.IO;鍵入的代碼如圖

7、:實(shí)習(xí)三:矢量要素符號化1、 簡 單渲染選中 “簡單渲染”菜單, 在屬性框中點(diǎn)擊事件按鈕,在事件列表中雙擊Click事件;或者雙擊“簡單渲染”菜單,在方法內(nèi)輸入處理代碼。部分代碼如下:private void 簡單渲染ToolStripMenuItem_Click( object sender, EventArgs e)IFeatureLayer pFLForRender = axMapControl1.get_Layer(0) as IFeatureLayer ;SimpleRender(pFLForRender, ""); private void SimpleRend

8、er( IFeatureLayer pFeatureLayer, string sFieldName) / 設(shè)置用于渲染的顏色I(xiàn)RgbColor pColor = new RgbColor();pColor.Red = 255;pColor.Blue = 0;pColor.Green = 0;/ 設(shè)置用于渲染的符號的基本屬性(面狀符號)ISimpleFillSymbol pSFSBase = new SimpleFillSymbol ();pSFSBase.Style = esriSimpleFillStyle .esriSFSSolid; / 設(shè)置填充方式 / 設(shè)置邊框的寬度pSFSBase

9、.Color = pColor as IColor ;/ 設(shè)置簡單渲染的相關(guān)屬性ISimpleRenderer pSR = new SimpleRenderer ();pSR.Symbol = pSFSBase as ISymbol ;/ 接口轉(zhuǎn)換,對渲染方式進(jìn)行設(shè)置IGeoFeatureLayer pGFL = pFeatureLayer as IGeoFeatureLayer ;pGFL.Renderer = pSR as IFeatureRenderer ; / 地圖刷新axMapControl1.Refresh();2、 唯 一值渲染private void 唯一值渲染ToolStri

10、pMenuItem_Click( object sender, EventArgs e)IFeatureLayer pFLForRender = axMapControl1.get_Layer(0) as IFeatureLayer ;DefineUniqueValueRender(pFLForRender, "CONTINENT);" private void DefineUniqueValueRender( IFeatureLayer pFeatureLayer, string sFieldName) / 變量聲明 bool bValFound; / 判斷要素值是否存在

11、 int iFieldIndex; / 用于存儲字段所在的索引值 / 設(shè)置顏色列表,用于隨機(jī)生成顏色(用于填充面狀要素) /設(shè)置顏色的基本屬性,包括色調(diào)(H)、飽和度(S)以及亮度(V IRandomColorRamppRCR = new RandomColorRam(p);pRCR.StartHue = 76;pRCR.EndHue = 188;pRCR.MinSaturation = 20;pRCR.MaxSaturation = 40;pRCR.MaxValue = 85;pRCR.MaxValue = 100;pRCR.UseSeed = true ;pRCR.Seed = 43;/

12、設(shè)置唯一值渲染的相關(guān)屬性IUniqueValueRenderer pUVR = new UniqueValueRenderer ();pUVR.FieldCount = 1;pUVR.set_Field(0, sFieldName);/ 遍歷要素類的所有要素,并為每個(gè)要素設(shè)置基本的渲染形式 / 遍歷要素類中的所有要素 IFeatureClass pFC = pFeatureLayer.FeatureClass;IFeatureCursor pFCursor = pFC.Search( null , false ); / 通過遍歷,返回要素指針 ( FeatureCursor )IFeature

13、 pFeature = pFCursor.NextFeature(); / 獲取當(dāng)前第一個(gè)要素 / 獲得指定字段的索引值IFields pFields = pFCursor.Fields;iFieldIndex = pFields.FindField(sFieldName);/ 為不同的要素,設(shè)置不同的填充顏色pRCR.Size = pFC.FeatureCount(null ); / 獲得應(yīng)產(chǎn)生的顏色的數(shù)目bool bOK;pRCR.CreateRamp( out bOK); / 判斷隨機(jī)顏色生產(chǎn)是否成功? / 獲得隨機(jī)生成的顏色列表 IEnumColors pEnumColors = pR

14、CR.Colors;pEnumColors.Reset();IColor pColorForFeature = pEnumColors.Next();/ 開始遍歷,為每個(gè)要素設(shè)置基本的渲染信息while (pFeature != null )/ 為每個(gè)要素設(shè)置基本的渲染符號ISimpleFillSymbol pSFSForFeature = new SimpleFillSymbol ();pSFSForFeature.Style =esriSimpleFillStyle .esriSFSSolid;pSFSForFeature.Color = pColorForFeature;/ 獲得當(dāng)前要素

15、中指定字段的名稱string sFeatureName;sFeatureName = pFeature.get_Value(iFieldIndex)as string ;/ 設(shè)置唯一值渲染的相關(guān)屬性pUVR.AddValue(sFeatureName, sFieldName, pSFSForFeatureas ISymbol );pUVR.set_Label(sFeatureName, sFeatureName);pUVR.set_Symbol(sFeatureName, pSFSForFeatureas ISymbol ); / 設(shè)置該值渲染信息/ 獲得下一組要素和顏色pFeature =

16、pFCursor.NextFeature();pColorForFeature = pEnumColors.Next();/ 接口轉(zhuǎn)換,對渲染方式進(jìn)行設(shè)置IGeoFeatureLayer pGFL = pFeatureLayer as IGeoFeatureLayer ;pGFL.Renderer = pUVR as IFeatureRenderer ;/ 地圖刷新axMapControl1.Refresh();3、分級渲染先打開ArcMap講要導(dǎo)入數(shù)據(jù)的屬性表打開添加一個(gè)字段命名為X,并進(jìn)行計(jì)算幾何處理,分級渲染便以這個(gè)字段里的值分級,分為兩級,最小值到90,和90 到最大值。代碼如下:pr

17、ivate void 分類渲染ToolStripMenuItem_Click( object sender, EventArgs e)IFeatureLayer pFLForRender = axMapControl1.get_Layer(0) as IFeatureLayer ;ClassBreakRender(pFLForRender, "x"); private void ClassBreakRender( IFeatureLayer pFL, string sFieldName)IRandomColorRamppRCR = new RandomColorRam(p)

18、;IClassBreaksRenderer pCBR = new ClassBreaksRenderer ();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;IFeatureClass pFC = pFL.FeatureClass;pRC

19、R.Size = 3;bool bOK;pRCR.CreateRamp( out bOK);if (bOK = true )IEnumColors pEC = pRCR.Colors;pEC.Reset();IColor pColorForFeature = pEC.Next();for ( int i = 0; i < pCBR.BreakCount; i+)ISimpleFillSymbolISimpleFillSymbolpSFSForFeature = new SimpleFillSymbol ();pSFSForFeature1 = new SimpleFillSymbol ();pSFSForFeature.Style =esriSimpleFillStyle .esriSFSSolid;pSFSForFeature.Color = pColorForFeature;switch (i)case 0:pCBR.set_Break(i, 90);pCBR.set_Label(i,"-92 - 90" );pCBR.set_Description(i,"-92 - 90" );pCBR.set_Symbol(i, pSFSForF

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論