基于ArcGIS Engine专题图渲染设计与实现

时间:2022-10-08 11:55:57

基于ArcGIS Engine专题图渲染设计与实现

摘要:专题图渲染增强和优化了专题图的表现内容,是专题图制作中的一个关键环节。该文在基于arcgis engine组件库的基础上,设计并实现了专题渲染系统。该系统具有操作简单灵活等特点,能够改善和优化了地图制图过程, 提高了制图效率和现有数据利用率。

关键词:ArcGIS Engine;专题图;渲染

中图分类号:TP311文献标识码:A文章编号:1009-3044(2011)30-7501-02

1 ArcGIS Engine 简介

ArcGIS Engine是ESRI公司GIS软件ArcGIS 9.0下新增的基于ArcObject的一个面向开发的新产品。该产品基于ArcObject构建, 并提供跨平台的C++组件技术框架用于构建ArcGIS。通过ArcGIS Engine, 用户可以自由地搭建及配置ArcGIS解决方案, 而不需要在同一机器上安装ArcGIS的桌面应用环境。ArcGIS Engine支持全部标准开发环境, 包括.NET, 组件对象模型(COM),Java和C++以及所有主流操作系统(Windows,Unix,Linux)。

ArcGIS Engine提供的专题图有: 单值图、分级分类图、唯一指分类图、点属性图、密度图、饼状图、柱状图、叠加柱状图等。基于ArcGIS Engine实现专题图的关键是对图层进行符号化。符号化功能将图层的内部渲染实现及算法进行了很好的包装, 用户制作或显示专题图时只需选择欲进行符号化的图层、渲染方式、渲染色带、渲染字段, 并预先加载要渲染的图层。

2 专题图渲染模块的设计

一般用户要求系统能以多种专题图实现不同专题信息和在不同区域的可视化对比,同时要求符号化模块交互界面具有较强的灵活性、一定的编辑性,能对专题图中的任何符号进行替换或相关属性信息进行修改、能对不同符号的分布数值区域进行修改。ArcGIS提供了多种方法来制作不同类型的专题图,这些专题图是可以依据要素的一个或多个属性的不同而设置不同类型的符号,从而达到区分不同类型要素的目的。在实际项目中用户也经常使用要素着色的功能。

使用不同的着色对象时,用户需要确定是哪个图层需要被着色,而着色对象只是要素图层的一个属性而已,程序员可以通过IGeoFeatureLayer.Renderer属性获得一个图层的着色对象。下面就以唯一值渲染为例子阐述其实现过程。

3 专题图渲染模块的实现

唯一值渲染需要使用UniqueValueRenderer类, 根据所选唯一值字段对整个图层不同要素填充不同颜色。首先实例化接口IGeoFeatureLayer, 通过类UniqueValueRenderer 实现IUniqueValueRenderer 接口的对象实例,通过对IUniqueValueRenderer的属性进行赋值,最后赋值给IGeoFeatureLayer.Render 属性。关键代码如下:

public void UniqueValueRenderer()

{//定义单值图渲染组件

IUniqueValueRenderer pUniqueValueRenderer = new UniqueValueRendererClass();

//设置渲染字段对象

pUniqueValueRenderer.FieldCount = 1;

pUniqueValueRenderer.set_Field(0, strFieldName);

//创建填充符号

ISimpleFillSymbol pSimpleFillSymbol = new SimpleFillSymbolClass();

pUniqueValueRenderer.DefaultSymbol = (ISymbol)pSimpleFillSymbol;

pUniqueValueRenderer.UseDefaultSymbol = false;

ITable pTable = (ITable)pGeoFeatLayer;

int indexOfFID = pTable.FindField(strFieldName);

//为每个值设置符号

IFeature pFeat = pFeatCursor.NextFeature();

IClone pSourceClone = (IClone)pSimpleFillSymbol;

ISimpleFillSymbol pSymbol = (ISimpleFillSymbol)pSourceClone.Clone();

string pFeatValue = pFeat.get_Value(indexOfFID).ToString();

pUniqueValueRenderer.AddValue(pFeatValue, strFieldName, (ISymbol)pSymbol);

//为每个符号设置颜色

ISimpleFillSymbol pNextSymbol = (ISimpleFillSymbol)pUniqueValueRenderer.get_Symbol(xv);

pNextSymbol.Color = pEnumColors.Next();

pUniqueValueRenderer.set_Symbol(xv, (ISymbol)pNextSymbol);

}

4 运行结果

在运行界面的地图表现下点击唯一值点渲染,选择唯一值分类所对应的字段,设置起始和终止颜色等相关数据,点击“确定”按钮,运行结果(图2)所示。

5 结束语

专题图渲染是GIS领域中的重要组成部分,直接影响着制图的效果。实践证明,基于ArcGIS Engine组件开发的专题图渲染系统具有较高的灵活性和可操作性,能够较好实现解决专题图渲染。本系统对GIS系统设计和实现具有一定的参考价值。

参考文献:

[1] 吴秀芹.ArcGIS9 地理信息系统应用与实践[M].北京:清华大学出版社,2007.

[2] 朱凌.ArcGIS 9的特点及其ArcObject Control版的使用体会[J].北京测绘,2004.

[3] 陈大鹏.基于ArcGIS Engine的专题地图制作[J].黑龙江农业工程职业学院学报,2008.

[4] 聂小波,吴北平,何保国.基于ArcGIS Engine的专题图模块的设计与实现地理空间信息[J].地理空间信息,2006,4(1).

上一篇:《软件工程》课程实践教学改革探析 下一篇:基于Web日志挖掘的策略研究