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);

转载自:https://blog.csdn.net/NickWar/article/details/83521271

You may also like...

退出移动版