ArcEngine唯一值渲染UniqueValueRender图层

本文介绍了一种基于图层信息实现地图图元渲染的技术方案。通过查询图层对应的图元信息表并根据图元半径设置线样式,最终实现地图图层的定制化渲染。

地图属性表中只有一列编号FTRID,其相关的其他信息保存在数据库中,根据编号关联

渲染图元时,根据图元的半径绘制其样式,可以直接查询图层对应的图元信息表

遍历此表,根据每个图元的半径,设置其线样式,然后保存到IUniqueValueRenderer对象中,

最后,将图层的Render属性设置为此Render对象即可。

/// <summary> /// 渲染图层 /// </summary> /// <param name="lyr">图层对象</param> /// <param name="lyrDatasetName">图层原始名称</param> private IUniqueValueRenderer RenderLayerFeature(string lyrDatasetName)//渲染图层 { IUniqueValueRenderer ptmpUniqueValueRenderer = new UniqueValueRendererClass(); ptmpUniqueValueRenderer.FieldCount = 1; ptmpUniqueValueRenderer.set_Field(0, "FTRID"); DataTable dtLyrFtrsSection = new DataTable();//查询图层的所有管段 dtLyrFtrsSection =QueryPipeSectionByLyrName(lyrDatasetName) foreach (DataRow dr in dtLyrFtrsSection.Rows) { string ftrID = dr["FTRID"]ToString(); double pipeCalibre = Convert.ToDouble(dr["PIPE_CALIBRE"]); ptmpUniqueValueRenderer.AddValue(ftrID, "FTRID", GetLineSymbolByCalibre(pipeCalibre) as ISymbol); } } return ptmpUniqueValueRenderer;

调用的时候使用如下设置:

(pipeLayer as IGeoFeatureLayer).Renderer = RenderLayerFeature(lyrDatasetName) as IFeatureRenderer;//渲染图层; this.mapCtrl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值