PIE SDK矢量分级符号渲染
1.功能简介
矢量分级符号渲染与矢量分级渲染方式类似,选取一个字段,根据实际需要对字段的数据进行分级,并对每一级设置不同的符号,以达到区分显示的效果。
2.功能实现说明
矢量分级符号渲染功能通过调用算法实现。
2.1实现思路及原理说明
第一步 |
实例化矢量分级渲染对象 |
第二步 |
设置背景渲染样式 |
第三步 |
设计分级渲染字段 |
第四步 |
设计不同分级的值及对应的符号样式 |
第五步 |
矢量渲染器接口转换 |
第六步 |
矢量图层渲染赋值 |
2.2核心接口与方法
接口/类 | 方法 | 说明 |
Carto.IFeatureGraduatedSymbolsRender |
SetField |
分级字段 |
PolygonSymbol |
设置背景面符号 |
|
SetBreak |
设置分级断点 |
|
SetSymbol |
设置不同级别对应的符号 |
|
MinimumBreak |
设置最小分级值 |
|
SetParamer |
设置参数 |
2.3示例代码
数据路径 | SDK安装目录下/Data/基础矢量/行政区划/面/省级行政区.shp |
示例代码 | |
1 private void graduatedSymbolToolStripMenuItem_Click(object sender, EventArgs e) 2 { 3 IFeatureLayer featureLayer = mapctrl.ActiveView.CurrentLayer as IFeatureLayer; 4 IFeatureGraduatedSymbolsRender render = new FeatureGraduatedSymbolsRender(); 5 render.SetField("GDP_2022", "<PERCENT OF TOTAL>"); 6 7 // 设置背景面符号 8 IFillSymbol fillSym1 = new SimpleFillSymbol(); 9 render.PolygonSymbol = fillSym1; 10 11 // 设置分级断点 12 render.SetBreak(0, 30000);//第一级 13 render.SetBreak(1, 60000);//第二级 14 render.SetBreak(2, 130000);//第三级 15 16 // 设置分级样式 17 IMarkerSymbol symbol0 = new SimpleMarkerSymbol(); 18 symbol0.Size = 10; 19 symbol0.Color = Color.FromArgb(255, 0, 0); 20 IMarkerSymbol symbol1 = new SimpleMarkerSymbol(); 21 symbol1.Size = 15; 22 symbol1.Color = Color.FromArgb(0, 255, 0); 23 IMarkerSymbol symbol2 = new SimpleMarkerSymbol(); 24 symbol2.Size = 20; 25 symbol2.Color = Color.FromArgb(0, 0, 255); 26 27 render.SetSymbol(0, symbol0); 28 render.SetSymbol(1, symbol1); 29 render.SetSymbol(2, symbol2); 30 31 // 设置分级标签 32 render.SetLabel(0, "第一级"); 33 render.SetLabel(1, "第二级"); 34 render.SetLabel(2, "第三级"); 35 36 render.MinimumBreak = 0; 37 // 设置参数 38 render.SetParamer(138, "<PERCENT OF TOTAL>"); 39 //将render对象跟数据关联 40 IFeatureRender FeatureRender = render as IFeatureRender; 41 featureLayer.Render = FeatureRender; 42 mapctrl.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll); 43 } |
2.4示例截图