zoukankan      html  css  js  c++  java
  • PIE SDK地图图层渲染方案管理

     

    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         /// <summary>
      3         ///保存矢量渲染方案
      4         /// </summary>
      5         /// <param name="sender"></param>
      6         /// <param name="e"></param>
      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         /// <summary>
     23         /// 打开矢量数据渲染方案
     24         /// </summary>
     25         /// <param name="sender"></param>
     26         /// <param name="e"></param>
     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         /// <summary>
     46         /// 保存栅格渲染方案
     47         /// </summary>
     48         /// <param name="sender"></param>
     49         /// <param name="e"></param>
     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         /// <summary>
     66         /// 打开栅格渲染方案
     67         /// </summary>
     68         /// <param name="sender"></param>
     69         /// <param name="e"></param>
     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         /// <summary>
     87         /// 栅格渲染控制案例
     88         /// </summary>
     89         /// <param name="sender"></param>
     90         /// <param name="e"></param>
     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. 示例截图

     

  • 相关阅读:
    [CALayer release]: message sent to deallocated instance 的原因
    Java格式化打印及数字格式化
    Java断言关键字
    Java数值使用下划线
    Java数组复制
    .net你必须知道的事儿 1.5
    .net你必须知道的事儿 1.4
    .net你必须知道的事儿 1.3
    .net你必须知道的事儿 1.2
    .net你必须知道的事儿 1.1
  • 原文地址:https://www.cnblogs.com/PIESat/p/10168071.html
Copyright © 2011-2022 走看看