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