1. 程式人生 > >PIE SDK向量分級渲染

PIE SDK向量分級渲染

 

1. 功能簡介

    分級渲染是向量的一種資料表達方式。通過選取一個欄位,並根據實際需要對欄位的資料進行分級,並對每一級設定不同的符號,已達到區分顯示的效果。

2. 功能實現說明

2.1 實現思路及原理說明

第一步

例項化向量分級渲染物件

第二步

設定分級渲染的欄位

第三步

設定分級數

第四步

設定不同分級的值及對應的符號

第五步

向量渲染器介面轉換

第六步

向量圖層渲染賦值

2.2  核心介面與方法

介面/類

方法

說明

 

 

Carto. IFeatureClassBreaksRender

Field

分級欄位

ClassCount

分級數

SetBreak ()

設定分級對應數值

SetSymbol()

設定不同級別對應的符號

2.3 示例程式碼

專案路徑

百度雲盤地址下/PIE示例程式/07圖層渲染/02.向量分級渲染

資料路徑

百度雲盤地址下/PIE示例資料/向量資料/Shape

視訊路徑

百度雲盤地址下/PIE視訊教程/07圖層渲染/02.向量分級渲染.avi

示例程式碼

 1 方法(一)
 2 if (mapControlMain.ActiveView.CurrentLayer == null) return;
 3    IFeatureLayer featureLayer = mapControlMain.ActiveView.CurrentLayer as IFeatureLayer;
 4    if (featureLayer == null) return;
 5 //分級欄位,根據實際情況進行修改
 6    string classifyField = "ADCODE99";
 7     //獲取圖層對應要素類
 8     IFeatureClass featureClass = featureLayer.FeatureClass;
 9     //獲取分級欄位對應的索引
10     IFields fields = featureClass.GetFields();
11     int index = fields.GetFieldIndex(classifyField);
12 
13     //遍歷要素準備,初始化遊標
14     //IQueryFilter filter = new QueryFilter();
15     IFeatureCursor cursor = featureClass.Search(null);
16     IFeature feature = cursor.NextFeature();
17 
18     //遍歷要素獲取最大值
19     double max = 0;
20     while (feature != null)
21     {
22         double value = Convert.ToDouble(feature.GetValue(index));
23         if (value >= max)
24         {
25             max = value;
26         }
27         //遍歷所有
28         feature = cursor.NextFeature();
29     }
30     (cursor as IDisposable).Dispose();
31     //建立FeatureClassBreaksRender,設定引數
32     IFeatureClassBreaksRender featureClassBreaksRender = new FeatureClassBreaksRender();
33     featureClassBreaksRender.Field = classifyField;  //設定渲染欄位
34     featureClassBreaksRender.ClassCount = 3;//設定分級數
35     featureClassBreaksRender.SortClassesAscending = true;
36 
37     //分級數、分級的值,根據實際情況自定義修改即可
38     //設定分級級別
39     featureClassBreaksRender.SetBreak(0, max / 3);
40     featureClassBreaksRender.SetBreak(1, (2 * max) / 3);
41     featureClassBreaksRender.SetBreak(2, max);
42 
43     // 定義簡單填充符號
44     IFillSymbol fillSymbol0 = new SimpleFillSymbol();
45     fillSymbol0.Color = Color.FromArgb(255, 0, 0);
46     IFillSymbol fillSymbol1 = new SimpleFillSymbol();
47     fillSymbol1.Color = Color.FromArgb(0, 255, 0);
48     IFillSymbol fillSymbol2 = new SimpleFillSymbol();
49     fillSymbol2.Color = Color.FromArgb(0, 0, 255);
50 
51     //設定分級符號
52     featureClassBreaksRender.SetSymbol(0, fillSymbol0);
53     featureClassBreaksRender.SetSymbol(1, fillSymbol1);
54     featureClassBreaksRender.SetSymbol(2, fillSymbol2);
55 
56     featureLayer.Render = featureClassBreaksRender as IFeatureRender;
57   mapControlMain.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
View Code

2.4 示例截圖