对点数据集或线数据集进行核密度分析,并返回分析结果。
命名空间:
SuperMap.Analyst.SpatialAnalyst程序集: SuperMap.Analyst.SpatialAnalyst (in SuperMap.Analyst.SpatialAnalyst)
版本: dll
语法
C# |
---|
public static DatasetGrid KernelDensity( DensityAnalystParameter parameter, DatasetVector sourceDataset, string valueFieldName, Datasource targetDatasource, string targetDatasetName ) |
参数
- parameter
- Type: SuperMap.Analyst.SpatialAnalyst..::.DensityAnalystParameter
指定核密度分析需要的参数信息。
- sourceDataset
- Type: SuperMap.Data..::.DatasetVector
需要进行核密度分析的点数据集或线数据集。
- valueFieldName
- Type: System..::.String
存储用于进行密度分析的测量值的字段名称。若传null则所有几何对象都按值为1处理。不支持文本类型的字段。
- targetDatasource
- Type: SuperMap.Data..::.Datasource
用于存放结果数据集的数据源。
- targetDatasetName
- Type: System..::.String
指定结果数据集的名称。
返回值
核密度分析得到的栅格数据集。备注
核密度分析,即使用核函数,来计算点或线邻域范围内的每单位面积量值。其结果是中间值大周边值小的光滑曲面,在邻域边界处降为0。
SuperMap 使用的核函数为:
其中r为查找半径, scale为栅格中心点到点线对象的距离与查找半径的比例。
对于点对象,其核密度曲面与下方的平面所围成的空间的体积近似于此点的测量值。
对于线对象,其核密度曲面与下方的平面所围成的空间的体积近似于此线的测量值与线长度的乘积。
点或线的邻域叠加处,其密度值也相加。每个输出栅格的密度均为叠加在栅格上的所有核曲面值之和。
结果栅格值的单位为原数据集单位的平方的倒数,即若原数据集单位为米,则结果栅格值的单位为每平方米。注意对于地理坐标数据集,结果栅格值的单位为“每平方度”,是没有实际意义的。
示例
以下代码示范了根据给定的点数据集、用于密度分析的测量值字段和目标数据源进行核密度分析。
CopyC#
public void KernelDensity(DatasetVector datasetPoint, String fieldName, Datasource targetDatasource) { //获得一个合法的名称作为结果数据集的的名称 String resultDatasetName = targetDatasource.Datasets.GetAvailableDatasetName("resultDatasetGrid"); //设置密度分析参数 DensityAnalystParameter densityParam = new DensityAnalystParameter(); densityParam.Bounds = datasetPoints.Bounds; densityParam.Resolution = 5; densityParam.SearchRadius = 30; //调用密度分析类的核密度分析方法实现对点数据集的核密度分析,并获得分析结果 DatasetGrid resultKernelDensityGrid = DensityAnalyst.KernelDensity(densityParam, datasetPoints, fieldName, targetDatasource, resultDatasetName); }