1. 功能简介

在数据种类较多、渲染规则复杂的情况下,逐个设置其渲染方式是一件繁琐的工作。PIE SDK提供了一种省力省心的办法,

PIE SDK提供栅格和矢量数据渲染方案的打开与保存。能够将配色方案存储为xml文件,并能通过读取xml文件,实例化出Render对象,这将简化同类数据的渲染配置工作,并减少开发人员的代码维护。

栅格数据渲染方案控制主要是在程序开发之前,根据数据分类组织对应的渲染方案,实现在程序中能够动态的加载显示方案文件(简而言之就是每一个渲染方案都有一个指定的渲染方案xml文件),对指定图层进行渲染的。如下图右侧的渲染方案展示,只需要选择指定的渲染方案当前图层的显示就会改变。

渲染方案

2. 功能实现说明

2.1.  实现思路及原理说明

渲染方案保存

第一步

选中要导出渲染方案的图层。

第二步

选择渲染方案存储的路径,调用Pie SDK导出渲染方案的方法即可

渲染方案打开

第一步

选择渲染方案文件和目标栅格图层

第二步

调用Pie生产Render的方法,赋值目标矢量或者栅格图层的Render属性

第三步

地图视图刷新

渲染方案控制

第一步

组织渲染方案文件进行存储。

第二步

程序中进行加载和界面显示

第三步

通过事件触发加载渲染方案方法。

第四步

地图视图刷新

2.2. 核心接口与方法

接口/类

方法

说明

渲染方案保存与打开

Carto.RenderFactory

ImportFromFile()

栅格通过渲染方案生成Render

ImportFromFile 1()

矢量通过渲染方案生成Render

ExportToFile

将渲染方案存为xml文件

渲染方案控制(栅格)

Carto.RenderFactory

ImportFromFile()

通过渲染方案生成Render

2.3. 示例代码

项目路径

百度云盘地址下/PIE示例程序/07图层渲染/13.地图图层渲染方案管理

数据路径

百度云盘地址下/PIE示例数据/栅格数据或者矢量数据

视频路径

百度云盘地址下/PIE视频教程/07图层渲染/13.地图图层渲染方案管理.avi

示例代码

      #region 矢量渲染方案模块
/// <summary>
///保存矢量渲染方案
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_SaveVecRender_Click(object sender, EventArgs e)
{
//1、获取保存方案数据
ILayer layer = mapControlMain.ActiveView.FocusMap.GetLayer();
if (layer.LayerType != LayerType.LayerTypeFeatureLayer) return;
IFeatureLayer featureLayer = layer as IFeatureLayer;
//2、设置保存路径
SaveFileDialog saveDialog = new SaveFileDialog();
saveDialog.Title = "保存显示方案";
saveDialog.Filter = "Xml文件(*.xml)|*.xml";
if (saveDialog.ShowDialog() != DialogResult.OK) return;
//3、执行保存方案
RenderFactory.ExportToFile(featureLayer.Render, saveDialog.FileName);
} /// <summary>
/// 打开矢量数据渲染方案
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void tbn_OpenVecRender_Click(object sender, EventArgs e)
{
//1、获取保存方案数据
ILayer layer = mapControlMain.ActiveView.FocusMap.GetLayer();
if (layer.LayerType != LayerType.LayerTypeFeatureLayer) return;
IFeatureLayer featureLayer = layer as IFeatureLayer;
//2、选择渲染的方案
OpenFileDialog openDialog = new OpenFileDialog();
openDialog.Title = "打开渲染方案";
openDialog.Filter = "渲染方案(*.xml)|*.xml";
if (openDialog.ShowDialog() != DialogResult.OK) return;
//3、执行渲染并刷新
featureLayer.Render = RenderFactory.ImportFromFile1(openDialog.FileName);
mapControlMain.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
}
#endregion #region 栅格渲染方案模块
/// <summary>
/// 保存栅格渲染方案
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_SaveRasterRender_Click(object sender, EventArgs e)
{
//1、获取保存方案数据
ILayer layer = mapControlMain.ActiveView.FocusMap.GetLayer();
if (layer.LayerType != LayerType.LayerTypeRasterLayer) return;
IRasterLayer rasterLayer = layer as IRasterLayer;
//2、设置保存路径
SaveFileDialog saveDialog = new SaveFileDialog();
saveDialog.Title = "保存显示方案";
saveDialog.Filter = "Xml文件(*.xml)|*.xml";
if (saveDialog.ShowDialog() != DialogResult.OK) return;
//3、执行保存方案
RenderFactory.ExportToFile(rasterLayer.Render, saveDialog.FileName);
} /// <summary>
/// 打开栅格渲染方案
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_OpenRasterRender_Click(object sender, EventArgs e)
{
//1、获取保存方案数据
ILayer layer = mapControlMain.ActiveView.FocusMap.GetLayer();
if (layer.LayerType != LayerType.LayerTypeRasterLayer) return;
IRasterLayer rasterLayer = layer as IRasterLayer;
//2、选择渲染的方案
OpenFileDialog openDialog = new OpenFileDialog();
openDialog.Title = "打开渲染方案";
openDialog.Filter = "渲染方案(*.xml)|*.xml";
if (openDialog.ShowDialog() != DialogResult.OK) return;
//3、执行渲染并刷新
rasterLayer.Render = RenderFactory.ImportFromFile(openDialog.FileName);
mapControlMain.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
} /// <summary>
/// 栅格渲染控制案例
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_RasterRenderControl_Click(object sender, EventArgs e)
{
ILayer layer = mapControlMain.ActiveView.FocusMap.GetLayer();
if (layer.LayerType != LayerType.LayerTypeRasterLayer) return;
IRasterLayer rasterLayer = layer as IRasterLayer;
FormDynamicRender FrmDialog = new FormDynamicRender(rasterLayer, mapControlMain.ActiveView);
FrmDialog.Owner = this;
FrmDialog.Show();
}
#endregion

2.4. 示例截图

PIE SDK地图图层渲染方案管理的更多相关文章

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

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

  2. PIE SDK地图图层控制

    1. 功能简介 地图图层控制就是图层的相关操作,如地图图层数据的添加.删除.移动和拖拽等功能. 2. 功能实现说明 2.1. 实现思路及原理说明 第一步 图层添加是调用AddLayer方法将图层添加到 ...

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

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

  4. PIE SDK矢量自定义渲染

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

  5. PIE SDK栅格拉伸渲染

    1. 功能简介 栅格数据拉伸渲染是对指定的波段进行图像拉伸,并设置拉伸之后的颜色带,根据像元值和颜色带进行数据渲染. 2. 功能实现说明 2.1. 实现思路及原理说明 第一步 实例化拉伸渲染对象示例 ...

  6. PIE SDK栅格RGB渲染

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

  7. PIE SDK矢量分级渲染

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

  8. PIE SDK栅格分级渲染

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

  9. PIE SDK地图范围设置和图层事件监听

    1. 功能简介 地图范围设置的监听就是通过IMapControlEvents接口对地图的视图范围更新或者地图的分辨率发生变化进行监听,然后做出相应的操作. 图层事件的监听就是通过IActiveView ...

随机推荐

  1. App常用性能测试工具清单

    APP的CPU,内存,耗电,流量测试工具 APP的CPU,内存,耗电,流量测试工具下载地址,后续文章会介绍如何使用Emmagee.itest.gt APP应用的CPU,内存,耗电,流量调查(可和同类产 ...

  2. Bitmap类、BitmapFactory及BitmapFactory类中的常用方法

    1.Bitmap 1.1非静态方法 public void recycle()——回收位图占用的内存空间,把位图标记为Dead public final boolean isRecycled() —— ...

  3. 使用Filter对POST和GET方式的请求参数的进行统一解码

    一.过滤器 二.自定义request类

  4. NSProcessInfo系统进程信息

    前言 NSProcessInfo 类中包含一些方法,允许你设置或检索正在运行的应用程序(即进程)的各种类型的信息. 1.获取系统进程信息 // 创建系统进程信息对象 NSProcessInfo *pr ...

  5. .net mvc 框架实现后台管理系统4-layedit使用

    做个简单的文章发布,使用了layui的layedit 效果: 在html页面添加: <textarea id="MyArticleContent" style="d ...

  6. Vue 使用 axios post请求后台数据时 404

    今天遇到Vue 使用 axios post请求后台数据时 404 使用postman 就能获取到 网上找了大半天 终于找到了解决方法,传送门:https://www.jianshu.com/p/b10 ...

  7. 关于NPOIExcel导出excel

    1.支持导出多个sheet文件 /// <summary> /// 导出到Excel并下载(html) /// </summary> /// <param name=&q ...

  8. 【转】Cannot add or update a child row: a foreign key constraint fails 解决办法

    原因:设置的外键和对应的另一个表的主键值不匹配.解决方法:找出不匹配的值修改.或者清空两表数据. 转自https://blog.csdn.net/qq_29405421/article/details ...

  9. CentOS 7 设置日期和时间

    现代操作系统分为以下两种类型的时钟: 实时时钟(Real-Time Clock,RTC),通常称为硬件时钟(一般是系统主板上的集成电路),它完全独立于操作系统的当前状态,即使在计算机关闭时也能运行. ...

  10. 网站安装 https 证书

    1.点击进入官网  数安时代 2.点击选择你需要的ssl 证书 3.点击进入选择 免费申请 ,填写你需要 安装 ssl 证书 的域名 4.根据你的需求选择,我这里选择的是 数安时代 ,接下来按照步骤操 ...