ArcGIS_Engine二次开发讲义
- 格式:pdf
- 大小:6.30 MB
- 文档页数:62
ArcGIS Engine二次开发实习高级讲义遥感信息工程学院地理信息工程方向实习材料指导教师:秦昆文档编写:张文、郭善昕、余万里、刘文涛武汉大学遥感信息工程学院Contents1. 缩略图(鹰眼) ..............................................错误!未定义书签。
添加控件及代码............................................错误!未定义书签。
代码说明..................................................错误!未定义书签。
小结......................................................错误!未定义书签。
2. 缓冲区分析................................................错误!未定义书签。
添加控件..................................................错误!未定义书签。
添加引用和代码............................................错误!未定义书签。
代码说明..................................................错误!未定义书签。
小结......................................................错误!未定义书签。
3. 叠置分析..................................................错误!未定义书签。
添加控件..................................................错误!未定义书签。
添加引用和代码............................................错误!未定义书签。
arcgis_engine二次开发——提高篇ArcGIS Engine高级功能开发ArcGIS Engine二次开发——提高篇ArcGIS Engine高级功能开发1 缩略图(鹰眼)鹰眼功能是GIS的主要功能之一,当地图范围很大时,它可以很好的为用户指明当前地图的范围。
在本小节中我们将学习如何制作这种鹰眼。
1.1 添加控件新建一个C#.Net项目,项目名称为OverView,将Form1的名字设置为MainForm,并添加ToolbarControl 、两个MapControl和LicenceControl等四个控件。
布局如下图所示。
左边的axMapControl1用于地图数据显示和操作,右边axMapControl2用于鹰眼显示。
图 1 界面布局在ToolbarControl 加载添加数据按钮和地图浏览的功能按钮,如下图所示,并将ToolbarControl的伙伴控件设为axMapControl1。
图 2添加按钮1.2 代码添加及解释鹰眼用来显示主窗体当前视图范围在全景视图中的位置,在ArcMap中使用一个线框在鹰眼视图中标识。
当主视图中的视图范围改变时,鹰眼中的线框随之改变,当拖动鹰眼视图中的红线框时,主视图中的视图范围也随之改变。
下面开始实现鹰眼功能,添加using ESRI.ArcGIS.Carto、usingESRI.ArcGIS.Geometry、 using ESRI.ArcGIS.Display三个引用。
首先在axMapControl1中视图范围改变时鹰眼窗体要做出对应的响应,即绘制线框并显示,在OnExtentUpdated事件中添加代码如下: private voidaxMapControl1_OnExtentUpdated(object sender,ESRI.ArcGIS.Controls.IMapControlEvents2_OnExtentUpdatedEvent e) {//创建鹰眼中线框IEnvelope pEnv = (IEnvelope)e.newEnvelope;IRectangleElement pRectangleEle = new RectangleElementClass();IElement pEle = pRectangleEle as IElement;pEle.Geometry = pEnv;//设置线框的边线对象,包括颜色和线宽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;// 设置颜色属性pColor.Red = 255;pColor.Green = 0;pColor.Blue = 0;pColor.Transparency = 0;// 设置线框填充符号的属性IFillSymbol pFillSymbol = new SimpleFillSymbolClass(); pFillSymbol.Color = pColor;pFillSymbol.Outline = pOutline;IFillShapeElement pFillShapeEle = pEle as IFillShapeElement; pFillShapeEle.Symbol = pFillSymbol;// 得到鹰眼视图中的图形元素容器IGraphicsContainer pGra = axMapControl2.Map as IGraphicsContainer;IActiveView pAv = pGra as IActiveView;// 在绘制前,清除 axMapControl2 中的任何图形元素pGra.DeleteAllElements();// 鹰眼视图中添加线框pGra.AddElement((IElement)pFillShapeEle, 0);// 刷新鹰眼pAv.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null);}当鼠标点击鹰眼窗体时,主窗体Extent随之改变。
ArcGIS Engine二次开发——提高篇1缩略图(鹰眼)鹰眼功能是GIS的主要功能之一,当地图范围很大时,它可以很好的为用户指明当前地图的范围。
在本小节中我们将学习如何制作这种鹰眼。
1.1添加控件新建一个C#.Net项目,项目名称为OverView,将Form1的名字设置为MainForm,并添加ToolbarControl 、两个MapControl和LicenceControl等四个控件。
布局如下图所示。
左边的axMapControl1用于地图数据显示和操作,右边axMapControl2用于鹰眼显示。
图 1 界面布局在ToolbarControl 加载添加数据按钮和地图浏览的功能按钮,如下图所示,并将ToolbarControl的伙伴控件设为axMapControl1。
图2添加按钮1.2代码添加及解释鹰眼用来显示主窗体当前视图范围在全景视图中的位置,在ArcMap中使用一个线框在鹰眼视图中标识。
当主视图中的视图范围改变时,鹰眼中的线框随之改变,当拖动鹰眼视图中的红线框时,主视图中的视图范围也随之改变。
下面开始实现鹰眼功能,添加using ESRI.ArcGIS.Carto、using ESRI.ArcGIS.Geometry、using ESRI.ArcGIS.Display三个引用。
首先在axMapControl1中视图范围改变时鹰眼窗体要做出对应的响应,即绘制线框并显示,在OnExtentUpdated事件中添加代码如下:private void axMapControl1_OnExtentUpdated(object sender,ESRI.ArcGIS.Controls.IMapControlEvents2_OnExtentUpdatedEvent e){//创建鹰眼中线框IEnvelope pEnv = (IEnvelope)e.newEnvelope;IRectangleElement pRectangleEle = new RectangleElementClass();IElement pEle = pRectangleEle as IElement;pEle.Geometry = pEnv;//设置线框的边线对象,包括颜色和线宽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;// 设置颜色属性pColor.Red = 255;pColor.Green = 0;pColor.Blue = 0;pColor.Transparency = 0;// 设置线框填充符号的属性IFillSymbol pFillSymbol = new SimpleFillSymbolClass();pFillSymbol.Color = pColor;pFillSymbol.Outline = pOutline;IFillShapeElement pFillShapeEle = pEle as IFillShapeElement;pFillShapeEle.Symbol = pFillSymbol;// 得到鹰眼视图中的图形元素容器IGraphicsContainer pGra = axMapControl2.Map as IGraphicsContainer;IActiveView pAv = pGra as IActiveView;// 在绘制前,清除axMapControl2 中的任何图形元素pGra.DeleteAllElements();// 鹰眼视图中添加线框pGra.AddElement((IElement)pFillShapeEle, 0);// 刷新鹰眼pAv.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null);}当鼠标点击鹰眼窗体时,主窗体Extent随之改变。
ArcGIS Engine二次开发实习初级讲义目录1 ArcGIS、ArcObjects和ArcGIS Engine简介.................................................................... - 3 -1.1 ArcGIS简介 ................................................................................................................ - 3 -1.2 ArcObjects简介 .......................................................................................................... - 4 -1.3 ArcGIS Engine简介.................................................................................................... - 5 -2 ArcGIS控件介绍.................................................................................................................... - 7 -2.1 ArcGIS控件简介 ........................................................................................................ - 7 -2.2重要控件简介............................................................................................................... - 9 -3 ArcGIS Engine二次开发入门 ............................................................................................ - 16 -3.1 ArcGIS Engine开发起步——第一个简单的地图显示程序 .................................. - 16 -3.2 属性查询.................................................................................................................... - 23 -3.3 空间查询.................................................................................................................... - 27 -3.4 BaseCommand开发实例 .......................................................................................... - 36 -3.5 BaseTool开发实例.................................................................................................... - 38 -3.6通过代码添加图层..................................................................................................... - 42 -3.7基于比例尺显示地图................................................................................................. - 44 -3.8 构建一个简单的GIS应用........................................................................................ - 46 -4.问题解决方法及帮助文档的使用........................................................................................ - 58 -4.1使用ArcObjects开发帮助系统............................................................................... - 58 -4.2阅读对象模型图(Object Model Diagram)......................................................... - 62 -1 ArcGIS、ArcObjects和ArcGIS Engine简介1.1 ArcGIS简介ArcGIS提供了一个可伸缩的框架,可以为独立用户或者多用户,既可以在桌面端也可以在服务器端提供GIS。
基于ArcGISEngine地理信息系统的二次开发基于ArcGISEngine地理信息系统的二次开发地理信息系统(Geographical Information System, GIS)是一种用于收集、存储、处理、分析和展示地理空间数据的计算机系统。
随着地理信息技术的不断进步,ArcGISEngine作为GIS领域开发的重要工具之一,为开发人员提供了丰富的功能和强大的开发平台,使得二次开发成为可能。
ArcGISEngine是Esri公司推出的一套开发工具包,基于ArcGIS核心技术,能够在各种WINDOWS平台上实现高性能、高度灵活的GIS应用程序开发。
它提供的API包括ArcObjects、ArcSDE、ArcGIS Server等,开发人员可以利用这些工具开发各种地理空间应用程序,满足用户的需求。
在进行二次开发时,首先需要理解ArcGISEngine的基本概念和核心功能。
ArcGISEngine使用一种被称为“地理数据对象”的结构组织和管理各种地理数据。
开发人员可以利用ArcObjects这一API来完成对地理数据对象的插入、查询、更新和删除等操作。
此外,ArcGISEngine还提供了丰富的符号化功能,使得地理数据可以以各种形式进行可视化展示。
在二次开发过程中,需要根据具体的需求对ArcGISEngine进行定制和扩展。
开发人员可以利用ArcObjects提供的面向对象的编程接口进行开发,根据需求自定义各种功能和工具。
例如,可以通过ArcObjects扩展空间分析功能,实现区域查询、缓冲区分析、路径分析等高级功能。
此外,还可以利用ArcGISEngine提供的控件库来开发用户友好的GIS应用界面,实现数据管理、地图显示、图层控制等交互操作。
ArcGISEngine还支持与其他系统和第三方数据源的集成,提供了与数据库、Web服务、传感器等系统的连接和交互接口。
例如,可以通过ArcObjects与数据库系统进行数据交互,从而实现地理数据的导入、导出、更新等操作。
ArcGISEngine⼆次开发:从⼊门到精通ArcGIS Engine是ArcGIS的⼀套软件开发引擎,可以让程序员创建⾃定义的GIS桌⾯程序。
它是ESRI在ArcGIS9版本才开始推出的新产品,它是⼀套完备的嵌⼊式GIS 组件库和⼯具库,使⽤ArcGIS Engine开发的GIS应⽤程序可以脱离ArcGIS Desktop⽽运⾏。
>>ArcGIS Engine与国⼟资源:ESRI在线⽀持:最好的帮助⽂档其实是arcobject sdk帮助⽂档和samples.....但是,有⼀本参考书还是必要的。
本书共16章。
第⼀部分为基础篇:第1~9章,主要是控件。
第⼆部分为应⽤提⾼篇:空间分析。
第10章。
第三部分:第11~12章,实例应⽤。
第四部分为空间数据库的操作。
第1章开发基础ArcGIS的类库总体可以分为界⾯控件类和操作组件类。
控件和组件是不⼀样的,控件是有界⾯的,组件是没有界⾯的。
所以它们的引⽤⽅式是不⼀样的。
需要注意它们的区别。
具体可以看:OM组件System类库:System类库是Engine中最底层的类库。
SystemUI类库:主要定义了ArcGIS系统中所使⽤的⽤户界⾯组件类型。
Geometry类库:包含了核⼼⼏何对象,如点、线、多边形及其⼏何类型和定义。
Display类库:包含了⽀持向输出装置绘制符号体系的组件。
Server类库:包含了⽤于获取到ArcGIS Server的连接的对象。
Output类库:包含了⽣成输出所必须的对象,通常是从地图或页⾯布局输出到打印机、绘图仪,或导出到⽂件中。
Geodatabase类库:Geodatabase类库:包含了所有与数据访问相关的定义的类型,为地理数据提供了编程API,是建⽴在标准⼯业关系型和对象关系数据库技术之上的地理数据库。
GISClient类库:DataSourcesFile类库:DataSourcesGDB类库:DataSourcesOleDB类库:DataSourcesRaster类库:GeoDatabaseDistributed类库:Carto类库:Carto类库:该类库⽀持地图的创建和显⽰,PageLayout 对象是地图及其底图元素的容器。
第五章ArcGIS Engine二次开发入门5.1 ArcGIS、ArcObjects和ArcGIS Engine简介5.1.1 ArcGIS简介ArcGIS提供了一个可伸缩的框架,可以为独立用户或者多用户,既可以在桌面端也可以在服务器端提供GIS。
ArcGIS 9是用来构建一个完整GIS应用的GIS软件产品集成。
它是基于共享的GIS软件组件——ArcObjects。
ArcGIS 9由以下四部分组成:●ArcGIS Desktop——高级GIS应用的集成●ArcGIS Engine——根据应用程序接口来构建基本应用的嵌入式GIS组件库●ArcGIS Server——在企业级或者网络框架下构建服务器端GIS应用的平台,用来构建Web服务和Web应用●ArcIMS——通过公开的因特网协议来发布地图、数据和元数据的GIS Web服务器图 1 ArcGIS产品结构图每一个GIS框架同样包含ArcSDE网关,这是在关系数据库(RDBMS)上组织地理数据的接口。
ArcGIS是构建地理信息系统的平台。
ArcGIS 9在地理数据处理、3D可视化表达和开发工具方面做了新的扩展。
两个新的产品——ArcGIS Engine和ArcGIS Server在这个版本中发布,是ArcGIS成为一个应用程序及服务端开发的完整产品。
●使用ArcGIS能够开发出一系列的产品,开发者可以:●配置/定制ArcGIS的应用,例如ArcMap和ArcCatalog●扩展ArcGIS的结构和数据模型●利用ArcGIS Engine在其他应用程序中嵌入地图和GIS功能●使用ArcGIS Engine构建并部署桌面版应用程序●使用ArcGIS Server构建Web服务和应用ArcGIS系列产品是通过称之为ArcObjects的软件组件加以构建和扩展的。
ArcObjects 包括一系列不同的程序组件,从高度封装的组件(例如独立的geometry objects)到低级组件(例如能够同已有的ArcMap文档集成的地图组件)。
ArcGIS Engine二次开发实习初级讲义目录1 ArcGIS、ArcObjects和ArcGIS Engine简介....................................................................- 3 -1.1 ArcGIS简介................................................................................................................- 3 -1.2 ArcObjects简介..........................................................................................................- 4 -1.3 ArcGIS Engine简介....................................................................................................- 5 -2 ArcGIS控件介绍....................................................................................................................- 7 -2.1 ArcGIS控件简介........................................................................................................- 7 -2.2重要控件简介...............................................................................................................- 9 -3 ArcGIS Engine二次开发入门............................................................................................- 16 -3.1 ArcGIS Engine开发起步——第一个简单的地图显示程序..................................- 16 -3.2 属性查询....................................................................................................................- 23 -3.3 空间查询....................................................................................................................- 27 -3.4 BaseCommand开发实例..........................................................................................- 36 -3.5 BaseTool开发实例....................................................................................................- 38 -3.6通过代码添加图层.....................................................................................................- 42 -3.7基于比例尺显示地图.................................................................................................- 44 -3.8 构建一个简单的GIS应用........................................................................................- 46 -4.问题解决方法及帮助文档的使用........................................................................................- 58 -4.1使用ArcObjects开发帮助系统...............................................................................- 58 -4.2阅读对象模型图(Object Model Diagram).........................................................- 62 -1 ArcGIS、ArcObjects和ArcGIS Engine简介1.1 ArcGIS简介ArcGIS提供了一个可伸缩的框架,可以为独立用户或者多用户,既可以在桌面端也可以在服务器端提供GIS。
ArcGIS 9是用来构建一个完整GIS应用的GIS软件产品集成。
它是基于共享的GIS软件组件——ArcObjects。
ArcGIS 9由以下四部分组成:●ArcGIS Desktop——高级GIS应用的集成●ArcGIS Engine——根据应用程序接口来构建基本应用的嵌入式GIS组件库●ArcGIS Server——在企业级或者网络框架下构建服务器端GIS应用的平台,用来构建Web服务和Web应用●ArcIMS——通过公开的因特网协议来发布地图、数据和元数据的GIS Web服务器图1 ArcGIS产品结构图每一个GIS框架同样包含ArcSDE网关,这是在关系数据库(RDBMS)上组织地理数据的接口。
ArcGIS是构建地理信息系统的平台。
ArcGIS 9在地理数据处理、3D可视化表达和开发工具方面做了新的扩展。
两个新的产品——ArcGIS Engine和ArcGIS Server在这个版本中发布,是ArcGIS成为一个应用程序及服务端开发的完整产品。
●使用ArcGIS能够开发出一系列的产品,开发者可以:●配置/定制ArcGIS的应用,例如ArcMap和ArcCatalog●扩展ArcGIS的结构和数据模型●利用ArcGIS Engine在其他应用程序中嵌入地图和GIS功能●使用ArcGIS Engine构建并部署桌面版应用程序●使用ArcGIS Server构建Web服务和应用ArcGIS系列产品是通过称之为ArcObjects的软件组件加以构建和扩展的。
ArcObjects 包括一系列不同的程序组件,从高度封装的组件(例如独立的geometry objects)到低级组件(例如能够同已有的ArcMap文档集成的地图组件)。
这些组件为开发者集成了大量的GIS 功能。
ArcGIS 9的全线产品都具备开发功能(Engine,Server和Desktop)。
作为一个开发者,您能够使用标准程序框架结合ArcObjects来扩张ArcGIS Desktop;能够用ArcGIS Engine定制应用;能够使用ArcGIS Server构建企业级的GIS应用。
图2 ArcGIS开发结构图ArcGIS Desktop包含了一些列的Windows桌面应用程序(例如,地图、目录、工具箱、地球方面的应用)。
ArcGIS Desktop包含了三种功能级别(ArcView,ArcEditor和ArcInfo),使用ArcGIS Desktop开发包能够进行客户化和扩展。
ArcGIS Desktop的软件开发包(software developer kit,SDK)包含在ArcView,ArcEditor和ArcInfo内,支持COM(Component Objects Mode l,组件对象模型)和.NET 程序框架。
许多开发者利用Desktop SDK扩展功能,创建新的GIS工具,定制用户界面,完善ArcGIS Desktop应用中专业GIS产品的扩展功能。
ArcGIS Server不仅定义和实现了一系列标准的GIS Web服务(例如,地图、数据访问、地理编码等),同时还支持利用ArcObjects进行企业级的服务端应用开发。
ArcGIS Server开发包让开发者能构建GIS服务器用来向多用户提供可供访问的GIS 功能,能通过客户端对大型GIS中央服务器进行处理,能构建和分发GIS Web应用,能进行分布式GIS运算。
1.2 ArcObjects简介ArcObjects是ArcGIS Desktop的开发平台。
ArcGIS Desktop是一系列GIS软件系统:ArcInfo,ArcEditor和ArcView。
这些系统服务于GIS,例如地理数据组织、控件编辑、分级可视化等功能。
ArcGIS Desktop系统包含一系列的应用,例如ArcCatalog、ArcMap、ArcT oolBox和ArcScene,并且能够集成大量不同的扩展产品,例如ArcGIS Spatial Analyst(空间分析模块),ArcGIS Geostatistical Analyst(地理统计分析模块),ArcGIS 3D Analyst(三维分析模块)等。
ArcObjects是使用微软的组件对象模型(Component Objects Model,COM)书写。
因此,凡是支持COM标准的开发语言都能使用ArcObjects。
您能向ESRI(Environment System Research Institute,环境系统研究所)的开发者一样,使用同样的方式来扩展ArcObjects中的任何一部分。
1.3 ArcGIS Engine简介ArcGIS Engine是开发者用来构建应用程序的一整套嵌入式GIS组件。
使用ArcGIS Engine,您可以将一些GIS功能嵌入到已有的应用程序中,这包括Microsoft Office产品,例如Word和Excel,建造有针对性的客户应用程序用来将高级GIS系统与他人分享。