PIE SDK矢量点密度渲染
1.功能简介
点密度符号渲染主要是通过选择字段的数值,根据大小进行点密度分布渲染,来直观显示该数值与不同地域的对应关系。常用于人口分布、GDP统计等场景的专题制图中。
2.功能实现说明
2.1实现思路及原理说明
第一步 |
实例化矢量分级对象 |
第二步 |
设计点密度渲染字段 |
第三步 |
设计符号样式 |
第四步 |
输入参数 |
第五步 |
矢量渲染器接口转换 |
第六步 |
矢量图层渲染赋值 |
2.2核心接口与方法
接口/类 | 方法 | 说明 |
Carto. IFeatureDotDensityRender |
PointSymbol | 设置点符号样式 |
PolygonSymbol | 设置背景填充样式 | |
SetDotDensityParamer | 设置参数 |
2.3示例代码
数据路径 | SDK安装目录下/Data/基础矢量/行政区划/面/省级行政区.shp |
示例代码 | |
![]() 1 private void dotDensityToolStripMenuItem_Click(object sender, EventArgs e) 2 { 3 if (mapctrl.ActiveView.CurrentLayer == null) return; 4 // 获取当前矢量图层 5 IFeatureLayer featureLayer = mapctrl.ActiveView.CurrentLayer as IFeatureLayer; 6 if (featureLayer == null) return; 7 8 // 设置字段索引 9 string fieldName = "POP_2021"; 10 IList<int> FieldsIndex = new List<int>(); 11 FieldsIndex.Add(featureLayer.FeatureClass.GetFields().GetFieldIndex(fieldName)); 12 13 // 创建点密度渲染 14 IFeatureDotDensityRender render = new FeatureDotDensityRender(); 15 // 设置面符号 16 IFillSymbol fillSym1 = new SimpleFillSymbol(); 17 fillSym1.Color = Color.FromArgb(0, 255, 0); 18 19 // 设置点符号 20 IList<ISymbol> symbols = new List<ISymbol>(); 21 IMarkerSymbol symbol0 = new SimpleMarkerSymbol(); 22 symbol0.Color = Color.FromArgb(255, 0, 0); 23 symbol0.Size = 5; 24 symbols.Add(symbol0); 25 26 render.PointSymbol = symbols; 27 render.PolygonSymbol = fillSym1; 28 29 //设置图层列表显示标签 30 IList<string> labels = new List<string>(); 31 labels.Add(fieldName); 32 render.Labels = labels; 33 34 // 设置参数 35 double ptrDotValue = 100; 36 double ptrDotSize = 5; 37 bool bUseDotValue = true; 38 bool bUseDotSize = true; 39 40 // 获取比例尺 41 double ptrScale = mapctrl.ActiveView.DisplayTransformation.MapScale; 42 render.SetDotDensityParamer(ptrDotValue, ptrDotSize, bUseDotValue, bUseDotSize, ptrScale, FieldsIndex); 43 44 //将render对象跟数据关联 45 IFeatureRender FeatureRender = render as IFeatureRender; 46 featureLayer.Render = FeatureRender; 47 mapctrl.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll); 48 } |
2.4示例截图