1. 功能简介
分级渲染是矢量的一种数据表达方式。通过选取一个字段,并根据实际需要对字段的数据进行分级,并对每一级设置不同的符号,已达到区分显示的效果。
2. 功能实现说明
2.1. 实现思路及原理说明
第一步 | 实例化矢量分级渲染对象 |
第二步 | 设置分级渲染的字段 |
第三步 | 设置分级数 |
第四步 | 设置不同分级的值及对应的符号 |
第五步 | 矢量渲染器接口转换 |
第六步 | 矢量图层渲染赋值 |
2.2. 核心接口与方法
接口/类 | 方法 | 说明 |
Carto. IFeatureClassBreaksRender | Field | 分级字段 |
ClassCount | 分级数 |
SetBreak () | 设置分级对应数值 |
SetSymbol() | 设置不同级别对应的符号 |
2.3. 示例代码
项目路径 | 百度云盘地址下/PIE示例程序/07图层渲染/02.矢量分级渲染 |
数据路径 | 百度云盘地址下/PIE示例数据/矢量数据/Shape/省级行政区.shp |
视频路径 | 百度云盘地址下/PIE视频教程/07图层渲染/02.矢量分级渲染.avi |
示例代码 |
/// <summary>
/// 分级渲染方法
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void toolStripButton_Classify_Click(object sender, EventArgs e)
{
if (mapControlMain.ActiveView.CurrentLayer == null) return;
IFeatureLayer featureLayer = mapControlMain.ActiveView.CurrentLayer as IFeatureLayer;
if (featureLayer == null) return;
//1、分级字段,根据实际情况进行修改
string classifyField ="Total_Coll";
//创建FeatureClassBreaksRender,设置参数
IFeatureClassBreaksRender featureClassBreaksRender = new FeatureClassBreaksRender();
featureClassBreaksRender.Field = classifyField; //设置渲染字段
featureClassBreaksRender.ClassCount = ;//设置分级数
featureClassBreaksRender.SortClassesAscending = true;
//分级数、分级的值,根据实际情况自定义修改即可
//2、设置分级级别
featureClassBreaksRender.SetBreak(, );
featureClassBreaksRender.SetBreak(, );
featureClassBreaksRender.SetBreak(, );
//3、 定义简单填充符号
IFillSymbol fillSymbol0 = new SimpleFillSymbol();
fillSymbol0.Color = Color.FromArgb(, , );
IFillSymbol fillSymbol1 = new SimpleFillSymbol();
fillSymbol1.Color = Color.FromArgb(, , );
IFillSymbol fillSymbol2 = new SimpleFillSymbol();
fillSymbol2.Color = Color.FromArgb(, , );
//设置分级符号
featureClassBreaksRender.SetSymbol(, fillSymbol0);
featureClassBreaksRender.SetSymbol(, fillSymbol1);
featureClassBreaksRender.SetSymbol(, fillSymbol2);
//4、设置分级标签
featureClassBreaksRender.SetLabel(, "第一级");
featureClassBreaksRender.SetLabel(, "第二级");
featureClassBreaksRender.SetLabel(, "第三级");
//5、进行渲染并刷 新
featureLayer.Render = featureClassBreaksRender as IFeatureRender;
mapControlMain.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
} |
2.4. 示例截图