核密度分析 (空间分析)
插图
用法
-
搜索半径参数值越大,生成的密度栅格越平滑且概化程度越高。值越小,生成的栅格所显示的信息越详细。
-
计算密度时,仅考虑落入邻域范围内的点或线段。如果没有点或线段落入特定像元的邻域范围内,则为该像元分配 NoData。
-
如果面积单位比例因子的单位相对于要素(点间距离或线段长度,取决于要素类型)很小,则输出值可能会很小。要获取较大的值,请选择单位较大的面积单位比例因子(例如,平方千米与平方米)。
在 ArcGIS 10.2.1 中,默认搜索半径(带宽)是基于空间配置和输入点数计算的。此方法可更正空间异常值(距离其他输入点非常远的点),这样将不会导致搜索半径过大。
Population 字段中的值过大或过小都会使结果看起来并不直观。如果 population 字段的平均值远大于 1(例如,城市人口),则默认搜索半径可能会非常小,导致在输入点周围生成很小的环。如果 population 字段的平均值远小于 1,则计算的带宽看起来可能会非常大。在这些情况下,您可能希望输入自定义的搜索半径。
语法
参数 | 说明 | 数据类型 |
in_features |
要计算密度的输入要素(点或线)。 | Feature Layer |
population_field |
表示各要素的 population 值的字段。Population 字段表示遍布于用来创建连续表面的景观内的计数或数量。 population 字段的值可以是整型或浮点型。 以下列出的是该字段的选项和默认特性。
| Field |
cell_size (可选) | 输出栅格数据集的像元大小。 如果专门进行设置,则是环境中的值。如果未设置环境,单元大小为输出空间参考中输出范围的宽度或高度较小值除以 250。 | Analysis Cell Size |
search_radius (可选) | 在其范围内计算密度的搜索半径。单位基于输出空间参考投影的线性单位。 例如,如果单位为米,若要包含一英里邻域内的所有要素,可将搜索半径设置为 1609.344(1 英里 = 1609.344 米)。 使用“Silverman 经验规则”的空间变量专为输入数据集计算默认搜索半径(带宽),该变量可有效避免空间异常值(即距离其余点太远的点)。有关该算法的描述,请参阅上述“使用提示”。 | Double |
area_unit_scale_factor (可选) |
输出密度值的所需面积单位。 基于输出空间参考投影的线性单位选择默认单位。若要转换密度输出,可将此单位更改为合适的单位。线密度值同时转换长度和面积单位。 例如,如果输入单位是米,则默认输出面积密度单位为平方米(点要素)或千米每平方千米(折线要素)。 基于输入要素单位的默认密度单位有:
| String |
返回值
名称 | 说明 | 数据类型 |
out_raster |
输出核密度栅格。 其总为浮点栅格。 | Raster |
代码实例
本示例根据点 shapefile 来计算平滑的密度栅格。
import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
outKDens = KernelDensity("rec_sites.shp", "NONE", 45, 1200, "SQUARE_KILOMETERS")
outKDens.save("C:/sapyexamples/output/kdensout")
本示例根据点 shapefile 来计算平滑的密度栅格。
# Name: KernelDensity_Ex_02.py
# Description: Calculates a magnitude per unit area from point or polyline
# features using a kernel function to fit a smoothly tapered
# surface to each point or polyline.
# Requirements: Spatial Analyst Extension
# Import system modules
import arcpy
from arcpy import env
from arcpy.sa import *
# Set environment settings
env.workspace = "C:/sapyexamples/data"
# Set local variables
inFeatures = "rec_sites.shp"
populationField = "NONE"
cellSize = 60
searchRadius = 2500
# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")
# Execute KernelDensity
outKernelDensity = KernelDensity(inFeatures, populationField, cellSize,
searchRadius, "SQUARE_KILOMETERS")
# Save the output
outKernelDensity.save("C:/sapyexamples/output/kerneldout")