图层的惟一值渲染便是根据矢量图层的某一个数值字段的属性值,按照值的不一样大小设置不一样的显示符号。属性数值相等的全部要素归为同一种类,即同一符号。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 } |