ArcGISEngine二次开发提高篇
ArcGIS二次开发

第一章z开发基础1.1组件对象模型在明确讨论COM之前,有必要先一般性地思考一下软件组件使用的广泛性。
在软件组件背后有许多的驱使因素,但最基本的就是软件开发是个昂贵和耗时的风险行为。
在理想的世界里,假如曾经写了一段代码,然后通过不同的开发工具一次一次的反复使用它,这种情况是可能的,即便是在最初的开发者不能预见的环境下也能使用。
理想情况下,对最初开发者生成的函数功能的改变能在不需要目前用户改变和重编译他们的代码情况下实现。
早期重用代码块的尝试就是创建类库的进展,这些类库通常用C++开发。
早期的尝试有很多的限制,较为明显的是:共享系统组件的困难(共享二进制C++组件是非常困难的——大部分的尝试是共享源代码);不重新编译就很难保存和更新C++组件的问题;缺乏好的建模语言和工具以及属性接口和定制工具。
为了解决这样那样的一些问题,许多软件工程师开始采用基于组件的方法进行系统开发。
一个软件组件就是一个可重用代码的二进制单元。
已经出现了几个不同但相互重叠的开发和共享组件标准。
微软的COM已成为建立交互式桌面应用程序事实上的标准。
在互联网上,JavaBean是可行的技术。
对象管理组(OMG)制定了粗粒度层次上适用于应用程序互操作的公用对象请求代理架构(CORBA)。
为了理解COM(以及所有基于COM的技术),认识到其不是一种面向对象语言而是一个协议或标准是非常重要的。
COM不仅仅是一种技术,还是软件开发的一种方法论。
COM定义了一种连接软件组件或模型的协议。
通过使用这种协议,可以建立能在分布式系统中动态交互的可重用软件组件。
COM还定义了一种称作基于接口的编程模式。
对象封装了能体现定义良好的接口后每个实例化对象特征的操作方法和数据。
这增强了系统开发的结构化和安全性,因为一个对象的客户并不知道某个特定方法如何实现的任何细节。
COM不规定应如何构建一个应用程序。
语言、结构和实现细节都由使用COM的应用程序开发人员决定。
arcgisengine二次开发实例

arcgisengine二次开发实例
ArcGIS Engine是ArcGIS系列软件产品之一,用于在分布式系统环境下构建ArcGIS 技术,实现GIS应用软件开发。
开发人员可以利用ArcGIS Engine来构建自定义GIS应用程序、地理空间分析应用程序以及分布式GIS解决方案。
ArcGIS Engine提供了一个强大的开发平台,它的几乎所有的开发框架以及资源都位于一个方便的框架中,开发人员可以使用其中的几中可视化控件进行ArcGIS地图和数据应用开发。
ArcGIS Engine是一款基于COM(Component Object Model)技术的GIS应用平台,它通过COM在用户定义的交互界面之间提供了独立的组件。
组件定义了一种行为和数据的概念,组件间的交互可以非常简单的实现。
ArcGIS Engine可以作为地图数据的可视化引擎,允许开发者使用统一的图形化界面控制地图的显示和操作。
此外它还可提供复杂的数据空间分析模块,在开发人员输入实际的空间数据后,可进行数据空间分析,产生对空间结果分析的可视化输出。
ArcGIS Engine可以让开发者灵活地构建系统架构,以满足自定义的GIS应用开发需求。
开发人员可以使用ArcGIS Engine的组件,使其在分布式的应用程序框架中更好的发挥作用。
比如可以使用专业矢量处理组件,在GIS信息系统中构建面板,并在面板上放入各种可视化控件,满足对空间数据的管理和空间数据分析需求。
ArcGIS_Engine二次开发高级讲义

ArcGIS Engine二次开发实习高级讲义遥感信息工程学院地理信息工程方向实习材料指导教师:秦昆文档编写:张文、郭善昕、余万里、刘文涛武汉大学遥感信息工程学院Contents1. 缩略图(鹰眼) ..............................................错误!未定义书签。
添加控件及代码............................................错误!未定义书签。
代码说明..................................................错误!未定义书签。
小结......................................................错误!未定义书签。
2. 缓冲区分析................................................错误!未定义书签。
添加控件..................................................错误!未定义书签。
添加引用和代码............................................错误!未定义书签。
代码说明..................................................错误!未定义书签。
小结......................................................错误!未定义书签。
3. 叠置分析..................................................错误!未定义书签。
添加控件..................................................错误!未定义书签。
添加引用和代码............................................错误!未定义书签。
基于ArcGISEngine的地理信息系统二次开发原理和方法_金靖

测绘与空间地理信息
GEOMATICS & SPATIAL INFORMATION TECHNOLOGY
Vol. 35,No. 3 Mar. ,2012
基于 ArcGIS Engine 的地理信息系统 二次开发原理和方法
Байду номын сангаас金靖
( 湖北省鄂州市勘测院,湖北 鄂州 436000)
第3 期
金 靖: 基于 ArcGIS Engine 的地理信息系统二次开发原理和方法
47
开发的原理和 方 法,以 期 为 相 关 地 理 信 息 系 统 的 开 发 和 建设提供参考。
1 COM 原理
COM( Component Object Model,组件对象模型) 是一 种以组件为发 布 单 元 的 对 象 模 型,它 可 作 为 一 种 跨 平 台 的客户服务器系统开发技术,具有开放的体系结构,它不 仅定义了组件 程 序 之 间 进 行 交 互 的 标 准,并 且 也 提 供 了 组件程序运行所需的环境[7]。COM 提供了编写组件的一 种标准方法,只要遵循 COM 标准的组件就可以组合起来 以形成应用程序。COM 接口是一组逻辑上相互关联的操 作,这些操作定 义 了 某 种 行 为,即 这 组 操 作 的 规 范,而 非 特定的实现,实 质 是 接 口 代 表 了 接 口 调 用 者 和 实 现 者 之 间的一种约定,当两个应用程序通信时,一个应用程序初 始化二者之 间 的 关 系,这 个 应 用 程 序 被 称 为 COM 客 户 机,或 COM 控制器,而另一个应用程序被称为 COM 服务 器,COM 客户机访问由 COM 服务器提供的服务[9 - 11]。
3 ArcGIS Engine 开发实例
arcgis 二次开发

gis的开发方法有三种,即独立开发,宿主型二次开发,基于gis组件的二次开发,其中独立开发为底层开发,不依赖于任何gis工具软件,开发难度太大,后两者是基于一种软件的二次开发,这样的二次开发则相对较简单,他的好处也是显而易见的。
宿主型二次开发是指基于GIS平台软件上进行应用系统开发。
大多数GIS平台软件都提供了可供用户进行二次开发的脚本语言,如ESRI的ArcView提供了Avenue语言,Maplnfo公司的MapInfo Professional提供了MapBasic语言等等。
用户可以利用这些脚本语言,以原GIS软件为开发平台,开发出自己的针对不同应用对象的应用程序。
这种方式省时省心,但进行二次开发的脚本语言,作为编程语言,功能极弱,用它们来开发应用程序仍然不尽如人意,并且所开发的系统不能脱离GIS平台软件,是解释执行的,效率不高。
相比基于组件的二次开发可以根据自己的需要扩展系统的功能,并且可以脱离原gis平台软件,综合看来,单纯二次开发受gis基础平台提供的编程语言的限制,而基于组件式的二次开发不仅能提高开发效率,同时可靠性好,易于移植,便于维护。
所以,结合gis基础平台软件与当今可视化开发语言的组件式二次开发成为gis开发的主流。
但是二次开发也不是十全十美的,只要我们使其中的瑕疵减少,误差也就会减少。
ArcGIS Engine开发工具包是一个基于组件的软件开发产品,用于建立和部署自定义GIS和制图应用程序。
ArcGIS Engine开发工具包不是一个终端用户产品,而是一个应用程序开发人员的工具包。
可以用ArcGIS Engine开发工具包建立基本的地图浏览器或综合、动态的GIS编辑工具。
使用ArcGIS Engine开发工具包,开发人员在建立定制的地图接口方面具有前所未有的灵活性。
开发人员可以使用几个API中的任何一个来建立独一无二的应用程序,或者将ArcGIS Engine组件与其他软件组件组合起来实现地图与用户管理信息之间的协同关系。
gis二次开发实训总结

gis二次开发实训总结GIS(地理信息系统)二次开发实训总结一、引言GIS(地理信息系统)是一种将地理空间信息与属性信息相结合的技术系统,广泛应用于地理信息管理、地理空间分析、空间决策支持等领域。
在GIS软件应用过程中,二次开发能够满足特定需求,提高工作效率和数据处理能力。
本文将总结我在GIS二次开发实训中的学习经验和体会。
二、实训内容实训内容主要包括GIS软件的基本操作、二次开发的常用工具和技术、以及实际项目的开发。
在实训中,我通过学习和实践,掌握了GIS软件的基本操作技巧,如数据导入、地图绘制、属性查询等。
同时,我还学习了GIS二次开发的常用工具和技术,如ArcGIS Engine、ArcObjects、ArcPy等,这些工具和技术能够帮助我们进行地理空间数据的处理和分析。
在实训的最后阶段,我还参与了一个实际项目的开发,通过对项目需求的分析和编码实现,完成了一个基于GIS的地理空间分析系统。
三、学习经验1. 系统学习GIS基础知识:在进行GIS二次开发之前,充分了解GIS的基本概念和原理非常重要。
只有对GIS的基础知识有清晰的认识,才能更好地进行二次开发工作。
2. 熟悉GIS软件的操作:熟练掌握GIS软件的操作是进行二次开发的基础。
通过反复练习和实践,我逐渐熟悉了GIS软件的各种功能和操作方法,提高了工作效率。
3. 深入学习GIS二次开发工具和技术:GIS二次开发涉及到一些专门的工具和技术,如ArcGIS Engine、ArcObjects、ArcPy等。
通过深入学习这些工具和技术,我能够更好地进行地理空间数据处理和分析,并实现特定需求。
4. 学会利用网络资源:在进行GIS二次开发过程中,遇到问题时,学会利用网络资源进行查找和解决是非常重要的。
通过查阅相关文档和论坛,我解决了许多开发中的问题。
5. 多实践、多项目参与:只有不断地实践和参与项目,才能真正掌握GIS二次开发的技巧和经验。
在实践中,我遇到了许多问题,但通过不断尝试和摸索,最终都找到了解决方法。
ArcGISEngine地理信息系统基础上的二次开发

ArcGISEngine地理信息系统基础上的二次开发
谭卢师;熊志伟;殷金荣;常晶晶
【期刊名称】《城市地理》
【年(卷),期】2014(000)018
【摘要】组件式GIS已经成为目前GIS软件开发的主流,特别是COM技术和GIS的相结合。
ArcGISEngine是一种嵌入式组件库,将其建立应用于一个组织内,能够为使用者提供一套良好的GIS功能平台,在节省开发成本、简化地理信息开
发流程等方面具有积极的作用,本文就主要对其二次开发的原理及方法予以简单分析。
【总页数】1页(P208-208)
【作者】谭卢师;熊志伟;殷金荣;常晶晶
【作者单位】黄河勘测规划设计有限公司测绘信息工程院,河南郑州 450003;黄
河勘测规划设计有限公司测绘信息工程院,河南郑州 450003;黄河勘测规划设计
有限公司测绘信息工程院,河南郑州 450003;黄河勘测规划设计有限公司测绘信
息工程院,河南郑州 450003
【正文语种】中文
【相关文献】
1.地理信息系统基础上的早期道路模拟研究——以垣曲盆地为例 [J], 石涛
2.地理信息系统二次开发实验教学改革探讨 [J], 陈鹏
3.建立于SuperMap二次开发基础上的工作面突出危险性评价系统 [J], 岳俊;张
庆华;李明建;马国龙;曾克坚
4.基于OLE技术的地理信息系统二次开发应用研究 [J], 王斌;岳鹏;李杰;张立海
5.先深耕再训练——文本细读基础上统编教材的二次开发 [J], 李中华
因版权原因,仅展示原文概要,查看原文内容请购买。
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、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随之改变。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ArcGIS Engine二次开发——提高篇1缩略图(鹰眼)鹰眼功能是GIS的主要功能之一,当地图范围很大时,它可以很好的为用户指明当前地图的范围。
在本小节中我们将学习如何制作这种鹰眼。
1.1添加控件新建一个C#.Net项目,项目名称为OverView,将Form1的名字设置为MainForm,并添加ToolbarControl 、两个MapControl和LicenceControl等四个控件。
布局如下图所示。
左边的axMapControl1用于地图数据显示和操作,右边axMapControl2用于鹰眼显示。
图 1 界面布局在ToolbarControl 加载添加数据按钮和地图浏览的功能按钮,如下图所示,并将ToolbarControl的伙伴控件设为axMapControl1。
图2添加按钮1.2代码添加及解释鹰眼用来显示主窗体当前视图范围在全景视图中的位置,在ArcMap中使用一个线框在鹰眼视图中标识。
当主视图中的视图范围改变时,鹰眼中的线框随之改变,当拖动鹰眼视图中的红线框时,主视图中的视图范围也随之改变。
下面开始实现鹰眼功能,添加、、三个引用。
首先在axMapControl1中视图范围改变时鹰眼窗体要做出对应的响应,即绘制线框并显示,在OnExtentUpdated事件中添加代码如下:private void axMapControl1_OnExtentUpdated(object sender, e){et项目,项目名称为Buffer,将Form1的名字设置为MainForm,并添加ToolbarControl 、MapControl、TOCControl、LicenceControl和Button等五个控件。
并将ToolbarControl 、TOCControl的伙伴控件设为MapControl,Button控件的Name属性设定为btnBuffer,Text属性设定为“缓冲区分析”。
控件布局效果如下图所示。
图3控件布局效果在ToolbarControl 加载添加数据按钮和地图浏览的功能按钮,如下图所示。
图4添加按钮1.2.1代码添加及解释首先添加如下四个命名空间的引用。
在使用Geoprocessor工具实现缓冲区分析时,需要首先定义一个Geoprocessor对象,因为命名空间“也包含Geoprocessor类,为了避免混淆,我们使用命名空间来定义Geoprocessor,然后设置Geoprocessor中的环境参数,这里我们使用默认参数。
然后定义一个操作类Buffer,并设置参数,生成缓冲区的参数包含原始图层,缓冲半径和输出路径,最后使用已定义的Geoprocessor 对象执行即可。
双击“生成缓存区”按钮,添加代码如下:private void btnBuffer_Click(object sender, EventArgs e){hp)|*.shp";hp" != {("输出路径错误!");return;}et项目,项目名称为OverLay,将Form1的名字设置为MainForm,并添加ToolbarControl 、MapControl、TOCControl、LicenceControl和Button等五个控件。
并将ToolbarControl 、TOCControl的伙伴控件设为MapControl,Button控件的Name属性设定为btnIntersect,Text属性设定为“叠置求交”。
控件布局效果如下图所示。
图5控件布局效果在ToolbarControl 加载添加数据按钮和地图浏览的功能按钮,如下图所示。
图6添加按钮1.2.2代码添加及解释首先添加如下引用:using与缓冲区分析的实现类似,在使用Geoprocessor工具实现叠置分析时,需要首先定义一个Geoprocessor对象,因为命名空间“也包含Geoprocessor类,为了避免混淆,我们使用命名空间来定义Geoprocessor,然后设置Geoprocessor中的环境参数,这里我们使用默认参数。
然后定义一个操作类,这里为Intersect,然后设置其操作参数,这里我们仅设置输入的要素,最后使用已定义的Geoprocessor对象执行即可。
双击“生成缓存区”按钮,添加代码如下:private void btnIntersect_Click(object sender, EventArgs e){hp)|*.shp";= "选择第一个要素";hp)|*.shp";= "选择第二个要素";hp)|*.shp";hp";;string strName = (index);Union et项目,项目名称为OverLay,将Form1的名字设置为MainForm,Text 属性设为“地图编辑”,并添加ToolbarControl 、MapControl、TOCControl、LicenceControl、四个Button、两个ComboBox、两个Label和一个GroupBox等控件。
将ToolbarControl 、TOCControl的伙伴控件设为MapControl,ToolbarControl 加载添加数据按钮和地图浏览的功能按钮。
控件布局效果如下图所示。
图7界面效果控件属性设置如下:表1控件属性设置1.3添加引用和代码ArcEngine中的地图编辑使用IWorkspaceEdit接口来进行编辑状态的管理,在需要对指定的工作空间进行编辑时,首先使用IWorkspaceEdit获取该工作空间的数据,然后使用StartEditing 方法开始编辑状态,StartEditOperation方法打开具体编辑的操作,编辑完成后,使用StopEditOperation方法关闭编辑操作,使用StopEditing方法关闭编辑状态,完成编辑。
在本例中,我们实现了新的点线面要素的创建和移动的功能,涉及到了比较复杂的鼠标与地图间的交互,这个功能的实现中,IDisplayFeedback是一个十分关键的接口,它具有涉及创建要素,移动要素、编辑节点等31个实现类,能够实现鼠标与地图交互中的事件的追踪,返回新的几何对象。
本例的实现,我们首先来添加一个编辑类,将涉及到的编辑的相关方法抽象到这个类中。
在项目中添加“Edit”类。
添加如下引用。
using定义如下成员变量。
private bool mIsEditing; orkspace;mWorkspaceEdit = pWorkspace as IWorkspaceEdit;if (mWorkspaceEdit == null)return;creenDisplay;pNewLineFeedback = mDisplayFeedback as INewLineFeedback;creenDisplay;pNewPolygonFeedback = mDisplayFeedback as INewPolygonFeedback;creenDisplay;et项目,项目名称为MapRender,将Form1的名字设置为MainForm,并添加ToolbarControl 、MapControl、TOCControl、LicenceControl和Button等五个控件。
并将ToolbarControl 、TOCControl的伙伴控件设为MapControl。
控件布局效果如下图所示。
图8控件布局效果在ToolbarControl 加载添加数据按钮和地图浏览的功能按钮,如下图所示。
图9工具栏设置效果添加Buttom按钮的属性设置如下:表4控件属性设置1.4代码添加及解释该工程需要添加如下引用:usingusingusingusingusing在axMapControl1控件中添加图层,如图所示:图10添加初始化图层1. 简单着色代码添加添加btnSimpIeRenderer按钮的Click事件代码:private void btnSimpIeRenderer_Click(object sender, EventArgs e){IMap pMap = ;分级着色代码添加在前面代码的基础上添加如下引用:usingusing然后添加btnCIassBreakRenderer按钮的Click事件代码:private void btnCIassBreakRenderer_Click(object sender, EventArgs e) {IGeoFeatureLayer pGeoFeatureL;ITable pTable;IClassifyGEN pClassify;ITableHistogram pTableHistogram;IBasicHistogram pHistogram;object dataFrequency;object dataValues;double[] Classes;int ClassesCount;IClassBreaksRenderer pClassBreaksRenderer;IHsvColor pFromColor;IHsvColor pToColor;IAlgorithmicColorRamp pAlgorithmicCR;IEnumColors pEnumColors;bool ok;IColor pColor;ISimpleFillSymbol pSimpleFillS;int lbreakIndex;string strPopField = "POP1990";int numDesiredClasses = 5;IMap pMap = ;= 0;pGeoFeatureL = (IGeoFeatureLayer)(0);ET中必须使用IClassifyGEN这个借口定义的对象才能实现分级。
3. 唯一值着色代码添加添加btnUniqueValueRenderer按钮的Click事件代码:private void btnUniqueValueRenderer_Click(object sender, EventArgs e) {IGeoFeatureLayer m_pGeoFeatureL;IUniqueValueRenderer pUniqueValueR;IFillSymbol pFillSymbol;IColor pNextUniqueColor;IEnumColors pEnumRamp;ITable pTable;int lfieldNumber;IRow pNextRow;IRowBuffer pNextRowBuffer;ICursor pCursor;IQueryFilter pQueryFilter;string codeValue;IRandomColorRamp pColorRamp;string strNameField = "State_Name";IMap pMap = ;= 0;m_pGeoFeatureL = (IGeoFeatureLayer)(0);pUniqueValueR = new UniqueValueRendererClass();pTable = (ITable)m_pGeoFeatureL;lfieldNumber = (strNameField);if (lfieldNumber == -1){("未能找到字段 " + strNameField);return;}唯一值着色代码添加在前面代码的基础上添加引用using stdole;然后添加btnSymbolRenderer按钮的Click事件代码:private void btnSymbolRenderer_Click(object sender, EventArgs e) {IGeoFeatureLayer pGeoFeatureLayer;IFeatureLayer pFeatureLayer;IProportionalSymbolRenderer pProportionalSymbolR;ITable pTable;IQueryFilter pQueryFilter;ICursor pCursor;IFillSymbol pFillSymbol;ICharacterMarkerSymbol pCharaterMarkerS;IDataStatistics pDataStatistics;IStatisticsResults pStatisticsResult;pFontDisp;IRotationRenderer pRotationRenderer;IMap pMap = ;= 0;pFeatureLayer = (IGeoFeatureLayer)(0);pGeoFeatureLayer = (IGeoFeatureLayer)pFeatureLayer;pTable = (ITable)pGeoFeatureLayer;pQueryFilter = new QueryFilterClass();("");pCursor = (pQueryFilter, true);质量图着色代码添加这里以柱状图为例,先添加引用如下:然后添加btnChartRenderer按钮的Click事件代码:private void btnChartRenderer_Click(object sender, EventArgs e) {IGeoFeatureLayer pGeoFeatureL;IFeatureLayer pFeatureLayer;ITable pTable;ICursor pCursor;IQueryFilter pQueryFilter;IRowBuffer pRowBuffer;int numFields = 2;int[] fieldIndecies = new int[numFields];int lfieldIndex;double dmaxValue;bool firstValue;double dfieldValue;IChartRenderer pChartRenderer;IRendererFields pRendererFields;IFillSymbol pFillSymbol;IMarkerSymbol pMarkerSymbol;ISymbolArray pSymbolArray;IChartSymbol pChartSymbol;简单着色代码添加添加btnDotDensityRenderer按钮的Click事件代码:private void btnDotDensityRenderer_Click(object sender, EventArgs e) {IGeoFeatureLayer pGeoFeatureL;IDotDensityRenderer pDotDensityRenderer;IDotDensityFillSymbol pDotDensityFillS;IRendererFields pRendererFields;ISymbolArray pSymbolArray;ISimpleMarkerSymbol pSimpleMarkerS;string strPopField = "POP1990";IMap pMap = ;pGeoFeatureL = (IGeoFeatureLayer)(0);pDotDensityRenderer = new DotDensityRendererClass();pRendererFields = (IRendererFields)pDotDensityRenderer;//添加点密度着色的字段名(strPopField, strPopField);pDotDensityFillS = new DotDensityFillSymbolClass();//设置着色符号的大小和颜色= 4;IRgbColor color = new RgbColorClass();= 0;= 0;= 0;= color;//设置着色符号的背景颜色= 239;= 228;= 190;= color;pSymbolArray = (ISymbolArray)pDotDensityFillS;//设置点符号样式pSimpleMarkerS = new SimpleMarkerSymbolClass();= ;= 4;= 128;= 128;= 255;= color;((ISymbol)pSimpleMarkerS);= pDotDensityFillS;//设置一个点代表的值= 200000;//创建图例();= (IFeatureRenderer)pDotDensityRenderer;null, null);}着色的效果如下图所示:图11根据POP1990字段的点密度着色图效果1.5小结地图专题图制作是GIS中数据显示和分析的重要环节,涉及到的对象和接口也比较多,上面实例只是简单的实现了五种专题图的显示。