圖層的惟一值渲染便是根據矢量圖層的某一個數值字段的屬性值,按照值的不一樣大小設置不一樣的顯示符號。屬性數值相等的全部要素歸爲同一種類,即同一符號。dom
第一步ide |
實例化惟一值渲染對象spa |
第二步code |
設置惟一值渲染字段視頻 |
第三步對象 |
設置是否使用默認渲染符號blog |
第四步教程 |
針對每個惟一值設置對應符號及標籤索引 |
第五步接口 |
矢量渲染器接口轉換 |
第六步 |
矢量圖層渲染賦值 |
接口/類 |
方法/屬性 |
說明 |
Carto. IFeatureUniqueValueRender |
SetFields |
設置渲染字段 |
GetSymbolMap |
得到SymbolMap |
|
SetSymbol |
設置符號 |
|
SetLabel |
設置備註 |
|
SetUseDefaultSymbol |
設置默認符號 |
|
DefaultSymbol屬性 |
符號 |
項目路徑 |
百度雲盤地址下/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 } |