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         }
View Code

2.4示例截图

 

 

 

posted @ 2023-03-31 18:12  PIESAT  阅读(49)  评论(0)    收藏  举报