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. javascript总结17:javascript 函数简介

    1 释义:函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块. 2 格式:通过 function  关键字. function test(){ alert("您好"); } ...

  2. Java静态变量的用法:伪单例

    这几天遇到一个问题,一个Service里有一个map,但是这个Service有别的继承,于是每一个Service都会创建一个map,但是这个map应该是公用的,于是就有问题了...(按结构说Servi ...

  3. PopupWindow简单使用(一)

    1.构造函数 //方法一:     public PopupWindow (Context context)     //方法二:     public PopupWindow(View conten ...

  4. vba实现excel多表合并

    Excel多表合并之vba实现 需求 保留列名,复制每一个excel里的数据,合并到一个excel 操作步骤 将要合并的文件放在同一文件夹下,复制过来就好(ps:最好不要直接操作原数据文件,避免操作失 ...

  5. 使用 Windows Phone 8 文件和 URI 关联的自动启动应用

    更详细,猛撸这里:http://msdn.microsoft.com/zh-cn/library/windowsphone/develop/jj206987(v=vs.105).aspx 在WMApp ...

  6. 停止Nginx服务

    查询nginx进程信息 chen@ubuntu:~$ ps -ef |grep nginx root : ? :: nginx: master process /usr/sbin/nginx -g d ...

  7. [.net 多线程] Interlocked实现CAS操作

    Interlocked:为多个线程共享的变量提供原子操作. Interlocked.Increment(ref value) 数值加一(原子性操作) Interlocked.Decrement(ref ...

  8. C#构造函数详解和析构函数详解

    首先来了解下构造函数的定义: C#构造函数是一种特殊的成员函数,它的作用主要用于为对象分配存储空间,对数据成员进行初始化. 接下来看一下他的语法定义形式: |访问修饰符| 标识符 (|参数列表|) | ...

  9. 精心收集的 48 个 JavaScript 代码片段,仅需 30 秒就可理解!(转载)

    Anagrams of string(带有重复项) 使用递归.对于给定字符串中的每个字母,为字母创建字谜.使用map()将字母与每部分字谜组合,然后使用reduce()将所有字谜组合到一个数组中,最基 ...

  10. 搭建基于MinGW平台的《OpenGL蓝皮书(OpenGL SuperBibe 5th)》示例代码编译环境

    副标题:搭建基于MinGW平台的<OpenGL超级宝典>(OpenGL蓝皮书第5版)GLTools 编译环境.示例代码:Triangle.cpp @ SB5.zip 以下内容以及方法均参考 ...