版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、本本 章章 內(nèi)內(nèi) 容容n使用使用ArcEngine控件開發(fā)控件開發(fā)n創(chuàng)建桌面應(yīng)用程序創(chuàng)建桌面應(yīng)用程序n地圖基本操作實現(xiàn)地圖基本操作實現(xiàn) ArcEngine提供大量高級開發(fā)控件,使開發(fā)人員可以建立或擴展GIS應(yīng)用程序和創(chuàng)建高質(zhì)量的地圖用戶界面。包括MapControl、PageLayoutControl、ReaderControl、TOCControl和ToolbarControl。GlobeControl和SceneControl也可以獲得,但使用這兩個控件的應(yīng)用程序必須具有ArcEngine的3D分析選項授權(quán)。 嵌入式組件:可拖放到可視化設(shè)計環(huán)境提供的容器窗體或?qū)υ捒蛑?,并可調(diào)整控件的大小和
2、位置。 屬性頁:右鍵單擊控件并選擇“屬性”菜單項。 ArcObjects:每個控件為其封裝的ArcObjects上頻繁使用的屬性和方法提供了快捷方式;每個控件還有一個執(zhí)行公共任務(wù)的幫助方法。 事件:每個控件都會響應(yīng)終端用戶的鍵盤和鼠標(biāo)交互而觸發(fā)事件。響應(yīng)發(fā)生在控件內(nèi)的行為會觸發(fā)一些其他事件。1.ArcGIS控件主題和概念1.ArcGIS控件主題和概念 伙伴控件:ToolbarControl和TOCControl都要與另一個“伙伴控件”協(xié)同工作。 控件命令:ArcEngine提供了一系列命令、工具和菜單與ArcGIS控件協(xié)同工作;開發(fā)人員也可以通過創(chuàng)建自定義命令、工具和菜單來擴展ArcEngin
3、e提供的命令集。 地圖制作:ArcGIS Desktop應(yīng)用程序可用于預(yù)制作能被裝載到ArcGIS控件中的文檔,以便快速生產(chǎn)高質(zhì)量的地圖。2. MapControl和PageLayoutControl MapControl和PageLayoutControl對應(yīng)于ArcMap桌面應(yīng)用程序的“數(shù)據(jù)”和“布局”視圖。用ArcMap創(chuàng)作的地圖文檔可以裝載到這兩個控件中。 地圖文檔可在設(shè)計時通過這兩個控件的屬性頁設(shè)置,控件可以被設(shè)置為“鏈接”或“包含”地圖文檔;地圖文檔也可以使用LoadMxFile方法通過編程裝載到控件中。 MapControl和PageLayoutControl不僅可以讀取地圖文檔
4、,還可以寫入地圖文檔(*.mxd)。3. GlobeControl和SceneControl GlobeControl和SceneControl對應(yīng)于ArcGlobe和ArcScene桌面應(yīng)用程序的三維試圖。用ArcGlobe和ArcScene應(yīng)用程序創(chuàng)作的Globe和Scene文檔可以分別裝載到GlobeControl和SceneControl中。 這兩個控件都具有內(nèi)置的導(dǎo)航功能,運行終端用戶移動三維視圖和可視化三維數(shù)據(jù),而不必使用控件命令。要使用內(nèi)置的導(dǎo)航工具,必須通過屬性頁或者編程設(shè)置Navigate屬性。4. ReaderControl ReaderControl對應(yīng)于ArcReade
5、r桌面應(yīng)用程序的“數(shù)據(jù)”和“布局”視圖及其內(nèi)容表(TOC)。該控件還包含ArcReader桌面應(yīng)用程序使用的內(nèi)部窗口和工作,如Find窗口和Identify工具等。用ArcMap桌面應(yīng)用程序創(chuàng)造并用ArcGIS Publisher擴展模塊發(fā)布的發(fā)布地圖文檔(PMF)若在發(fā)布時設(shè)置為允許裝載到定制的ArcReader應(yīng)用程序中,則可以裝載到ReaderControl中。 ReaderControl中有一個簡單的自包含對象模型,提供ArcReader桌面應(yīng)用程序所有功能而不需要訪問ArcObjects。5. TOCControl和ToolbarControl TOCControl要與一個“伙伴控件
6、”協(xié)同工作?!盎锇榭丶笨稍谠O(shè)計時通過TOCControl屬性頁設(shè)置或在駐留TOCControl的容器被顯示時用SetBuddyControl方法通過編程設(shè)置。 ToolbarControl要與一個“伙伴控件”協(xié)同工作?!盎锇榭丶笨稍谠O(shè)計時通過ToolbarControl屬性頁設(shè)置或在駐留ToolbarControl的容器被顯示時用SetBuddyControl方法通過編程設(shè)置。 ToolbarControl可以駐留操作其“伙伴控件”顯示的命令、工具和菜單。1.目標(biāo)創(chuàng)建第一個ArcGIS Engine桌面應(yīng)用程序加載MXD文檔2.準(zhǔn)備工作Visual Studio 2005/2008ArcG
7、IS Engine Developer kit 9.2制作ArcGIS實驗數(shù)據(jù)地圖文檔MXD3.設(shè)計流程圖 4.創(chuàng)建第一個ArcGIS Engine桌面應(yīng)用程序-1 可以看到新創(chuàng)建的項目中自動加載了ToolBarControl、TocControl、LicenseControl、MapControl四個ArcGISEngine控件以及一個.NET StatusStrip控件 4.創(chuàng)建第一個ArcGIS Engine桌面應(yīng)用程序-1 5.加載MXD地圖文檔數(shù)據(jù)-1 6.創(chuàng)建第一個ArcGIS Engine桌面應(yīng)用程序-2 1. 動Visual Studio .NET,并從新建項目對話框中創(chuàng)建一個
8、新的Visual C# “Windows應(yīng)用程序”項目。2.將項目命名為“DEMO”,并選擇位置存取該項目。3.在“工具箱”的“Windows窗體”標(biāo)簽欄中單擊右鍵,然后從上下文菜單中選擇“選擇項”(VS2005)“添加/移除項(I)”(VS2003);或者工具-選擇工具箱。4.在“選擇工具箱”中選擇“.NET Framework組件”,并復(fù)選“AxMapControl”,“AxPageLayoutControl”,“AxTOCControl”和“AxToolbarControl”,單擊確定按鈕。這樣所選擇的控件將顯示在工具箱的Windows窗體標(biāo)簽欄中。6.創(chuàng)建第一個ArcGIS Engin
9、e桌面應(yīng)用程序-2 6.創(chuàng)建第一個ArcGIS Engine桌面應(yīng)用程序-2 6.創(chuàng)建第一個ArcGIS Engine桌面應(yīng)用程序-2 5.設(shè)置控件Anchor屬性,使控件大小隨窗口變化而變化6.創(chuàng)建第一個ArcGIS Engine桌面應(yīng)用程序-2 private void Form1_Load(object sender, EventArgs e) this.Location = new Point(0, 0); axToolbarControl1.Left = this.Left; axToolbarControl1.Width = this.Width; axToolbarControl
10、1.Top = menuStrip1.Height; axTOCControl1.Left = this.Left; axTOCControl1.Top = axToolbarControl1.Top + axToolbarControl1.Height; axTOCControl1.Width = this.Width / 6; axTOCControl1.Height = this.Height - axToolbarControl1.Top - axToolbarControl1.Height; axMapControl1.Top = axTOCControl1.Top; axMapCo
11、ntrol1.Height = axTOCControl1.Height; axMapControl1.Left = this.Left + axTOCControl1.Width; axMapControl1.Width = this.Width - axTOCControl1.Width; 6.創(chuàng)建第一個ArcGIS Engine桌面應(yīng)用程序-2 using ESRI.ArcGIS.SystemUI;private void Form1_Load(object sender, EventArgs e) axToolbarControl1.AddItem(esriControls.Contr
12、olsMapZoomInTool, -1, -1, true, 0, esriCommandStyles.esriCommandStyleIconOnly); axToolbarControl1.AddItem(esriControls.ControlsMapZoomOutTool, -1, -1, false, 0, esriCommandStyles.esriCommandStyleIconOnly); axToolbarControl1.AddItem(esriControls.ControlsMapZoomInFixedCommand, -1, -1, false, 0, esriCo
13、mmandStyles.esriCommandStyleIconOnly); axToolbarControl1.AddItem(esriControls.ControlsMapZoomOutFixedCommand, -1, -1, false, 0, esriCommandStyles.esriCommandStyleIconOnly);6.創(chuàng)建第一個ArcGIS Engine桌面應(yīng)用程序-2 private void Form1_Load(object sender, EventArgs e) string filename =E:上課資料測繪08-GIS開發(fā)mapSD.mxd; if
14、( axMapControl1.CheckMxFile (filename) ) axMapControl1.LoadMxFile(filename); /using ESRI.ArcGIS.Carto; /IActiveView activeViw = axMapControl1.Map as IActiveView; / activeViw.Extent = axMapControl1.FullExtent; /axMapControl1.Refresh(); axTOCControl1.SetBuddyControl(axMapControl1); axToolbarControl1.S
15、etBuddyControl(axMapControl1); n加載圖層數(shù)據(jù)n地圖顯示基本控制1.加載圖層數(shù)據(jù) ArcEngine支持多種文件類型,矢量數(shù)據(jù)如:ArcInfo Coverage、ESRI Shapefile、AutoCAD的DXF和DWG文件等,柵格數(shù)據(jù)如JPG、TIFF、BMP、GRID等。此外還支持企業(yè)數(shù)據(jù)庫中的矢量和柵格文件以及個人數(shù)據(jù)庫文件等。1.加載圖層數(shù)據(jù)ShapeFile文件 添加ShapeFile文件一般要用到Workspace、WorkspaceFactory、FeatureWorkspace、FeatureClass、FeatureLayer等組件類或者抽象
16、類。1.加載圖層數(shù)據(jù)ShapeFile文件p Workspace類類 Workspace類表示工作區(qū),它是空間數(shù)據(jù)和非空間數(shù)據(jù)集的容器,它是一個類,因此不能被直接創(chuàng)建,而只能從別的對象那里獲得;它提供了使用和創(chuàng)建新的數(shù)據(jù)集的方法。根據(jù)esri Workspace的不同, Workspace可以分為以下幾種:文件系統(tǒng)工作區(qū)(Filesystem Workspace),Shapefile和ArcInfo的Workspace屬于這種;本地數(shù)據(jù)庫工作區(qū)(LocalDatabase Workspace),例如Microsoft Access中存儲的個人地理數(shù)據(jù)庫;遠程數(shù)據(jù)庫工作區(qū)(RemoteDatab
17、ase Workspace),例如存放在Oracle、DB2等中需要使用ArcSDE的相關(guān)組件來方位的地理數(shù)據(jù)庫。1.加載圖層數(shù)據(jù)ShapeFile文件p Workspace類類 從某種意義上來說,我們可以簡單地認(rèn)為一個工作區(qū)對應(yīng)ArcInfo的一個工作區(qū),一個包含Shapefile文件的文件夾。 Workspace實現(xiàn)了26個接口,每個接口又有各自的方法和屬性,我們在具體應(yīng)用中往往根據(jù)需要選擇性地使用這些方法和屬性來達到我們的目的。1.加載圖層數(shù)據(jù)ShapeFile文件p WorkspaceFactory類類 WorkspaceFactory是Workspace的調(diào)配者,通過它用戶可以打開工
18、作區(qū),它支持對工作區(qū)瀏覽和管理的方法,同時它也能夠連接到遠程工作區(qū)。 從它派生出很多類,如ArcInfoWorkspaceFactory、Cad WorkspaceFactory、Shapefile WorkspaceFactory等。1.加載圖層數(shù)據(jù)ShapeFile文件p FeatureLayer類類 要素層,要素Feature的集合及其可視化表達。p FeatureClass類類 要素類,它是具有行為和屬性的空間實體的集合;要素類中所有的要素都有同樣地屬性字段;另外,它有一個專門存放幾何圖形的字段。1.加載圖層數(shù)據(jù)ShapeFile文件 主要組件接口IWorkspaceFactory、I
19、FeatureWorkspace、IFeatureClass、IFeatureLayer的屬性和方法介紹(參見幫助文件)。1.加載圖層數(shù)據(jù)ShapeFile文件p IWorkspaceFactory IWorkspaceFactory:主要負(fù)責(zé)創(chuàng)建和打開工作區(qū)的函數(shù)以及提供該WorkspaceFactory的相關(guān)信息。1.加載圖層數(shù)據(jù)ShapeFile文件p IFeatureWorkspace IFeatureWorkspace:主要負(fù)責(zé)創(chuàng)建和打開各種類型的數(shù)據(jù)源或者其他工作區(qū)的對象。1.加載圖層數(shù)據(jù)ShapeFile文件p IFeatureLayer IFeatureLayer:主要負(fù)責(zé)控制
20、要素層的通用方面。1.加載圖層數(shù)據(jù)ShapeFile文件p IFeatureClass IFeatureClass:主要負(fù)責(zé)獲得或設(shè)置要素類的屬性。 1.加載圖層數(shù)據(jù)ShapeFile文件p IFeatureClass IFeatureClass:主要負(fù)責(zé)獲得或設(shè)置要素類的屬性。 1.加載圖層數(shù)據(jù)ShapeFile文件 private void 打開矢量ToolStripMenuItem_Click(object sender, EventArgs e) IWorkspaceFactory pWorkspaceFactory; IFeatureWorkspace pFeatureWorkspa
21、ce; IFeatureClass pFeatureClass; IFeatureLayer pFeatureLayer; pWorkspaceFactory = new ShapefileWorkspaceFactoryClass(); pFeatureWorkspace = pWorkspaceFactory.OpenFromFile(E:上課資料測繪08-GIS開發(fā)map, 0) as IFeatureWorkspace; pFeatureClass = pFeatureWorkspace.OpenFeatureClass(區(qū)域); pFeatureLayer = new Feature
22、LayerClass(); pFeatureLayer.FeatureClass = pFeatureClass; pFeatureLayer.Name = 區(qū)域; axMapControl1.AddLayer(pFeatureLayer); axMapControl1.Refresh(); using ESRI.ArcGIS.Geodatabase;using ESRI.ArcGIS.Carto;using ESRI.ArcGIS.DataSourcesFile;1.加載圖層數(shù)據(jù)ShapeFile文件 private void 打開矢量ToolStripMenuItem_Click(obje
23、ct sender, EventArgs e) IWorkspaceFactory pWorkspaceFactory; IFeatureWorkspace pFeatureWorkspace; IFeatureClass pFeatureClass; IFeatureLayer pFeatureLayer; pWorkspaceFactory = new ShapefileWorkspaceFactoryClass(); pFeatureWorkspace = pWorkspaceFactory.OpenFromFile(E:上課資料測繪08-GIS開發(fā)map, 0) as IFeature
24、Workspace; pFeatureClass = pFeatureWorkspace.OpenFeatureClass(區(qū)域); pFeatureLayer = new FeatureLayerClass(); pFeatureLayer.FeatureClass = pFeatureClass; IDataset pDataset = pFeatureClass as IDataset; pFeatureLayer.Name = pDataset.Name; ILayer pLayer = pFeatureLayer as ILayer; axMapControl1.Map.AddLay
25、er(pLayer); axMapControl1.Refresh(); 思考:如何利用對話框打開思考:如何利用對話框打開ShapeFileShapeFile文件?文件?1.加載圖層數(shù)據(jù)柵格數(shù)據(jù) 柵格數(shù)據(jù)是GIS中重要的數(shù)據(jù)源之一。有很強的表達能力,可以描述許多目標(biāo)和事物,如高程和植被等。一般的柵格數(shù)據(jù)有衛(wèi)星圖像、掃描的地圖、照片等。由于存儲格式的不同,柵格數(shù)據(jù)可以分為bmp、tif、jpg、grid等,這些都可為ArcGIS所支持。實際應(yīng)用中,可將它們作為圖層添加到工程中,然后進一步利用和分析。1.加載圖層數(shù)據(jù)柵格數(shù)據(jù)p IRasterLayer IRasterLayer :創(chuàng)建和修改柵格數(shù)
26、據(jù)層。1.加載圖層數(shù)據(jù)柵格數(shù)據(jù)p IRasterLayer1.加載圖層數(shù)據(jù)柵格數(shù)據(jù) using ESRI.ArcGIS.DataSourcesRaster;CreateFromFilePathprivate void opengrid_Click(object sender, EventArgs e) IRasterLayer pRasterLayer = new RasterLayerClass(); pRasterLayer.CreateFromFilePath(E:上課資料測繪08-GIS開發(fā)mapSDJT.JPG); axMapControl1.AddLayer(pRasterLaye
27、r); axMapControl1.Refresh(); 1.加載圖層數(shù)據(jù)柵格數(shù)據(jù)CreateFromDatasetprivate void opengrid_Click(object sender, EventArgs e) string filePath = E:上課資料測繪08-GIS開發(fā)map; string fileNam = SDJT.JPG; IWorkspaceFactory workspcFac = new RasterWorkspaceFactory(); IRasterWorkspace rasterWorkspc; IRasterDataset rasterDatst
28、= new RasterDatasetClass(); IRasterLayer rasterLay = new RasterLayerClass(); rasterWorkspc = workspcFac.OpenFromFile(filePath, 0) as IRasterWorkspace; rasterDatst = rasterWorkspc.OpenRasterDataset(fileNam); rasterLay.CreateFromDataset(rasterDatst); axMapControl1.AddLayer(rasterLay); axMapControl1.Re
29、fresh(); 1.加載圖層數(shù)據(jù)1.加載圖層數(shù)據(jù)2.地圖顯示基本控制 放大、縮小、漫游和全圖顯示是GIS、電子地圖、圖形處理、圖像處理等軟件必備的基本功能,是用戶通過有限的屏幕窗口去認(rèn)識無限的地理空間必須具備的工具,是進行這類軟件開發(fā)時必須開發(fā)的功能。 進行放大和縮小操作時,主要用到IEnvelope接口,而漫游和全圖顯示主要用IMapControl2接口。2.地圖顯示基本控制 IEnvelope接口:Envelopes是包含特定元素在內(nèi)的矩形框。所有的幾何對象通過X的最大最小值和Y的最大最小值都有一個Envelope。p IEnvelope2.地圖顯示基本控制p IEnvelope2.地圖
30、顯示基本控制p IEnvelope2.地圖顯示基本控制p IMapControl2 IMapctrol2接口:主要負(fù)責(zé)控制Mapcontrol控件。2.地圖顯示基本控制p IMapControl22.地圖顯示基本控制p 放大放大(Zoom In)using ESRI.ArcGIS.Geometry;private void ZoomIn_Click(object sender, EventArgs e) IEnvelope pEnvelope; pEnvelope = axMapControl1.Extent; pEnvelope.Expand(0.5, 0.5,true); axMapCon
31、trol1.Extent = pEnvelope; axMapControl1.Refresh(); 2.地圖顯示基本控制p 放大放大(Zoom In)using ESRI.ArcGIS.Geometry; using ESRI.ArcGIS.Controls; private void axMapControl1_OnMouseDown(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseDownEvent e) axMapControl1.MousePointer = esriControlsMousePointer.
32、esriPointerZoomIn; IEnvelope IEnvTrc; IEnvTrc = axMapControl1.TrackRectangle(); axMapControl1.Extent = IEnvTrc; 2.地圖顯示基本控制p 放大放大(Zoom In)using ESRI.ArcGIS.Display;using ESRI.ArcGIS.Geometry;using ESRI.ArcGIS.Carto;using ESRI.ArcGIS.Controls; private INewEnvelopeFeedback m_feedBack; private IPoint m_
33、point; private Boolean m_isMouseDown; private IActiveView m_pActiveView; private void axMapControl1_OnMouseDown(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseDownEvent e) m_pActiveView = axMapControl1.ActiveView; m_point = m_pActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(
34、e.x, e.y); axMapControl1.MousePointer = esriControlsMousePointer.esriPointerPageZoomOut; m_isMouseDown = true; 2.地圖顯示基本控制p 放大放大(Zoom In) private void axMapControl1_OnMouseMove(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseMoveEvent e) if (!m_isMouseDown) return; if (m_feedBack = null
35、) m_feedBack = new NewEnvelopeFeedbackClass(); m_feedBack.Display = m_pActiveView.ScreenDisplay; m_feedBack.Start(m_point); m_feedBack.MoveTo(m_pActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(e.x, e.y); 2.地圖顯示基本控制 private void axMapControl1_OnMouseUp(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseUpEvent e) if (!m_isMouseDown) return; IEnvelope pEnvelope; if (m_feedBack = null) pEnvelope = m_pActiveView.Extent; pEnvelope.Expand(2, 2, true); pEnvelope.CenterAt(m_point); el
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年河北化工醫(yī)藥職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性考試題庫附答案
- 2026年寧夏石嘴山市單招職業(yè)傾向性考試模擬測試卷附答案
- 2026年淄博入團考試試題及答案(考點梳理)
- 2026年湖南幼兒師范高等??茖W(xué)校單招職業(yè)適應(yīng)性考試題庫附答案
- 2026年心理知識分享測試題附答案
- 2026中國旅游集團校園招聘筆試備考試題及答案解析
- 2026年南昌工學(xué)院單招職業(yè)技能考試題庫附答案
- 2026廣東省農(nóng)業(yè)科學(xué)院動物科學(xué)研究所招聘勞動合同制人員1人筆試參考題庫及答案解析
- 2025昆明市第三人民醫(yī)院第二批見習(xí)人員招聘(25人)(公共基礎(chǔ)知識)綜合能力測試題附答案
- 2025廣東省陽江市“百萬英才匯南粵”招聘醫(yī)療衛(wèi)生人才44人(廣州專場)(公共基礎(chǔ)知識)測試題附答案
- 砌體工程監(jiān)理實施細(xì)則及操作規(guī)范
- GB/T 222-2025鋼及合金成品化學(xué)成分允許偏差
- 方太企業(yè)培訓(xùn)課件
- 四川村級財務(wù)管理制度
- 房產(chǎn)抖音培訓(xùn)課件
- (正式版)DB15∕T 3463-2024 《雙爐連續(xù)煉銅工藝技術(shù)規(guī)范》
- 律師團隊合作規(guī)范及管理辦法
- 二氧化硅氣凝膠的制備技術(shù)
- 臨床微生物標(biāo)本采集運送及處理
- 軟件系統(tǒng)運維操作手冊
- 新人教版高中數(shù)學(xué)必修第二冊-第八章 立體幾何初步 章末復(fù)習(xí)【課件】
評論
0/150
提交評論