密度分析
SuperMap iServer 的分布式分析服务中的密度分析包括简单点密度分析和核密度分析两种:
- 简单点密度分析:用于计算每个点的指定邻域形状内的每单位面积量值。计算方法为点的测量值除以指定邻域面积,点的邻域叠加处,其密度值也相加,每个输出栅格的密度均为叠加在栅格上的所有邻域密度值之和。结果栅格值的单位为原数据集单位的平方的倒数,即若原数据集单位为米,则结果栅格值的单位为每平方米;
- 核密度分析:用于计算点、线要素测量值在指定邻域范围内的单位密度。简单来说,它能直观的反映出离散测量值在连续区域内的分布情况。其结果是中间值大周边值小的光滑曲面,栅格值即为单位密度,在邻域边界处降为0。核密度分析可用于计算人口密度、建筑密度、获取犯罪情况报告、旅游区人口密度监测、连锁店经营情况分析等等。
下面对大数据进行简单点密度分析,网格面类型为四边形网格。其接口使用方法如下:
设置密度分析参数 kernelDensityJobParam,包括数据集、分析方法、分析类型、格网大小等。
// 密度分析参数
var kernelDensityJobParam = new SuperMap.KernelDensityJobParameter({
// 数据集名
datasetName: "newyork_taxi_2013_01_14k_csv_newyork_taxi_2013-01_14k",
// 网格大小,对于四边形网格为网格的边长;对于六边形网格为六边形顶点到中心点的距离
resolution: 80,
// 分析方法, 指定分析方法为简单点密度分析,还是核密度分析。0表示前者,1表示后者
method:0,
// 格网面类型, 指定网格单元为四边形网格,还是六边形网格。0表示前者,1表示后者
meshType:0,
// 指定待分析的点的权重值所在的字段索引列号集合,字段索引从0开始。格式如:col7,col8
fields: col7,col8,
// 分析范围
query: Bounds,
// 分析的影响半径
radius: 300,
// 网格大小单位
meshSizeUnit: Meter,
// 搜索半径单位
radiusUnit: Meter,
// 面积单位
areaUnit: SquareMile,
});
向服务端提交密度分析的请求,获取服务端成功处理并返回的密度分析结果。
// 创建密度分析实例
var processingService = new ol.supermap.ProcessingService(processingsUrl);
processingService.addKernelDensityJob(kernelDensityJobParameter, function (serviceResult) {
// 获取服务端返回的数据
var result = serviceResult.result;
});