PIE SDK矢量惟一值渲染

 

1. 功能簡介

    圖層的惟一值渲染便是根據矢量圖層的某一個數值字段的屬性值,按照值的不一樣大小設置不一樣的顯示符號。屬性數值相等的全部要素歸爲同一種類,即同一符號。dom

2. 功能實現說明

2.1. 實現思路及原理說明

第一步ide

實例化惟一值渲染對象spa

第二步code

設置惟一值渲染字段視頻

第三步對象

設置是否使用默認渲染符號blog

第四步教程

針對每個惟一值設置對應符號及標籤索引

第五步接口

矢量渲染器接口轉換

第六步

矢量圖層渲染賦值

2.2. 核心接口與方法

接口/類

方法/屬性

說明

 

 

Carto. IFeatureUniqueValueRender

SetFields

設置渲染字段

GetSymbolMap

得到SymbolMap

SetSymbol

設置符號

SetLabel

設置備註

SetUseDefaultSymbol

設置默認符號

DefaultSymbol屬性

符號

2.3. 示例代碼

項目路徑

百度雲盤地址下/PIE示例程序/07圖層渲染/03.矢量惟一值渲染

數據路徑

百度雲盤地址下/PIE示例數據/矢量數據/Shape/省級行政區.shp

視頻路徑

百度雲盤地址下/PIE視頻教程/07圖層渲染/03.矢量惟一值渲染.avi

示例代碼

 1 /// <summary>
 2 /// 矢量惟一值渲染
 3 /// </summary>
 4 /// <param name="sender"></param>
 5 /// <param name="e"></param>
 6 private void toolStripButton_FUnique_Click(object sender, EventArgs e)
 7 {
 8     //當前圖層
 9     if (mapControlMain.ActiveView.CurrentLayer == null) return;
10     //獲取矢量圖層
11     IFeatureLayer featureLayer = mapControlMain.ActiveView.CurrentLayer as IFeatureLayer;
12     if (featureLayer == null) return;
13 
14     //渲染代碼
15     string fieldName = "NAME";//"ADCODE99";//獲取惟一值的字段名稱,根據實際須要進行修改
16     int filedIndex = featureLayer.FeatureClass.GetFields().GetFieldIndex(fieldName);//獲取字段索引
17     if (filedIndex == -1) return;
18 
19     //建立FeatureUniqueValueRender
20     IFeatureUniqueValueRender featureUniqueValueRender = new FeatureUniqueValueRender();
21 
22     //設置渲染值段
23     IList<String> listFeilds = new List<String>() { fieldName };
24     featureUniqueValueRender.SetFields(listFeilds);
25 
26     //遍歷矢量要素圖層,讀取每個要素值
27     IFeatureCursor cursor = featureLayer.FeatureClass.Search(null);
28     IFeature feature = cursor.NextFeature();
29     Random rd = new Random();
30     while (feature != null)
31     {
32         int r, g, b;
33         r = (int)(rd.Next(1, 255));
34         g = (int)(rd.Next(1, 255));
35         b = (int)(rd.Next(1, 255));
36 
37         //獲取字段值
38         string value = feature.GetValue(filedIndex).ToString();
39         if (!featureUniqueValueRender.GetSymbolMap().ContainsKey(value))
40         {
41             //初始化值對應的符號;本示例爲面圖層,生成FillSymbol
42             IFillSymbol fillSymbol = new SimpleFillSymbol();
43             fillSymbol.Color = Color.FromArgb(r, g, b);
44 
45             featureUniqueValueRender.SetSymbol(value, fillSymbol as ISymbol);
46             featureUniqueValueRender.SetLabel(value, value);
47         }
48         feature = cursor.NextFeature();
49 
50     }
51     //*********設置默認符號,必要代碼**********
52     IFillSymbol defaultSymbol = new SimpleFillSymbol();
53     defaultSymbol.Color = Color.AliceBlue;
54     featureUniqueValueRender.SetUseDefaultSymbol(true);
55     featureUniqueValueRender.DefaultSymbol = (defaultSymbol as ISymbol);
56     featureUniqueValueRender.DefaultLabel = "";
57 
58     (cursor as IDisposable).Dispose();//釋放遊標
59     //設置featurerender
60     IFeatureRender featureRender = featureUniqueValueRender as IFeatureRender;
61     featureLayer.Render = featureRender;
62 
63     //視圖刷新
64     mapControlMain.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
65 }
View Code

2.4. 示例截圖

 

相關文章
相關標籤/搜索