地图属性表中只有一列编号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);

ArcEngine唯一值渲染UniqueValueRender图层

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-08-31
  • 2022-12-23
  • 2021-05-29
  • 2022-12-23
  • 2022-12-23
  • 2021-10-12
猜你喜欢
  • 2022-01-26
  • 2021-09-28
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案