版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 地理信息系統(tǒng)開發(fā)具體教程一、基本控件的添加1.1.新建項目 文件->新建->項目->Windows窗體應(yīng)用1.2.修改標(biāo)題右擊窗體屬性->在Text中修改標(biāo)題名稱1.3.添加菜單欄 工具箱->菜單和工具欄->MenuStrip(將MenuStrip拖入到窗體內(nèi)) 依次添加子標(biāo)題如下:1.4.添加ToolStripContainer工具箱->菜單和工具欄-> ToolStripContainer 將ToolStripContainer拖入到窗體內(nèi),右擊屬性,Spring屬性設(shè)置為True,在添加一個Statuslabel,在屬性中的text修改名
2、稱1.5.添加SplitContainer工具箱->菜單和工具欄->SplitContainer 將SplitContainer拖入到窗體中,并將右擊屬性中Dock設(shè)置為“Fill”1.6.添加控件工具箱->ArcGIS Windows Froms將TOCC Control 和 MapControl 拖入到窗口中 分別設(shè)置在左右側(cè) 設(shè)置TOCC Control屬性,使之與MapControl關(guān)聯(lián),右擊TOCC Control,點(diǎn)擊屬性,在Buddy中改為axMapControl1添加控件License Control 工具箱->ArcGIS Windows Froms-
3、> License Control 把License Control拖入到窗體中注意:要是程序能夠正常運(yùn)行,需要在Program.CS中添加一段代碼,代碼如下:ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.EngineOrDesktop);二、添加代碼2.1打開文件在菜單下雙擊“打開地圖文檔”屬性(1)直接打開文件書寫格式如下:this.axMapControl1.LoadMxFile("文件的具體地址文件的名稱.文件格式”);例子如下:this.axMapControl1.LoadMxFile(E:ArcGIS
4、 Engine 地理信息系統(tǒng)開發(fā)教程-基于C#.NETchp03地圖操作dataMxd文件Qingdao.mxd");(2)設(shè)置可選擇的文件打開方式OpenFileDialog pOpenFiledialog = new OpenFileDialog(); pOpenFiledialog.InitialDirectory=E:ArcGIS Engine 地理信息系統(tǒng)開發(fā)教程-基于C#.NETchp03地圖操作dataMxd文件" ; pOpenFiledialog.Filter = "文本文件(*.mxd)|*.mxd|所有文件(*.*)|*.*" pO
5、penFiledialog.Title = "打開地圖文檔" if (pOpenFiledialog.ShowDialog() = DialogResult.OK) string mxdfilpath = pOpenFiledialog.FileName; if (this.axMapControl1.CheckMxFile(mxdfilpath) this.axMapControl1.LoadMxFile(mxdfilpath); else MessageBox.Show("打開地圖文檔無效!"); (3)使用ControlsOpenDocComman
6、dClass加載添加代碼如下: ICommand command = new ControlsOpenDocCommandClass();command.OnCreate(this.axMapControl1.Object);command.OnClick();注意:如果直接運(yùn)行會出現(xiàn)錯誤,因為沒有添加引用,我們需要添加引用 ESRI.ArcGIS.SystemUI;ESRI.ArcGIS.Controls;然后在使用空間 : using ESRI.ArcGIS.SystemUI;using ESRI.ArcGIS.Controls; 地圖瀏覽添加控件menuStrip 和toolStrip
7、還有statusStrip 依次添加控件 分 欄 容 器 控 件splitContainer1)、內(nèi)容表控件(axTOCControl1)、地圖視圖控件(axMapControl1)、許可控件(axLicenseControl1)。2.為工具欄控件添加 8 個按鈕(BUTTON),依次將其文本(text 屬性)改為:打開地圖、加載數(shù)據(jù)、逐級放大、逐級縮小、拉框放大、拉框縮小、漫游、全圖、前一視圖、后一視圖,并設(shè)置相應(yīng)圖標(biāo)依次將其 NAME 屬性改為 CmdOpen, CmdAdd,CmdZoomIn, CmdZoonOut, ToolZoomIn, ToolZoomOut, ToolPan,
8、CmdFullextent、CmdBack、CmdNext點(diǎn)擊button ->Displaystyle->ImageAndText 可以使修改的TEXT名稱顯示出來3. 雙擊button“打開地圖” 添加代碼如下 ICommand command = new ControlsOpenDocCommandClass(); command.OnCreate(this.axMapControl1.Object); command.OnClick(); 注意:使用代碼之前要引用命名空間using ESRI.ArcGIS.SystemUI;using ESRI.ArcGIS.Control
9、s; 4. 雙擊button“加載數(shù)據(jù)” 添加代碼如下:5. 雙擊button“逐級放大”“逐級縮小”分別添加代碼如下: 注意:在添加代碼前,需要添加引用空間 代碼 using ESRI.ArcGIS.Geometry; IEnvelope pEnvelope; pEnvelope = axMapControl1.Extent; pEnvelope.Expand(0.5, 0.5, true); /這a里?設(shè)?置?縮?小?為a一?半?,?可é以?根ù據(jù)Y需è要癮具?體?設(shè)?置? axMapControl1.Extent = pEnvelope; axMapCont
10、rol1.ActiveView.Refresh(); IEnvelope pEnvelope; pEnvelope = axMapControl1.Extent; pEnvelope.Expand(2, 2, true); /這a里?設(shè)?置?縮?小?為a一?半?,?可é以?根ù據(jù)Y需è要癮具?體?設(shè)?置? axMapControl1.Extent = pEnvelope; axMapControl1.ActiveView.Refresh();6. 雙擊button“拉框放大”“拉框縮小”分別添加代碼如下: ControlsMapZoomInTool objTool
11、 = new ControlsMapZoomInToolClass(); objTool.OnCreate(axMapControl1.Object); axMapControl1.CurrentTool = (ITool)objTool; ControlsMapZoomOutTool objTool = new ControlsMapZoomOutToolClass(); objTool.OnCreate(axMapControl1.Object); axMapControl1.CurrentTool = (ITool)objTool;7. 雙擊button“拉框放大”“拉框縮小”分別添加代
12、碼如下: ControlsMapZoomInTool objTool = new ControlsMapZoomInToolClass(); objTool.OnCreate(axMapControl1.Object); axMapControl1.CurrentTool = (ITool)objTool; ControlsMapZoomOutTool objTool = new ControlsMapZoomOutToolClass(); objTool.OnCreate(axMapControl1.Object); axMapControl1.CurrentTool = (ITool)ob
13、jTool;8. 雙擊button“漫游”添加代碼如下: string pMouseOperate = null; axMapControl1.CurrentTool = null; pMouseOperate = "Pan" axMapControl1.MousePointer = esriControlsMousePointer.esriPointerPan;9.雙擊9.button“全圖”添加代碼如下: axMapControl1.Extent = axMapControl1.FullExtent; 視圖同步1. 按照如下設(shè)置界面 2. 依次添加控件ToolBarCo
14、ntrol和ToccControl和MapControl ,并將MapControl 的name改為EagleControl SpitContainer 3. 將TabControl拖入到框內(nèi),并修改名稱為數(shù)據(jù)和布局,并將屬性中alignment中設(shè)置為bottom。4. 點(diǎn)擊“數(shù)據(jù)”框,將MapControl拖入到其中,同樣方法選中“布局”框?qū)ⅰ癙ageLayoutControl拖入其中,并將MapControl改名為MainControl5. 定義幾個變量private bool bCanDrag; /鷹眼地圖上的矩形框可移動的標(biāo)志private IPoint pMoveRectPoint
15、; /記錄在移動鷹眼地圖上的矩形框時鼠標(biāo)的位置private IEnvelope pEnv; /記錄數(shù)據(jù)視圖的Extent然后在初始化中寫入以下代碼:private void Form1_Load(object sender, EventArgs e)this.axTOCControl1.SetBuddyControl(this.mainMapControl);EagleMapControl.Extent = mainMapControl.FullExtent;pEnv = EagleMapControl.Extent;6)首先實現(xiàn)主視圖與鷹眼視圖的數(shù)據(jù)保持一致, 在 mainMapContr
16、ol控件的 OnMapRelaced 事件中寫入以下代碼:private void mainMapControl_OnMapReplaced(object sender,ESRI.ArcGIS.Controls.IMapControlEvents2_OnMapReplacedEvent e)if (mainMapControl.LayerCount > 0)EagleMapControl.Map = new MapClass();for (int i = 0; i <= mainMapControl.Map.LayerCount - 1; i+)EagleMapControl.Ad
17、dLayer(mainMapControl.get_Layer(i);EagleMapControl.Extent = mainMapControl.Extent;EagleMapControl.Refresh();7)添加矩形框當(dāng) 數(shù) 據(jù) 視 圖 的 顯 示 范 圍 發(fā) 生 變 化 時 , 會 觸 發(fā) 觸 發(fā) 數(shù) 據(jù) 視 圖( MapControl1)中 OnExtentUpdata 事件,在該事件中繪制鷹眼視圖中的方框。獲取數(shù)據(jù)視圖中的地圖顯示范圍作為矩形框范圍,添加到鷹眼視圖中。 代碼如下private void mainMapControl_OnExtentUpdated(object
18、 sender,ESRI.ArcGIS.Controls.IMapControlEvents2_OnExtentUpdatedEvent e)/添加矩形框之前,需要清除鷹眼視圖( MapControl2)中任何圖形元素。IGraphicsContainer pGraphicsContainer = EagleMapControl.Map as/安徽理工大學(xué)測繪學(xué)院 GIS 開發(fā)實驗課講義IGraphicsContainer;IActiveView pActiveView = pGraphicsContainer as IActiveView;pGraphicsContainer.DeleteA
19、llElements();/得到當(dāng)前視圖范圍pEnv = (IEnvelope)e.newEnvelope;IRectangleElement pRectangleEle = new RectangleElementClass();IElement pElement = pRectangleEle as IElement;pElement.Geometry = pEnv;/設(shè)置鷹眼圖中的紅線框IRgbColor pColor = new RgbColorClass();pColor.Red = 255;pColor.Green = 0;pColor.Blue = 0;pColor.Transp
20、arency = 255;/產(chǎn)生一個線符號對象ILineSymbol pOutline = new SimpleLineSymbolClass();pOutline.Width = 3;pOutline.Color = pColor;/設(shè)置顏色屬性pColor = new RgbColorClass();pColor.Transparency = 0;/設(shè)置填充符號的屬性IFillSymbol pFillSymbol = new SimpleFillSymbolClass();pFillSymbol.Color = pColor;pFillSymbol.Outline = pOutline;/
21、向鷹眼中添加矩形框IFillShapeElement pFillShapeEle = pElement as IFillShapeElement;pFillShapeEle.Symbol = pFillSymbol;pGraphicsContainer.AddElement(IElement)pFillShapeEle,0);pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics,null,null);8) 矩形框的拖動與繪制private void EagleMapControl_OnMouseDown(object sen
22、der,ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseDownEvent e)if (EagleMapControl.Map.LayerCount > 0)/按下鼠標(biāo)左鍵移動矩形框if (e.button = 1)/安徽理工大學(xué)測繪學(xué)院 GIS 開發(fā)實驗課講義/如果指針落在鷹眼的矩形框中,標(biāo)記可移動if (e.mapX > pEnv.XMin && e.mapY > pEnv.YMin && e.mapX <pEnv.XMax && e.mapY < pEnv.YMax
23、)bCanDrag = true;pMoveRectPoint = new PointClass();pMoveRectPoint.PutCoords(e.mapX, e.mapY); /記錄點(diǎn)擊的第一個點(diǎn)的坐標(biāo)/按下鼠標(biāo)右鍵繪制矩形框else if (e.button = 2)IEnvelope pEnvelope = EagleMapControl.TrackRectangle();IPoint pTempPoint = new PointClass();pTempPoint.PutCoords(pEnvelope.XMin + pEnvelope.Width / 2,pEnvelope.
24、YMin + pEnvelope.Height / 2);mainMapControl.Extent = pEnvelope;/矩形框的高寬和數(shù)據(jù)試圖的高寬不一定成正比,這里做一個中心調(diào)整mainMapControl.CenterAt(pTempPoint);/移動矩形框private void EagleMapControl_OnMouseMove(object sender,ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseMoveEvent e)if (e.mapX > pEnv.XMin && e.mapY > p
25、Env.YMin && e.mapX < pEnv.XMax&& e.mapY < pEnv.YMax)/如果鼠標(biāo)移動到矩形框中,鼠標(biāo)換成小手,表示可以拖動EagleMapControl.MousePointer =esriControlsMousePointer.esriPointerHand;if (e.button = 2) /如果在內(nèi)部按下鼠標(biāo)右鍵,將鼠標(biāo)樣式設(shè)置為默認(rèn)樣式EagleMapControl.MousePointer =esriControlsMousePointer.esriPointerDefault;else/安徽理工大學(xué)測
26、繪學(xué)院 GIS 開發(fā)實驗課講義/在其他位置將鼠標(biāo)設(shè)為默認(rèn)的樣式EagleMapControl.MousePointer =esriControlsMousePointer.esriPointerDefault;if (bCanDrag)double Dx, Dy; /記錄鼠標(biāo)移動的距離Dx = e.mapX - pMoveRectPoint.X;Dy = e.mapY - pMoveRectPoint.Y;pEnv.Offset(Dx, Dy); /根據(jù)偏移量更改 pEnv 位置pMoveRectPoint.PutCoords(e.mapX, e.mapY);/在繪制前,清除鷹眼中之前繪制的矩
27、形框IGraphicsContainer pGraphicsContainer = EagleMapControl.Map asIGraphicsContainer;IActiveView pActiveView = pGraphicsContainer as IActiveView;pGraphicsContainer.DeleteAllElements();/得到當(dāng)前視圖范圍IRectangleElement pRectangleElement = newRectangleElementClass();IElement pElement = pRectangleElement as IEl
28、ement;pElement.Geometry = pEnv;/設(shè)置矩形框(實質(zhì)為中間透明度面)IRgbColor pColor = new RgbColorClass();pColor.Red = 255;pColor.Green = 0;pColor.Blue = 0;pColor.Transparency = 255;ILineSymbol pOutLine = new SimpleLineSymbolClass();pOutLine.Width = 2;pOutLine.Color = pColor;IFillSymbol pFillSymbol = new SimpleFillSym
29、bolClass();pColor = new RgbColorClass();pColor.Transparency = 0;pFillSymbol.Color = pColor;pFillSymbol.Outline = pOutLine;/向鷹眼中添加矩形框IFillShapeElement pFillShapeElement = pElement asIFillShapeElement;pFillShapeElement.Symbol = pFillSymbol;pGraphicsContainer.AddElement(IElement)pFillShapeElement, 0);/刷新安徽理工大學(xué)測繪學(xué)院 GIS 開發(fā)實驗課講義pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics,null, null);mainMapControl.Extent = pEnv;private void EagleMapControl_OnMouseUp(object sender,IMapControlEvents2_OnMouseUpEvent e)if (e.button = 1 &
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 53模擬試卷初中語文八年級下冊17壺口瀑布
- 第五單元寫作《論證要合理》導(dǎo)學(xué)案 部編版語文九年級上冊
- 江蘇省儀征市第三中學(xué)七年級地理下冊 7.2 東南亞教案 新人教版
- 二年級思想品德上冊 第一單元 我愛我班教案 山東人民版
- 八年級物理下冊 第九章 壓強(qiáng)9.1 壓強(qiáng)第1課時 壓力和壓強(qiáng)教案 (新版)新人教版
- 八年級道德與法治上冊 第一單元 步入青春年華 第3課 共享花季友情 第1框 青春平行線教學(xué)設(shè)計 北師大版
- 江蘇省鎮(zhèn)江市丹徒區(qū)高中政治 第一課 生活在人民當(dāng)家作主的國家教案 新人教版必修2
- 高中信息技術(shù) 圖像的加工與處理教案 粵教版必修1
- 三年級道德與法治上冊 第四單元 家是最溫暖的地方 10《父母多愛我》教案2 新人教版
- 江蘇地區(qū)高一年級信息技術(shù)一年教案20超鏈接教案
- 【城市社區(qū)治理中存在的問題與對策研究(論文)】
- 中醫(yī)特色療法在呼吸系統(tǒng)疾病中的應(yīng)用專家講座
- 外貿(mào)財務(wù)對賬單英文版-帶公式
- 北教版四年級綜合實踐下冊 第十一課飲料中的學(xué)問
- 園林綠化工程標(biāo)書(技術(shù)標(biāo))
- 溝槽開挖安全技術(shù)交底
- 義務(wù)教育英語課程標(biāo)準(zhǔn)2022年英文版
- 門診無痛麻醉記錄單
- GB/T 13096-2008拉擠玻璃纖維增強(qiáng)塑料桿力學(xué)性能試驗方法
- PEP人教版五年級英語上冊Unit 2 My week說課稿
- 小學(xué)生少先隊《隊前教育主題班會》課件
評論
0/150
提交評論