ArcGIS Engine 使用制图表达(Representation)保存图层渲染信息(转载)

转自:http://www.lugang.info/2012/11/arcgis-engine-representation.html

ArcGIS Engine 使用制图表达(Representation)保存图层渲染信息

在对图层进行符号化渲染后,可将图层符号对象转换成制图表达以保存图层渲染信息,在ArcMap中对应着图层树右键”Convert Symbology to Representation”功能。在上一篇博文《ArcGIS图层渲染信息持久化方法》中对采用制图表达存储图层渲染信息的方法作过简单总结,本文将讨论如何使用ArcGIS Object对此功能进行实现。

基本思路

在ArcGIS中,图层的渲染方法由图层的Renderer属性控制,该属性是一个IFeatureRenderer接口对象,实现此接口的渲染类如UiquerValueRendererClass、ClassBreaksRendererClass等都可以赋值给Renderer属性,改变图层的渲染方式。在这些渲染类对象中存储了图层的渲染符号、渲染的属性值等,但是它们都只是存储在内存中,图层关闭后随之消亡。

制图表达渲染类RepresentationRendererClass也实现IFeatureRenderer接口,它将图层的渲染规则存储在图层的属性字段中,渲染规则不会随图层的消亡而消失且一个图层可以定义多种制图表达。

所以只需将图层的渲染方式生成制图表达规则,并将规则写入属性表,转换成制图表达渲染类赋值给图层,即可实现图层的制图表达渲染。为了方便管理存储在图层中的制图表达信息,只考虑在一个图层中储存一个制图表达流程图如下。

关键代码
转换方法总体思路

转换到渲染规则,生成制表表达类,属性赋值,生成制图表达渲染对象

写图层制图表达图层属性

删除制图表达方法尝试了很多,最后使用AO中的GP方法实现

效果图

唯一值渲染转制图表达效果

问题

1.制图表达不支持图表类符号渲染,所以不能对饼图、直方图符号渲染的图层进行制图表达转换。

2.在创建RepresentationClass时经常报“The required XML element was not found.”,在ArcMap中也有此种情况,原因未知,估计可能数据有关。

3.只能对GeoDatabase数据与SDE数据创建制图表达

This entry was tagged GIS. Bookmark the permalink.

posted @ 2016-05-10 19:08  焦涛  阅读(1803)  评论(0)    收藏  举报