PIE SDK栅格分级渲染

 

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 }
View Code

2.4. 示例截图

 

 

posted @ 2018-12-24 10:55  PIESAT  阅读(1321)  评论(0编辑  收藏  举报