1. 功能简介

图层的唯一值渲染即是根据矢量图层的某一个数值字段的属性值,按照值的不同大小设置不同的显示符号。属性数值相等的所有要素归为同一种类,即同一符号。

2. 功能实现说明

2.1. 实现思路及原理说明

第一步

实例化唯一值渲染对象

第二步

设置唯一值渲染字段

第三步

设置是否使用默认渲染符号

第四步

针对每一个唯一值设置对应符号及标签

第五步

矢量渲染器接口转换

第六步

矢量图层渲染赋值

2.2. 核心接口与方法

接口/类

方法/属性

说明

Carto. IFeatureUniqueValueRender

SetFields

设置渲染字段

GetSymbolMap

获得SymbolMap

SetSymbol

设置符号

SetLabel

设置备注

SetUseDefaultSymbol

设置默认符号

DefaultSymbol属性

符号

2.3. 示例代码

项目路径

百度云盘地址下/PIE示例程序/07图层渲染/03.矢量唯一值渲染

数据路径

百度云盘地址下/PIE示例数据/矢量数据/Shape/省级行政区.shp

视频路径

百度云盘地址下/PIE视频教程/07图层渲染/03.矢量唯一值渲染.avi

示例代码

 /// <summary>
/// 矢量唯一值渲染
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void toolStripButton_FUnique_Click(object sender, EventArgs e)
{
//当前图层
if (mapControlMain.ActiveView.CurrentLayer == null) return;
//获取矢量图层
IFeatureLayer featureLayer = mapControlMain.ActiveView.CurrentLayer as IFeatureLayer;
if (featureLayer == null) return; //渲染代码
string fieldName = "NAME";//"ADCODE99";//获取唯一值的字段名称,根据实际需要进行修改
int filedIndex = featureLayer.FeatureClass.GetFields().GetFieldIndex(fieldName);//获取字段索引
if (filedIndex == -) return; //创建FeatureUniqueValueRender
IFeatureUniqueValueRender featureUniqueValueRender = new FeatureUniqueValueRender(); //设置渲染值段
IList<String> listFeilds = new List<String>() { fieldName };
featureUniqueValueRender.SetFields(listFeilds); //遍历矢量要素图层,读取每一个要素值
IFeatureCursor cursor = featureLayer.FeatureClass.Search(null);
IFeature feature = cursor.NextFeature();
Random rd = new Random();
while (feature != null)
{
int r, g, b;
r = (int)(rd.Next(, ));
g = (int)(rd.Next(, ));
b = (int)(rd.Next(, )); //获取字段值
string value = feature.GetValue(filedIndex).ToString();
if (!featureUniqueValueRender.GetSymbolMap().ContainsKey(value))
{
//初始化值对应的符号;本示例为面图层,生成FillSymbol
IFillSymbol fillSymbol = new SimpleFillSymbol();
fillSymbol.Color = Color.FromArgb(r, g, b); featureUniqueValueRender.SetSymbol(value, fillSymbol as ISymbol);
featureUniqueValueRender.SetLabel(value, value);
}
feature = cursor.NextFeature(); }
//*********设置默认符号,必要代码**********
IFillSymbol defaultSymbol = new SimpleFillSymbol();
defaultSymbol.Color = Color.AliceBlue;
featureUniqueValueRender.SetUseDefaultSymbol(true);
featureUniqueValueRender.DefaultSymbol = (defaultSymbol as ISymbol);
featureUniqueValueRender.DefaultLabel = ""; (cursor as IDisposable).Dispose();//释放游标
//设置featurerender
IFeatureRender featureRender = featureUniqueValueRender as IFeatureRender;
featureLayer.Render = featureRender; //视图刷新
mapControlMain.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
}

2.4. 示例截图

PIE SDK矢量唯一值渲染的更多相关文章

  1. PIE SDK栅格数据唯一值渲染

    1. 功能简介 栅格数据唯一值渲染,是以像元为单位,不同的像元值设置不同的颜色,从而达到唯一值显示的效果. 2. 功能实现说明 2.1. 实现思路及原理说明 第一步 实例化唯一值渲染对象 第二步 初始 ...

  2. PIE SDK矢量自定义渲染

    1. 功能简介 PIE SDK中关于矢量渲染提供了多种方案,包括简单渲染.分级渲染.唯一值渲染,这几种渲染方式具有一定的通用性,可以满足用户绝大多数的需求. 当面对复杂的业务,当前渲染方案无法满足用户 ...

  3. ArcGIS api for javascript——渲染-使用唯一值渲染

    描述 本例使用唯一值渲染器来作为美国的符号.每个州有一个字符串属性"SUB_REGION"表示它的国家的地区.UniqueValueRenderer.addValue()方法被用来 ...

  4. PIE SDK矢量分级渲染

    1. 功能简介 分级渲染是矢量的一种数据表达方式.通过选取一个字段,并根据实际需要对字段的数据进行分级,并对每一级设置不同的符号,已达到区分显示的效果. 2. 功能实现说明 2.1. 实现思路及原理说 ...

  5. PIE SDK矢量透明度、标注控制

    1. 功能简介 透明度和标注是矢量图层的相关属性:图层透明值是0-100间的整数,标注是显示在地图上的文字信息,它是出图中不可或缺的重要元素.标注的样式丰富,并且放置位置灵活. 2. 功能实现说明 2 ...

  6. PIE SDK矢量数据项查看

    1. 功能简介 矢量数据由大量要素信息构成,矢量数据项查看可以看到数据的属性表,下面就基于PIE SDK,介绍矢量数据项查看功能的实现. 2. 功能实现说明 2.1. 实现思路及原理说明 第一步 加载 ...

  7. PIE SDK矢量栅格化算法

    1.算法功能简介 矢量栅格化,由矢量数据向栅格数据的转换一般比较方便.对于点.线目标,由其所在的栅格行.列数表示,对于面状目标,则需判定落人该面积内的像元.通常栅格(像元)尺寸均大于原来坐标表示的分辨 ...

  8. PIE SDK矢量点生成等值线、面

    1.算法功能简介 等值线图能直观地展示数据的变化趋势,是众多领域展示成果的重要图建之一,被广泛应用于石油勘探.矿物开采.气象预报等众多领域.等值线的绘制是指从大量采样数据中提取出具有相同值的点的信息, ...

  9. PIE SDK Alpha通道数据渲染

    1.  功能简介 在计算机图形学中,一个RGB颜色模型的真彩图形,用由红.绿.蓝三个色彩信息通道合成的,每个通道用了8位色彩深度,共计24位,包含了所有彩色信息.为实现图形的透明效果,采取在图形文件的 ...

随机推荐

  1. C++ 虚基类 派生与继承

    在学习设计模式时我就有一个疑问,关联和继承除了用法上的区别,好像在内存上并没有什么区别,继承也是父类作为了子类的元素(内存上),关联也是这样.而且关联好像更占内存一些.这就是设计模式里问题了“依赖倒转 ...

  2. ORCHARD学习教程-安装

    安装说明:测试对象为正式版1.8 安装方法: 使用Microsoft Web Platform Installer 利用Microsoft WebMatrix 来安装 Working with Orc ...

  3. python 爬虫proxy,BeautifulSoup+requests+mysql 爬取样例

    实现思路: 由于反扒机制,所以需要做代理切换,去爬取,内容通过BeautifulSoup去解析,最后入mysql库 1.在西刺免费代理网获取代理ip,并自我检测是否可用 2.根据获取的可用代理ip去发 ...

  4. [.net 多线程]Monitor

    Monitor 类通过向单个线程授予对象锁来控制对对象的访问.对象锁提供限制访问代码块(通常称为临界区)的能力.当一个线程拥有对象的锁时,其他任何线程都不能获取该锁.还可以使用 Monitor 来确保 ...

  5. 仓储(Repository)和工作单元模式(UnitOfWork)

    仓储和工作单元模式 仓储模式 为什么要用仓储模式 通常不建议在业务逻辑层直接访问数据库.因为这样可能会导致如下结果: 重复的代码 编程错误的可能性更高 业务数据的弱类型 更难集中处理数据,比如缓存 无 ...

  6. android android studio

     android studio 一.安装及步骤: Android Studio安装: java jdk安装: jdk环境变量配置: 二.遇到的问题: 1.缺少jvm或java jdk路径不对,请指定正 ...

  7. mysql 按照姓氏排序

    1.如果是gbk存储 order by name asc 2.非GBK order by convert(name using gbk) asc

  8. Glib之GObject宏介绍

    G_DEFINE_TYPE定义一个静态类型 /** * G_DEFINE_TYPE(`G_DEFINE_TYPE_WITH_CODE`比`G_DEFINE_TYPE`就是多了一个自定义代码参数_C_) ...

  9. TFS解锁命令

    tf undo  /server:http://193.100.100.29:8080/tfs/EGSS  /workspace:HY-PC;hy   $/CTCS/TSAGS_TEAM/TestHY ...

  10. socket长连接 GCDAsyncSocket

    基础: http://www.2cto.com/kf/201609/546974.html 转自: http://blog.csdn.net/u013282507/article/details/52 ...