PIE SDK地圖圖層渲染方案管理

 

1. 功能簡介

    在數據種類較多、渲染規則複雜的狀況下,逐個設置其渲染方式是一件繁瑣的工做。PIE SDK提供了一種省力省心的辦法,ide

    PIE SDK提供柵格和矢量數據渲染方案的打開與保存。可以將配色方案存儲爲xml文件,並能經過讀取xml文件,實例化出Render對象,這將簡化同類數據的渲染配置工做,並減小開發人員的代碼維護。this

    柵格數據渲染方案控制主要是在程序開發以前,根據數據分類組織對應的渲染方案,實如今程序中可以動態的加載顯示方案文件(簡而言之就是每個渲染方案都有一個指定的渲染方案xml文件),對指定圖層進行渲染的。以下圖右側的渲染方案展現,只須要選擇指定的渲染方案當前圖層的顯示就會改變。spa

 

渲染方案3d

2. 功能實現說明

2.1.  實現思路及原理說明

渲染方案保存code

第一步orm

選中要導出渲染方案的圖層。視頻

第二步xml

選擇渲染方案存儲的路徑,調用Pie SDK導出渲染方案的方法便可對象

渲染方案打開blog

第一步

選擇渲染方案文件和目標柵格圖層

第二步

調用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             //一、獲取保存方案數據
 10             ILayer layer = mapControlMain.ActiveView.FocusMap.GetLayer(0);
 11             if (layer.LayerType != LayerType.LayerTypeFeatureLayer) return;
 12             IFeatureLayer featureLayer = layer as IFeatureLayer;
 13             //二、設置保存路徑
 14             SaveFileDialog saveDialog = new SaveFileDialog();
 15             saveDialog.Title = "保存顯示方案";
 16             saveDialog.Filter = "Xml文件(*.xml)|*.xml";
 17             if (saveDialog.ShowDialog() != DialogResult.OK) return;
 18             //三、執行保存方案
 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             //一、獲取保存方案數據
 30             ILayer layer = mapControlMain.ActiveView.FocusMap.GetLayer(0);
 31             if (layer.LayerType != LayerType.LayerTypeFeatureLayer) return;
 32             IFeatureLayer featureLayer = layer as IFeatureLayer;
 33             //二、選擇渲染的方案
 34             OpenFileDialog openDialog = new OpenFileDialog();
 35             openDialog.Title = "打開渲染方案";
 36             openDialog.Filter = "渲染方案(*.xml)|*.xml";
 37             if (openDialog.ShowDialog() != DialogResult.OK) return;
 38             //三、執行渲染並刷新
 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             //一、獲取保存方案數據
 53             ILayer layer = mapControlMain.ActiveView.FocusMap.GetLayer(0);
 54             if (layer.LayerType != LayerType.LayerTypeRasterLayer) return;
 55             IRasterLayer rasterLayer = layer as IRasterLayer;
 56             //二、設置保存路徑
 57             SaveFileDialog saveDialog = new SaveFileDialog();
 58             saveDialog.Title = "保存顯示方案";
 59             saveDialog.Filter = "Xml文件(*.xml)|*.xml";
 60             if (saveDialog.ShowDialog() != DialogResult.OK) return;
 61             //三、執行保存方案
 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             //一、獲取保存方案數據
 73             ILayer layer = mapControlMain.ActiveView.FocusMap.GetLayer(0);
 74             if (layer.LayerType != LayerType.LayerTypeRasterLayer) return;
 75             IRasterLayer rasterLayer = layer as IRasterLayer;
 76             //二、選擇渲染的方案
 77             OpenFileDialog openDialog = new OpenFileDialog();
 78             openDialog.Title = "打開渲染方案";
 79             openDialog.Filter = "渲染方案(*.xml)|*.xml";
 80             if (openDialog.ShowDialog() != DialogResult.OK) return;
 81             //三、執行渲染並刷新
 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. 示例截圖

 

相關文章
相關標籤/搜索