博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PIE SDK矢量自定义渲染
阅读量:6179 次
发布时间:2019-06-21

本文共 3338 字,大约阅读时间需要 11 分钟。

 

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

示例代码

1 方法(一) 2     //当前选择图层 3     if (mapControlMain.ActiveView.CurrentLayer == null) return; 4  //是否为矢量图层 5     IFeatureLayer featureLayer = mapControlMain.ActiveView.CurrentLayer as IFeatureLayer; 6     if (featureLayer == null)   return; 7  //实例化自定义渲染对象 8     DefineRender render = new DefineRender(); 9     featureLayer.Render = render as IFeatureRender;10     //视图刷新11    mapControlMain.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);12 13 方法(二)14 /// 15 /// 自定义渲染类16 /// 继承至CustomerFeatureRender类,重写GetSymbolByFeature方法即可。17 /// 18 public class DefineRender : PIE.Carto.CustomerFeatureRender19 {20     /// 21     /// 构造函数22     /// 23     public DefineRender()24     {25   }26     public override ISymbol GetSymbolByFeature(IFeature feature)27     {28         //根据点线面,返回不同的符号,本示例生成面状符号29         //主要是根据不同的值,进行逻辑编写30         GeometryType pGeometry = feature.Geometry.GetGeometryType();31         if (pGeometry == GeometryType.GeometryPoint)32         {33             //点符号34             IMarkerSymbol markSymbol = new SimpleMarkerSymbol();35             return (markSymbol as ISymbol);36         }37         else if (pGeometry == GeometryType.GeometryPolyline)38         {39             //线符号40             ILineSymbol lineSymbol = new SimpleLineSymbol();41             lineSymbol.Width = 2;42             lineSymbol.Color = Color.AliceBlue;43             return (lineSymbol as ISymbol);44         }45         else if (pGeometry == GeometryType.GeometryPolygon||pGeometry==GeometryType.GeometryMultiPolygon)46         {47             object value = feature.GetValue("HighSchool");//取值字段可根据实际数据进行修改48             //面符号49 50             IFillSymbol fillSymbol = new SimpleFillSymbol();51 52             ILineSymbol lineSymbol = new SimpleLineSymbol();53             lineSymbol.Width = 2;54             lineSymbol.Color = Color.AliceBlue;55 56             fillSymbol.OutlineSymbol = lineSymbol;57             fillSymbol.Color = Color.CornflowerBlue;58 59             string ssStr = value.ToString();60              int valueTemp = Convert.ToInt32(ssStr);61             //篇幅有限,只对一些值进行符号赋值,其余的采用默认符号62             if (valueTemp<5000)63             {64                 fillSymbol.Color = Color.Pink;65             }66             else if (valueTemp<10000)67             {68                 fillSymbol.Color = Color.RosyBrown;69             }70             else if(valueTemp<15000)71             {72                 fillSymbol.Color = Color.Blue;73             }74             else75             {76                 fillSymbol.Color = Color.AliceBlue;77             }78             return (fillSymbol as ISymbol);79         }80         else81         {82             return null;83         }84     }85 }
View Code

2.4.  示例截图

 

转载于:https://www.cnblogs.com/PIESat/p/10167265.html

你可能感兴趣的文章
iOS JSON、XML解析技巧
查看>>
Android下InputStream发生网络中断时的解决办法的代码
查看>>
8 jQuery学习笔记第八节 Jq的效果之自定义动画
查看>>
8月不支持 64 位,App 将无法上架 Google Play!需要怎么做?
查看>>
Vs - 基于 d3.js 和 vue.js 的数据可视化
查看>>
优雅地使用loading
查看>>
Node8.0 之 Napi 探秘
查看>>
TypeScript入坑
查看>>
(三)spring cloud微服务分布式云架构-服务网关zuul初级篇
查看>>
Spring Cloud--Honghu Cloud分布式微服务云系统—System系统管理
查看>>
Linux服务器配置——SAMBA
查看>>
我的WP7应用
查看>>
js打开连接 _无需整理
查看>>
我的友情链接
查看>>
C语言结合windowsApi遍历文件
查看>>
linux 系统无法启动的基本解决方法
查看>>
Yii框架学习笔记 [PHP]
查看>>
饿了么MySQL异地多活的数据双向复制经验谈
查看>>
MySQL的btree索引和hash索引的区别
查看>>
计算机基础
查看>>