博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PIE SDK地图图层渲染方案管理
阅读量:5908 次
发布时间:2019-06-19

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

 

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

示例代码

1      #region 矢量渲染方案模块  2         ///   3         ///保存矢量渲染方案  4         ///   5         ///   6         ///   7         private void btn_SaveVecRender_Click(object sender, EventArgs e)  8         {  9             //1、获取保存方案数据 10             ILayer layer = mapControlMain.ActiveView.FocusMap.GetLayer(0); 11             if (layer.LayerType != LayerType.LayerTypeFeatureLayer) return; 12             IFeatureLayer featureLayer = layer as IFeatureLayer; 13             //2、设置保存路径 14             SaveFileDialog saveDialog = new SaveFileDialog(); 15             saveDialog.Title = "保存显示方案"; 16             saveDialog.Filter = "Xml文件(*.xml)|*.xml"; 17             if (saveDialog.ShowDialog() != DialogResult.OK) return; 18             //3、执行保存方案 19             RenderFactory.ExportToFile(featureLayer.Render, saveDialog.FileName); 20         } 21  22         ///  23         /// 打开矢量数据渲染方案 24         ///  25         ///  26         ///  27         private void tbn_OpenVecRender_Click(object sender, EventArgs e) 28         { 29             //1、获取保存方案数据 30             ILayer layer = mapControlMain.ActiveView.FocusMap.GetLayer(0); 31             if (layer.LayerType != LayerType.LayerTypeFeatureLayer) return; 32             IFeatureLayer featureLayer = layer as IFeatureLayer; 33             //2、选择渲染的方案 34             OpenFileDialog openDialog = new OpenFileDialog(); 35             openDialog.Title = "打开渲染方案"; 36             openDialog.Filter = "渲染方案(*.xml)|*.xml"; 37             if (openDialog.ShowDialog() != DialogResult.OK) return; 38             //3、执行渲染并刷新 39             featureLayer.Render = RenderFactory.ImportFromFile1(openDialog.FileName); 40             mapControlMain.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll); 41         } 42         #endregion 43  44         #region 栅格渲染方案模块 45         ///  46         /// 保存栅格渲染方案 47         ///  48         ///  49         ///  50         private void btn_SaveRasterRender_Click(object sender, EventArgs e) 51         { 52             //1、获取保存方案数据 53             ILayer layer = mapControlMain.ActiveView.FocusMap.GetLayer(0); 54             if (layer.LayerType != LayerType.LayerTypeRasterLayer) return; 55             IRasterLayer rasterLayer = layer as IRasterLayer; 56             //2、设置保存路径 57             SaveFileDialog saveDialog = new SaveFileDialog(); 58             saveDialog.Title = "保存显示方案"; 59             saveDialog.Filter = "Xml文件(*.xml)|*.xml"; 60             if (saveDialog.ShowDialog() != DialogResult.OK) return; 61             //3、执行保存方案 62             RenderFactory.ExportToFile(rasterLayer.Render, saveDialog.FileName); 63         } 64  65         ///  66         /// 打开栅格渲染方案 67         ///  68         ///  69         ///  70         private void btn_OpenRasterRender_Click(object sender, EventArgs e) 71         { 72             //1、获取保存方案数据 73             ILayer layer = mapControlMain.ActiveView.FocusMap.GetLayer(0); 74             if (layer.LayerType != LayerType.LayerTypeRasterLayer) return; 75             IRasterLayer rasterLayer = layer as IRasterLayer; 76             //2、选择渲染的方案 77             OpenFileDialog openDialog = new OpenFileDialog(); 78             openDialog.Title = "打开渲染方案"; 79             openDialog.Filter = "渲染方案(*.xml)|*.xml"; 80             if (openDialog.ShowDialog() != DialogResult.OK) return; 81             //3、执行渲染并刷新 82             rasterLayer.Render = RenderFactory.ImportFromFile(openDialog.FileName); 83             mapControlMain.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll); 84         } 85  86         ///  87         /// 栅格渲染控制案例 88         ///  89         ///  90         ///  91         private void btn_RasterRenderControl_Click(object sender, EventArgs e) 92         { 93             ILayer layer = mapControlMain.ActiveView.FocusMap.GetLayer(0); 94             if (layer.LayerType != LayerType.LayerTypeRasterLayer) return; 95             IRasterLayer rasterLayer = layer as IRasterLayer; 96             FormDynamicRender FrmDialog = new FormDynamicRender(rasterLayer, mapControlMain.ActiveView); 97             FrmDialog.Owner = this; 98             FrmDialog.Show();   99       }100         #endregion
View Code

2.4. 示例截图

 

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

你可能感兴趣的文章
mysql索引最左原则问题
查看>>
Python天天美味(总)
查看>>
chpter11~函数和函数式编程
查看>>
Failed to run the WC DB work queue associated with
查看>>
分享一些程序员的办公桌
查看>>
第二章 jQuery选择器
查看>>
初识R
查看>>
Hadoop之HDFS的常用命令
查看>>
分布式系统架构解决方案之Dubbo(三)--Dubbo管理端 和 Dubbo综合案例
查看>>
springMVC对于controller处理方法返回值的可选类型
查看>>
百度地图开发 JS API
查看>>
利用Ossim系统进行主机漏洞扫描
查看>>
《设计模式》
查看>>
mysqlbackup.sh
查看>>
Spring Cloud Config采用Git存储时两种常用的配置策略
查看>>
利用自定义注解在SpringMVC中实现自定义权限检查
查看>>
mysql 开启远程登录权限
查看>>
The function getUserId must be used with...解决办法
查看>>
Jenkins持续集成之iOS应用打包
查看>>
maven POM.xml 标签详解
查看>>