1. 功能简介

PIE SDK中关于矢量渲染提供了多种方案,包括简单渲染、分级渲染、唯一值渲染,这几种渲染方式具有一定的通用性,可以满足用户绝大多数的需求。

当面对复杂的业务,当前渲染方案无法满足用户需求时,可选择进行自定义渲染方案的编写,针对不同的业务编写自定义的逻辑和行业特定的符号。

目前PIE SDK自定义渲染只支持矢量数据。

2. 功能实现说明

2.1. 实现思路及原理说明

第一步

新建自定义渲染方案类,继承至PIE.Carto.CustomerFeatureRender

第二步

重写CustomerFeatureRender类中的GetSymbolByFeature()方法

第三步

实例化自定义渲染类对象

第四步

矢量渲染器接口转换

第五步

矢量图层渲染赋值

2.2. 核心接口与方法

接口/类

方法

说明

Carto.CustomerFeatureRender

GetSymbolByFeature()

根据要素获得对应渲染符号

2.3. 示例代码

项目路径

百度云盘地址下/PIE示例程序/07图层渲染/04.矢量自定义渲染

数据路径

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

视频路径

百度云盘地址下/PIE视频教程/07图层渲染/04.矢量自定义渲染.avi

示例代码

 方法(一)
//当前选择图层
if (mapControlMain.ActiveView.CurrentLayer == null) return;
//是否为矢量图层
IFeatureLayer featureLayer = mapControlMain.ActiveView.CurrentLayer as IFeatureLayer;
if (featureLayer == null) return;
//实例化自定义渲染对象
DefineRender render = new DefineRender();
featureLayer.Render = render as IFeatureRender;
//视图刷新
mapControlMain.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll); 方法(二)
/// <summary>
/// 自定义渲染类
/// 继承至CustomerFeatureRender类,重写GetSymbolByFeature方法即可。
/// </summary>
public class DefineRender : PIE.Carto.CustomerFeatureRender
{
/// <summary>
/// 构造函数
/// </summary>
public DefineRender()
{
}
public override ISymbol GetSymbolByFeature(IFeature feature)
{
//根据点线面,返回不同的符号,本示例生成面状符号
//主要是根据不同的值,进行逻辑编写
GeometryType pGeometry = feature.Geometry.GetGeometryType();
if (pGeometry == GeometryType.GeometryPoint)
{
//点符号
IMarkerSymbol markSymbol = new SimpleMarkerSymbol();
return (markSymbol as ISymbol);
}
else if (pGeometry == GeometryType.GeometryPolyline)
{
//线符号
ILineSymbol lineSymbol = new SimpleLineSymbol();
lineSymbol.Width = ;
lineSymbol.Color = Color.AliceBlue;
return (lineSymbol as ISymbol);
}
else if (pGeometry == GeometryType.GeometryPolygon||pGeometry==GeometryType.GeometryMultiPolygon)
{
object value = feature.GetValue("HighSchool");//取值字段可根据实际数据进行修改
//面符号 IFillSymbol fillSymbol = new SimpleFillSymbol(); ILineSymbol lineSymbol = new SimpleLineSymbol();
lineSymbol.Width = ;
lineSymbol.Color = Color.AliceBlue; fillSymbol.OutlineSymbol = lineSymbol;
fillSymbol.Color = Color.CornflowerBlue; string ssStr = value.ToString();
int valueTemp = Convert.ToInt32(ssStr);
//篇幅有限,只对一些值进行符号赋值,其余的采用默认符号
if (valueTemp<)
{
fillSymbol.Color = Color.Pink;
}
else if (valueTemp<)
{
fillSymbol.Color = Color.RosyBrown;
}
else if(valueTemp<)
{
fillSymbol.Color = Color.Blue;
}
else
{
fillSymbol.Color = Color.AliceBlue;
}
return (fillSymbol as ISymbol);
}
else
{
return null;
}
}
}

2.4.  示例截图

PIE SDK矢量自定义渲染的更多相关文章

  1. PIE SDK矢量分级渲染

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

  2. PIE SDK栅格RGB渲染

    1. 功能简介 RGB色彩模式是一种颜色标准,是通过对红(R).绿(G).蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红.绿.蓝三个通道的颜色,这个标准几乎包 ...

  3. PIE SDK矢量唯一值渲染

    1. 功能简介 图层的唯一值渲染即是根据矢量图层的某一个数值字段的属性值,按照值的不同大小设置不同的显示符号.属性数值相等的所有要素归为同一种类,即同一符号. 2. 功能实现说明 2.1. 实现思路及 ...

  4. PIE SDK矢量数据简单渲染

    1. 功能简介 PIE SDK对数据的符号化分为矢量数据渲染和栅格数据渲染两大类. 目前PIE SDK中针对矢量数据渲染包括简单渲染.唯一值渲染.分级渲染.自定义渲染:针对栅格数据渲染包括拉伸渲染.R ...

  5. PIE SDK栅格分级渲染

    1.  功能简介 栅格数据分级渲染是根据不同的分级规则,对像元值进行等级划分:并通过对每一级设置不同的显示符号和标注信息,从而达到分级显示的效果. 2.功能实现说明 2.1. 实现思路及原理说明 第一 ...

  6. PIE SDK地图图层渲染方案管理

    1. 功能简介 在数据种类较多.渲染规则复杂的情况下,逐个设置其渲染方式是一件繁琐的工作.PIE SDK提供了一种省力省心的办法, PIE SDK提供栅格和矢量数据渲染方案的打开与保存.能够将配色方案 ...

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

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

  8. PIE SDK栅格图层渲染变化事件监听

    1. 功能简介 通过PIE SDK加载图层后,会默认的赋值给数据一个渲染.当用户重新给数据赋值Render或改变数据显示效果时,会触发渲染变化事件. 所谓的事件监听是在事件触发时,将执行用户指定的函数 ...

  9. PIE SDK矢量数据项查看

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

随机推荐

  1. hdu1269 Tarjan强连通分量 模板(转)

    #include<stdio.h> #include<iostream> #include<vector> using namespace std; ; vecto ...

  2. ASP.NET多页面传递数据,附框架源码

    很多时候我们需要把数据传递到多个页面,比如表单提交可以指定提交数据到某个页面,那么关闭某个页面怎么把数据传递到上一个页面或者它的父页面. 在这里我附一段源码用于当前页面关闭指定某个页面刷新. 子页面方 ...

  3. sqlserver中 多条数据合并成一条数据 (stuff 与 for xml path 连用)

    SQL 列转行,即多行合并成一条   需求:按照分组,将多条记录内容合并成一条,效果如下: 数据库示例: CREATE TABLE [t2]([NID] [bigint] NULL,[district ...

  4. Linux Linux下安装wine

    Linux下安装wine Linux下安装wine可以从源码编译安装,但一般都觉得麻烦,所以尽量利用yum进行安装,解决很多包的依赖关系. 首先安装一个epel rpm -ivh http://dl. ...

  5. [日常]无线鼠标滚动缩放EXCEL表时,缩放比例过大问题

    这也是一个奇葩问题,解决方法: 把USB接收器拔掉重新插上,效果拔群

  6. 获取oracle 库所有表名

    (mybatis多参)

  7. Mysql数据库自动定时备份软件推荐--MySqlBackupFTP(免费,亲测可用,附使用图示)

    MySqlBackupFTP是一款Mysql数据库自动定时备份软件,免费版本就基本上可以满足我们的需求,不需要什么破解版,可直接官网下载安装使用. 先看结果(日志): 软件界面: 可以设定计划任务,每 ...

  8. kali linux之服务扫描

    识别开放端口上运行的应用.识别目标操作系统,提高攻击效率 banner捕获(软件开发商,软件名称,服务类型,版本号-----直接发现已知的漏洞和弱点) 服务识别 操作系统识别 snmp分析(简单网络管 ...

  9. swoole安装报错详解 mysqlnd_find_charset_nr in Unknow

    今天安装 swoole扩展时候,最后一步报错如下: PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/m ...

  10. java并发包&线程池原理分析&锁的深度化

          java并发包&线程池原理分析&锁的深度化 并发包 同步容器类 Vector与ArrayList区别 1.ArrayList是最常用的List实现类,内部是通过数组实现的, ...