1. 功能简介
栅格数据分级渲染是根据不同的分级规则,对像元值进行等级划分;并通过对每一级设置不同的显示符号和标注信息,从而达到分级显示的效果。
2.功能实现说明
2.1. 实现思路及原理说明
第一步 | 实例化分级渲染对象 |
第二步 | 初始化唯一值对象,将各级值加入到唯一值对象中 |
第三步 | 初始化Color列表,对每一级设置对应颜色 |
第四步 | 分级渲染对象属性赋值 |
第五步 | 栅格渲染接口转换 |
第六步 | 栅格图层渲染赋值 |
2.2. 核心接口与方法
接口/类 | 方法 | 说明 |
DataSource.DatasetFactory | OpenFeatureDataset | 打开矢量数据集 |
Carto.LayerFactory | CreateDefaultFeatureLayer | 创建矢量图层 |
2.3.示例代码
项目路径 | 百度云盘地址下/PIE示例程序/07图层渲染/08.栅格分级渲染 |
数据路径 | 百度云盘地址下/PIE示例数据/栅格数据/ 01.GF1/GF1_PMS1_E116.5_N39.4_20131127_L1A0000117600-MSS1.tif |
视频路径 | 百度云盘地址下/PIE视频教程/07图层渲染/08.栅格分级渲染.avi |
示例代码 | |
![]() ![]() 1 /// <summary> 2 /// 栅格分级渲染 3 /// </summary> 4 /// <param name="sender"></param> 5 /// <param name="e"></param> 6 private void toolStripButton_RasterClassifyRender_Click(object sender, EventArgs e) 7 { 8 if (mapControlMain.ActiveView.CurrentLayer == null) return; 9 IRasterLayer rasterLayer = mapControlMain.ActiveView.CurrentLayer as IRasterLayer; 10 if (rasterLayer == null) 11 return; 12 //1 设置分级阈值,根据实际情况进行添加 13 IUniqueValues uniqueValues = new UniqueValues(); 14 uniqueValues.Clear(); 15 uniqueValues.Add(181, 1); 16 uniqueValues.Add(319, 1); 17 uniqueValues.Add(457, 1); 18 uniqueValues.Add(595, 1); 19 uniqueValues.Add(733, 1); 20 uniqueValues.Add(871, 1); 21 22 //2 设置色带 23 IList<Color> colors = new List<Color>(); 24 colors.Add(Color.FromArgb(200, 210, 30)); 25 colors.Add(Color.FromArgb(20, 150, 30)); 26 colors.Add(Color.FromArgb(50, 210, 160)); 27 colors.Add(Color.FromArgb(140, 110, 25)); 28 colors.Add(Color.FromArgb(100, 20, 10)); 29 colors.Add(Color.FromArgb(84, 110, 240)); 30 31 //3 RasterClassifyColorRampRender分级渲染 32 IRasterClassifyColorRampRender rClassifyColorRampRender = new RasterClassifyColorRampRender(); 33 rClassifyColorRampRender.ClassColors = colors; 34 35 rClassifyColorRampRender.SetBandIndex(0); 36 rClassifyColorRampRender.UniqueValues = uniqueValues; 37 38 //4 设置备注信息(可以自定义备注信息) 39 IList<string> listLabel = new List<string>(); 40 int count = uniqueValues.GetCount(); 41 string beginLabel = "Min"; 42 string lastLabel = ""; 43 for (int i = 0; i < count; i++) 44 { 45 if (i - 1 >= 0) 46 { 47 beginLabel = uniqueValues.GetUniqueValue(i - 1).ToString(); 48 } 49 lastLabel = uniqueValues.GetUniqueValue(i).ToString(); 50 string labelInfo = string.Format("{0}-{1}", beginLabel,lastLabel); 51 listLabel.Add(labelInfo); 52 } 53 rClassifyColorRampRender.Labels = listLabel; 54 55 //设置rasterRender 56 IRasterRender rasterRender = rClassifyColorRampRender as IRasterRender; 57 rasterLayer.Render = rasterRender; 58 mapControlMain.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll); 59 } |
2.4. 示例截图