1.算法功能简介
热力图,也就热图或者热点图,它能以特殊高亮的的形式显示某一区域的等级的优越性、重要性或者某一区域类别的密度和变换趋势;例如百度地图热力图 是用不同颜色的区块叠加在地图上实时描述人群分布、密度和变化趋势的一个产品,是基于百度大数据的一个便民出行服务。
上图主要显示一个城市的某个地方人员比较集中甚至拥挤程度,颜色越深表示人员越多,颜色浅代表人比较少,可以提前考虑自己的行程避开人多的地方。
PIE支持算法功能的执行,下面对热力图算法功能进行介绍。
2.算法功能实现说明
2.1. 实现步骤
第一步 |
算法参数设置 |
第二步 |
算法执行 |
第三步 |
结果显示 |
2.2. 算法参数
C#算法DLL |
PIE.CommonAlgo.dll |
|
C#算法名称 |
PIE.CommonAlgo.HotMapContructAlgo |
|
参数结构体 |
HotMapContruct_Exchange_Info |
|
参数说明 |
||
BCreateFeatureDataset |
bool |
是否创建矢量数据集 |
BUseWeightFiled |
bool |
是否使用权重字段 |
CellSize |
double |
像元大小(影响输出宽高 为负数不参与计算) |
DefualtWeightValue |
int |
默认权重值(0-255,不使用权重字段情况下) |
DeviceHeight |
int |
输出影像高度 |
DeviceWidth |
int |
输出影像宽度(高度自动计算) |
InputFeatureDataset |
IFeatureDataset |
输入矢量数据集 |
ListInvalidValue |
IList<double> |
无效值列表 |
OutputFeatureDataset |
IFeatureDataset |
输出矢量数据集(内存) |
OutputRasterDataset |
IRasterDataset |
输出栅格数据集 |
OutRasterFilePath |
string |
输出栅格路径 |
OutRasterType |
string |
输出栅格类型 |
Radius |
double |
半径(像素单位) |
WeightFeildName |
String |
权重字段名称 |
2.3. 示例代码
数据路径 |
百度云盘地址下/PIE示例数据/矢量数据/Shape/省会城市.shp |
视频路径 |
百度云盘地址下/10.算法调用/实用工具/热力图算法.avi |
示例代码 |
|
1 /// <summary> 2 /// 热力图生成算法 3 /// </summary> 4 private void Test_HotMapContructAlgo() 5 { 6 #region 1参数设置 7 string strFileName = @"D:\data\China\省会城市.shp"; 8 IFeatureDataset fDataset = PIE.DataSource.DatasetFactory.OpenFeatureDataset(strFileName); 9 if (fDataset.GetGeomType() != GeometryType.GeometryPoint) return; 10 HotMapContruct_Exchange_Info info = new HotMapContruct_Exchange_Info(); 11 info.InputFeatureDataset = fDataset; 12 //具体分析 13 info.BUseWeightFiled = true; 14 info.WeightFeildName = "GDP";//根据数据的权重字段进行设置 15 info.Radius = 20; 16 info.BCreateFeatureDataset = false; 17 info.DeviceWidth = 2000; 18 info.DefualtWeightValue = 50; 19 info.OutRasterType = "GTIFF"; 20 info.DeviceWidth = 1000; 21 info.CellSize = fDataset.GetExtent().GetWidth() / info.CellSize; 22 info.OutRasterFilePath = @"D:\temp\省会城市热力图测试.tiff"; 23 #endregion 24 25 //2、算法执行 26 PIE.CommonAlgo.HotMapContructAlgo alog = new HotMapContructAlgo(); 27 alog.Params = info; 28 alog.Execute(); 29 30 //3、结果显示 31 ILayer layer = LayerFactory.CreateDefaultLayer(info.OutRasterFilePath); 32 if (layer == null) 33 { 34 MessageBox.Show("执行失败"); 35 return; 36 } 37 m_HookHelper.FocusMap.AddLayer(layer); m_HookHelper.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll); 38 (fDataset as IDisposable).Dispose();//释放内存 39 fDataset = null; 40 } |
2.4. 示例截图