1.空间分析
空间分析(Spatial Analysis)是基于地理对象的位置和形态特征的空间数据分析技术,其目的在于提取和传输空间信息。
2.前期准备
配置idesktop,iserver
发布空间分析服务,获取url以便使用
3.缓冲区分析
缓冲区分析(buffer)是根据指定的距离在点、线和多边形实体周围自动建立一定宽度的区域范围的分析方法。例如,在环境治理时,常在污染的河流周围划出一定宽度的范围表示受到污染的区域;又如在飞机场,常根据附近居民的健康需要在周围划分出一定范围的区域作为非居住区等。
// 空间分析服务url
var serviceUrl = "***"
//设置缓冲区分析参数
var dsBufferAnalystParams = new L.supermap.DatasetBufferAnalystParameters({
// 用来做缓冲区分析的数据源中数据集名称
dataset: "***",
// 设置数据集中集合对象的过滤条件
filterQueryParameter: new L.supermap.FilterParameter({
// 属性过滤条件
attributeFilter: "NAME='***'"
}),
//缓冲区分析通用参数设置
bufferSetting: new L.supermap.BufferSetting({
// 缓冲区端点枚举值,包含FLAT和ROUND
endType: L.supermap.BufferEndType.ROUND,
// 左侧缓冲距离
leftDistance: {value: 10},
// 右侧缓冲距离
rightDistance: {value: 10},
// 圆头缓冲圆弧处线段的个数
semicircleLineSegment: 10
})
});
// 创建缓冲区分析服务
var bufferServiceByDatasets = new L.supermap.SpatialAnalystService(serviceUrl);
// 向服务端发送服务请求,并获取返回的结果
bufferServiceByDatasets.bufferAnalysis(dsBufferAnalystParams,function(serviceResult){
// 获取服务端返回的数据
var result = serviceResult.result;
});
4.叠加分析
叠加分析是 GIS 中的一项非常重要的空间分析功能,是指在统一空间参考系统下,通过对两个数据集进行的一系列集合运算,产生新数据集的过程,其目的是通过对空间数据的加工或分析,提取用户需要的新的空间几何信息。同时,通过叠加分析,还将对数据的各种属性信息进行处理。
目前叠加分析广泛应用于资源管理、城市建设评估、国土管理、农林牧业、统计等领域。
// 空间分析服务url
var serviceUrl = "***"
// 设置叠加分析参数
var dsOverlayAnalyParams = new L.supermap.DatasetOverlayAnalystParameters({
// 叠加分析中源数据集的名称
sourceDataset: "***",
// 叠加分析中操作数据集名称
operateDataset: "***",
// 容限
tolerance: 0,
// 叠加分析操作类型
operation: new L.supermap.OverlayOperationType.UNION
});
// 创建叠加分析服务实例
var overlayAnalystService = new L.supermap.SpatialAnalystService(serviceUrl);
// 向服务端发送服务请求,并获取返回的结果
overlayAnalystService.overlayAnalysis(dsOverlayAnalyParams, function(serviceResult) {
// 获取返回的featuers数据
var features = serviceResult.result.regions;
});
5.核密度分析
核密度分析用于计算点、线要素测量值在指定邻域范围内的单位密度。简单来说,它能直观的反映出离散测量值在连续区域内的分布情况。其结果是中间值大周边值小的光滑曲面,栅格值即为单位密度,在邻域边界处降为0。
密度分析可用于计算人口密度、建筑密度、获取犯罪情况报告、旅游区人口密度监测、连锁店经营情况分析等等。
//创建点密度插值分析参数实例
var densityAnalystParameters = new L.supermap.DensityKernelAnalystParameters({
//指定数据集
dataset: "***",
//指定范围
bounds: L.bounds([*, *], [*, *]),
//指定数据集中用于核密度分析的字段
fieldName: "SmLength",
//单位是米
searchRadius: 50,
// 结果数据集名称
resultGridName: "KernelDensity_Result",
deleteExistResultDataset: true
});
//创建核密度分析服务实例
var densityAnalystService = new L.supermap.SpatialAnalystService(serviceUrl);
densityAnalystService.densityAnalysis(densityAnalystParameters, function (densityServiceResult) {
// 获取服务端返回的数据
var densityAnalystResult = serviceResult.result;
});