AE入門小程序(零基礎(chǔ)教零基礎(chǔ)學(xué))(共31頁)_第1頁
AE入門小程序(零基礎(chǔ)教零基礎(chǔ)學(xué))(共31頁)_第2頁
AE入門小程序(零基礎(chǔ)教零基礎(chǔ)學(xué))(共31頁)_第3頁
AE入門小程序(零基礎(chǔ)教零基礎(chǔ)學(xué))(共31頁)_第4頁
AE入門小程序(零基礎(chǔ)教零基礎(chǔ)學(xué))(共31頁)_第5頁
已閱讀5頁,還剩26頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上AE開發(fā) (本人希望通過這次的學(xué)習(xí),能過交上更多喜愛AE開發(fā)的同學(xué),大家相互交流學(xué)習(xí)。因此創(chuàng)建了一個QQ群:,希望喜愛AE開發(fā)的同學(xué)踴躍加入,當(dāng)然,非誠勿擾。還有,本人只是初學(xué),依靠零基礎(chǔ)教零基礎(chǔ)學(xué)的方式來編寫的此文,有不足之處,還請見諒!)1. AE安裝(1) 、首先安裝Visual Studio,版本自選。(2) 、其次安裝ArcGis Engine,若已安裝了ArcMap則無需安裝License manager。(3) 、若之前ArcMap沒有安裝SDK,則還需安裝SDK。(AE版本必須一致)2. 運(yùn)行VS,新建項(xiàng)目(1) 、打開VS2010(我安裝的版本),(

2、2)、文件新建項(xiàng)目 (3)、點(diǎn)擊Visual C#,選擇Windows窗體應(yīng)用程序,項(xiàng)目名稱以My為例,點(diǎn)擊確定如圖: 3、添加引用 為了防止在以后程序出錯,因此將如何添加引用和使用哪些都?xì)w結(jié)如下:(1) 、引用的添加:右擊引用添加引用,選擇添加引用對話框中的.NET選項(xiàng)將ESRI.ArcGIS.DataSourcesFile、ESRI.ArcGIS.Carto、ESRI.ArcGIS.Geodatabase、ESRI.ArcGIS.Geometry確定添加進(jìn)去即可。 (2)、該程序所需所有的usingusing System;using System.Collections.Generic;

3、using System.ComponentModel;using System.Data;using System.Drawing;using System.IO;using System.Linq;using System.Text;using System.Windows.Forms;using ESRI.ArcGIS.Carto;using ESRI.ArcGIS.DataSourcesFile;using ESRI.ArcGIS.Display;using ESRI.ArcGIS.Geodatabase;using ESRI.ArcGIS.Geometry;using ESRI.Ar

4、cGIS.Controls;using ESRI.ArcGIS.SystemUI;4、 使用工具箱中ArcGIS Windows Forms 工具運(yùn)行程序(1) 、點(diǎn)擊工具箱中的ArcGIS Windows Forms工具欄將MapControl、TOCControl、ToolbarControl和LicenseControl工具拖入Form1窗體中如圖:(2) 、點(diǎn)擊窗體中ToolbarControl控件,選擇屬性中Dock,從Dock下拉式列表中選擇最上方的長條。如圖:(3)、同上,依次將TOCControl的Dock選擇最左邊長條,將MapControl控件的Dock選擇為中間的正方形。

5、即窗體如下:(4)右擊ToolbarControl控件,選擇General選項(xiàng)中Buddy下拉列表中axMapControl1,在點(diǎn)擊Items選項(xiàng)卡中Add,雙擊點(diǎn)擊添加如圖所示工具,點(diǎn)擊確定。(同理將TOCControl選擇General選項(xiàng)中Buddy下拉列表中axMapControl1,點(diǎn)擊確定。)(5)、按F5運(yùn)行程序會發(fā)現(xiàn)如圖錯誤,需要在Program.cs中添加如下代碼:ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.EngineOrDesktop);(6)、程序即可正常運(yùn)行5、代碼添加MXD(1)、選擇工具箱中菜單

6、和工具欄,將其中MenuStrip拖入窗體上方,并輸入“打開MXD”,如圖:(2)右擊“打開打開MXD”或雙擊,向其中輸入代碼,并運(yùn)行。代碼如下: private void 打開MXD aMXDToolStripMenuItem_Click(object sender, EventArgs e) OpenFileDialog OpenMXD = new OpenFileDialog(); OpenMXD.Title = "打開地圖" OpenMXD.InitialDirectory = "E:" OpenMXD.Filter = "Map Do

7、cuments (*.mxd)|*.mxd" if (OpenMXD.ShowDialog() = DialogResult.OK) string MxdPath = OpenMXD.FileName; axMapControl1.LoadMxFile(MxdPath); 運(yùn)行如圖:6、代碼添加SHP緊接著“打開MXD”旁,添加一個“添加SHP”,同上輸入代碼,并運(yùn)行。代碼如下: string ShpFile = new string2; OpenFileDialog OpenShpFile = new OpenFileDialog(); OpenShpFile.Title = &q

8、uot;打開Shape文件" OpenShpFile.InitialDirectory = "E:" OpenShpFile.Filter = "Shape文件(*.shp)|*.shp" if (OpenShpFile.ShowDialog() = DialogResult.OK) string ShapPath = OpenShpFile.FileName; /利?用?""將?文?件t路·徑?分?成é兩?部?分? int Position = ShapPath.LastIndexOf("&q

9、uot;); string FilePath = ShapPath.Substring(0, Position); string ShpName = ShapPath.Substring(Position + 1); ShpFile0 = FilePath; ShpFile1 = ShpName; axMapControl1.AddShapeFile(ShpFile0, ShpFile1); 運(yùn)行如圖:7、鷹眼功能的實(shí)現(xiàn)(1)、在主窗體上在添加一個axmapcontrol控件,作為鷹眼功能的鳥瞰圖。如圖(2) 、點(diǎn)擊一下axmapcontrol1控件,在屬性中在點(diǎn)擊一下雷電符號,選擇并雙擊其中

10、OnFullExtentUpdated事件,輸入代碼。代碼如下: private void axMapControl1_OnExtentUpdated(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnExtentUpdatedEvent e) / 得?到?新?范?圍§ IEnvelope pEnvelope = (IEnvelope)e.newEnvelope; IGraphicsContainer pGraphicsContainer = axMapControl2.Map as IGraphicsContainer

11、; IActiveView pActiveView = pGraphicsContainer as IActiveView; /在ú繪?制?前°,?清?除yaxMapControl2中D的?任?何?圖?形?元a素? pGraphicsContainer.DeleteAllElements(); IRectangleElement pRectangleEle = new RectangleElementClass(); IElement pElement = pRectangleEle as IElement; pElement.Geometry = pEnvelope; /

12、設(shè)?置?鷹?眼?圖?中D的?紅ì線?框ò IRgbColor pColor = new RgbColorClass(); pColor.Red = 255; pColor.Green = 0; pColor.Blue = 0; pColor.Transparency = 255; /產(chǎn)ú生?一?個?線?符?號?對?象ó ILineSymbol pOutline = new SimpleLineSymbolClass(); pOutline.Width = 3; pOutline.Color = pColor; /設(shè)?置?顏?色?屬?性? pColor =

13、 new RgbColorClass(); pColor.Red = 255; pColor.Green = 0; pColor.Blue = 0; pColor.Transparency = 0; /設(shè)?置?填?充?符?號?的?屬?性? IFillSymbol pFillSymbol = new SimpleFillSymbolClass(); pFillSymbol.Color = pColor; pFillSymbol.Outline = pOutline; IFillShapeElement pFillShapeEle = pElement as IFillShapeElement;

14、pFillShapeEle.Symbol = pFillSymbol; pGraphicsContainer.AddElement(IElement)pFillShapeEle, 0); pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null); (3) 、同樣再選擇axmapcontrol1中axMapControl1_OnMapReplaced事件,輸入代碼。 private void axMapControl1_OnMapReplaced(object sender, ESRI.ArcGIS.Co

15、ntrols.IMapControlEvents2_OnMapReplacedEvent e) if (axMapControl1.LayerCount > 0) axMapControl2.Map = new MapClass(); for (int i = 0; i <= axMapControl1.Map.LayerCount - 1; i+) axMapControl2.AddLayer(axMapControl1.get_Layer(i); axMapControl2.Extent = axMapControl1.Extent; axMapControl2.Refresh

16、(); (4) 、點(diǎn)擊一下axMapControl2控件,選擇OnMouseMove和OnMouseDown事件,分別輸入如下代碼。 private void axMapControl2_OnMouseMove(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseMoveEvent e) if (axMapControl2.Map.LayerCount > 0) if (e.button = 1) IPoint pPoint = new PointClass(); pPoint.PutCoords(e.mapX, e

17、.mapY); axMapControl1.CenterAt(pPoint); axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null); else if (e.button = 2) IEnvelope pEnv = axMapControl2.TrackRectangle(); axMapControl1.Extent = pEnv; axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeo

18、graphy, null, null); private void axMapControl2_OnMouseDown(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseDownEvent e) if (axMapControl2.Map.LayerCount > 0) if (e.button = 1) IPoint pPoint = new PointClass(); pPoint.PutCoords(e.mapX, e.mapY); axMapControl1.CenterAt(pPoint); axMapC

19、ontrol1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null); else if (e.button = 2) IEnvelope pEnv = axMapControl2.TrackRectangle(); axMapControl1.Extent = pEnv; axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null); (7) 、對于如圖所出現(xiàn)的錯誤,需要在引用中找到各

20、自所屬的引用并右擊屬性,選擇其中嵌入互操作類選項(xiàng),把True改為False即可。如圖已解決運(yùn)行如下8、顯示圖幅范圍坐標(biāo)值(1)、在主窗體中添加一個statusStrip(狀態(tài)欄)控件。(2)、右擊statusStrip1控件,在彈出的菜單中單擊選擇“Edit Items”,如下圖所示:(3)、在彈出的“Items Collection Editor”對話框總單擊Add按鈕,添加三個狀態(tài)項(xiàng)目成員,并把“toolStripStatusLablel1“Text屬性改為“當(dāng)前圖幅信息”,如下圖所示:(4)、在主圖(axMapControl1)axMapControl1_O

21、nFullExtentUpdated事件中添加如下代碼,實(shí)現(xiàn)當(dāng)主圖的圖幅范圍改變時,狀態(tài)也相應(yīng)的顯示出當(dāng)前圖幅的信息。代碼如下: IPoint l1, ur; l1 = axMapControl1.Extent.LowerLeft; ur = axMapControl1.Extent.UpperRight; toolStripStatusLabel2.Text = "(" + Convert.ToString(l1.X) + "," + Convert.ToString(l1.Y) + ")" toolStripStatusLabel

22、3 .Text= "(" + ur.X.ToString("0.00") + "," + ur.Y.ToString("0.00") + ")"運(yùn)行如下:9、顯示屬性表的信息(1)、在主窗體上添加一個“contextMenuStrip“(上下文)控件。右擊“contextMenuStrip1“控件,選擇”Edit Items“在彈出的“items collection editor“對話框中,單擊Add按鈕,添加一個打開屬性表菜單。把text中toolStripMe

23、nuItem1改成打開屬性表即可(2)、右擊工程名稱,在彈出的菜單中選擇添加新項(xiàng)。在彈出的“新建項(xiàng)”對話框中選擇“windows form”,并把“name”改為屬性表。在”屬性表”窗體中添加一個“dataGridView”控件,并通過點(diǎn)擊“dataGridView”控件右上角的三角圖標(biāo),為“dataGridView”添加一條屬性列。(3)、將dataGridView控件的Name的dataGridView改為dtGridView。(4)、編寫axTOCControl1控件右擊響應(yīng)事件代碼,實(shí)現(xiàn)當(dāng)在axTOCControl1控件上右擊時,彈出打開屬性表菜單。 首先定義一個全

24、局變量,如下圖所示:即代碼為:public ILayer pLayer;其次編寫axTOCControl1控件右擊響應(yīng)事件代碼,在 axTOCControl1_OnMouseDown事件中添加代碼。代碼為: if (axMapControl1.LayerCount > 0) esriTOCControlItem pItem = new esriTOCControlItem(); pGlobalFeatureLayer = new FeatureLayerClass(); IBasicMap pBasicMap = new MapClass(); object pOther = new o

25、bject(); object pIndex = new object(); axTOCControl1.HitTest( e.x, e.y, ref pItem, ref pBasicMap, ref pLayer, ref pOther, ref pIndex); if (e.button = 2) contextMenuStrip1.Show(axTOCControl1, e.x, e.y); 編寫“打開屬性表“單擊事件代碼,實(shí)現(xiàn)當(dāng)單擊“打開屬性表“菜單時,彈出相應(yīng)feature屬性表,添加代碼如下: private void 打開屬性表ToolStripMenuItem1_Click(

26、object sender, EventArgs e) 屬性表 Ft = new 屬性表(pLayer as IFeatureLayer); Ft.Show(); 在屬性表窗體中定義一個全局變量pFeatureLayer,實(shí)現(xiàn)主窗體與屬性窗體之間的值傳遞代碼為:IFeatureLayer pFeatureLayer = null;修改屬性表窗體的構(gòu)造函數(shù),實(shí)現(xiàn)屬性表窗體的初始化代碼為: public 屬性表(IFeatureLayer featureLayer) InitializeComponent(); pFeatureLayer = featureLayer; Itable2Dtable(); 編寫“public void Itable2Dtable()“函數(shù),實(shí)現(xiàn)往”dtGridView“控件上添加相應(yīng)要素的屬性記錄.代碼為:public void Itable2Dtable() IFields pFields; pFields = pFeatur

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論