核密度分析 (空间分析)

摘要

使用核函数根据点或折线要素计算每单位面积的量值以将各个点或折线拟合为光滑锥状表面。 在计算核密度时,可以使用障碍来改变要素的影响。

了解有关核密度工作原理的详细信息

插图

核密度示意图
OutRas = KernelDensity(InPts, None, 30)

使用情况

  • Population 字段参数(Python 中的 population_field)中的值过大或过小都可能使结果不直观。 如果 Population 字段的平均值远大于 1(例如,城市人口),则默认搜索半径可能会非常小,导致在输入点周围生成的环很小。 如果 Population 字段的平均值远小于 1,则计算的搜索半径可能会非常大。 在这些情况下,您可以输入自己的搜索半径。

  • 输出像元大小参数可以通过数值进行定义,也可以从现有栅格数据集获取。 如果没有将像元大小明确指定为参数值,则将从像元大小环境获取相应值(前提是已指定环境)。 如果未指定参数像元大小或环境像元大小,但已设置了捕捉栅格环境,则将使用捕捉栅格的像元大小。 如果未任何内容,则像元大小会通过使用范围的宽度或高度中的较小值除以 250 来计算,其中范围位于在环境中指定的输出坐标系内。

  • 如果使用数值指定了像元大小,工具将直接将其用于输出栅格。

    如果使用栅格数据集指定了像元大小,则参数将显示栅格数据集的路径而不是像元大小值。 该栅格数据集的像元大小将直接用于分析,前提是数据集的空间参考与输出空间参考相同。 如果数据集的空间参考与输出空间参考不同,将根据指定的像元大小方法值进行投影。

  • 搜索半径参数(Python 中的 search_radius)的值越大,密度栅格越平滑且概化程度越高。 值越小,生成的栅格所显示的信息越详细。

  • 默认的搜索半径是根据输入点的空间配置和数量计算得出的。 这种方法可以纠正空间异常值,即远离其他点的输入点,以避免搜索半径不合理地变大。

  • 如果相对于要素(点间距离或线段长度,取决于要素类型)来说,面积单位比例因子的单位较小,则输出值可能会很小。 要获取较大的值,请选择单位较大的面积单位比例因子(例如,平方千米与平方米)。

  • 输出像元值(Python 中的 out_cell_values)参数用于指定输出栅格值表示的内容。 如果选择了密度,则值表示每个像元的单位面积内的核密度值。 如果选择了预期计数,则值表示每个像元区域的核密度。 计算计数值的方程式为:计数 = 密度 × 面积。

  • 如果要对投影可准确保留正确距离和面积的本地比例下执行分析,则可在方法(Python 中的 method)参数中选择平面选项。 如果分析是在区域或大比例上进行的(例如,使用 Web 墨卡托或任何地理坐标系),则可选择测地线选项。 这种方法考虑到椭球体的曲率,并可以正确处理两极和国际日期变更线附近的数据。

  • 计算密度时,仅考虑落入邻域范围内的点或线段。 如果没有点或线段落入特定像元的邻域范围内,则将为该像元分配值零。

  • 对于支持空值的数据格式(例如文件地理数据库要素类),当用作输入时,空值将被忽略。

  • 有关适用于此工具的地理处理环境的详细信息,请参阅分析环境和 Spatial Analyst

  • 参考文献:

    Silverman, B. W. Density Estimation for Statistics and Data Analysis. New York: Chapman and Hall, 1986.

参数

标注说明数据类型
输入点或折线要素

要计算密度的输入要素(点或线)。

Feature Layer
Population 字段

表示各要素的人口值的字段。 Population 字段表示遍布于用来创建连续表面的景观内的计数或数量。

总体字段的值可以是整型或浮点型。

以下列出的是该字段的选项和默认特性。

  • 如果不使用任何项目或特殊值,则选择 None,这样每一要素就只计数一次。

  • 如果输入要素包含 z 值,则可以使用 Shape 字段。

  • 否则,默认字段为 POPULATION。 以下条件同样适用:

    • 如果没有 POPULATION 字段,但有 POPULATIONabcd 字段,则默认使用该字段。 'abcd' 可以是任何有效字符,例如 POPULATION6POPULATION1974POPULATIONROADTYPE
    • 如果没有 POPULATION 字段、或 POPULATIONabcd 字段,但有 POP 字段,则默认使用 POP 字段。
    • 如果没有 POPULATION 字段、POPULATIONabcd 字段或 POP 字段,但有 POPabcd 字段,则默认使用 POPabcd 字段。
    • 如果没有 POPULATION 字段、POPULATIONabcd 字段、POP 字段或 POPabcd 字段,则默认使用 NONE
Field
输出像元大小
(可选)

将创建的输出栅格的像元大小。

该参数可以通过数值定义,也可以从现有的栅格数据集获取。 在像元大小未明确指定为参数值的情况下,如果指定了环境像元大小值,则将使用该值;否则,将使用附加规则,根据其他输入来计算该值。 有关详细信息,请参阅使用方法部分。

Analysis Cell Size
搜索半径
(可选)

在其范围内计算密度的搜索半径。 单位基于输出空间参考投影的线性单位。

例如,如果单位为米,若要包含一英里邻域内的所有要素,可将搜索半径设置为 1609.344(1 英里 = 1609.344 米)。

默认的搜索半径是使用 Silverman 的 Thumb 规则(Silverman,1986)的空间变体,特定于输入数据集计算的,该规则对空间异常值(远离其他点的点)具有较好稳定性。 有关算法的描述,请参阅使用提示。

Double
面积单位
(可选)

指定输出密度值所使用的面积单位。

基于输出空间参考的线性单位决定默认单位。 要转换密度输出,可将此单位更改为合适的单位。 线密度值将转换长度和面积的单位。

未指定输出空间参考的情况下,输出空间参考与输入要素类相同。 默认输出密度单位通过输出空间参考的线性单位确定。 如果输出线性单位是米,输出面积密度单位将设置为平方千米,输出平方千米(点要素)或千米每平方千米(折线要素)。 如果输出线性单位是英尺,输出面积密度单位将设置为平方英里

如果输出单位不是英尺和米,输出面积密度单位将设置为平方地图单位。 即,输出密度单位为输出空间参考的线性单位的平方。 例如,如果输出线性单位是厘米,输出面积密度单位将是平方地图单位,即平方厘米。 如果输出线性单位是千米,输出面积密度单位将是平方地图单位,即平方千米。

可用选项及相应的输出密度单位如下:

  • 平方地图单位将使用对应输出空间参考的线性单位的平方。
  • 平方英里将使用美制英里作为单位。
  • 平方千米将使用千米作为单位。
  • 英亩将使用美制英亩作为单位。
  • 公顷将使用公顷作为单位。
  • 平方码将使用美制码作为单位。
  • 平方英尺将使用美制英尺作为单位。
  • 平方英寸将使用美制英寸作为单位。
  • 平方米将使用米作为单位。
  • 平方厘米将使用厘米作为单位。
  • 平方毫米将使用毫米作为单位。
String
输出像元值
(可选)

指定输出栅格中的值的含义。

由于像元值与指定的像元大小相关联,因此结果栅格不能重新采样为不同的像元大小。

  • 密度输出值表示每个像元的单位面积内计算得出的密度值。 这是默认设置。
  • 预期计数输出值表示每个像元区域内计算得出的密度值。
String
方法
(可选)

指定使用平地(平面)还是椭球体上的最短路径(测地线)方法。

椭球体方法仅支持点作为输入要素。

  • 平面将使用要素之间的平面距离。 这是默认设置。
  • 测地线将使用要素之间的测地线距离。
String
输入障碍要素
(可选)

定义障碍的数据集。

障碍可以是折线或面要素的要素图层。

Feature Layer

返回值

标注说明数据类型
输出栅格

输出核密度栅格。

总为浮点栅格。

Raster

KernelDensity(in_features, population_field, {cell_size}, {search_radius}, {area_unit_scale_factor}, {out_cell_values}, {method}, {in_barriers})
名称说明数据类型
in_features

要计算密度的输入要素(点或线)。

Feature Layer
population_field

表示各要素的人口值的字段。 Population 字段表示遍布于用来创建连续表面的景观内的计数或数量。

总体字段的值可以是整型或浮点型。

以下列出的是该字段的选项和默认特性。

  • 如果不使用任何项目或特殊值,则选择 None,这样每一要素就只计数一次。

  • 如果输入要素包含 z 值,则可以使用 Shape 字段。

  • 否则,默认字段为 POPULATION。 以下条件同样适用:

    • 如果没有 POPULATION 字段,但有 POPULATIONabcd 字段,则默认使用该字段。 'abcd' 可以是任何有效字符,例如 POPULATION6POPULATION1974POPULATIONROADTYPE
    • 如果没有 POPULATION 字段、或 POPULATIONabcd 字段,但有 POP 字段,则默认使用 POP 字段。
    • 如果没有 POPULATION 字段、POPULATIONabcd 字段或 POP 字段,但有 POPabcd 字段,则默认使用 POPabcd 字段。
    • 如果没有 POPULATION 字段、POPULATIONabcd 字段、POP 字段或 POPabcd 字段,则默认使用 NONE
Field
cell_size
(可选)

将创建的输出栅格的像元大小。

该参数可以通过数值定义,也可以从现有的栅格数据集获取。 在像元大小未明确指定为参数值的情况下,如果指定了环境像元大小值,则将使用该值;否则,将使用附加规则,根据其他输入来计算该值。 有关详细信息,请参阅使用方法部分。

Analysis Cell Size
search_radius
(可选)

在其范围内计算密度的搜索半径。 单位基于输出空间参考投影的线性单位。

例如,如果单位为米,若要包含一英里邻域内的所有要素,可将搜索半径设置为 1609.344(1 英里 = 1609.344 米)。

默认的搜索半径是使用 Silverman 的 Thumb 规则(Silverman,1986)的空间变体,特定于输入数据集计算的,该规则对空间异常值(远离其他点的点)具有较好稳定性。 有关算法的描述,请参阅使用提示。

Double
area_unit_scale_factor
(可选)

指定输出密度值所使用的面积单位。

基于输出空间参考的线性单位决定默认单位。 要转换密度输出,可将此单位更改为合适的单位。 线密度值将转换长度和面积的单位。

未指定输出空间参考的情况下,输出空间参考与输入要素类相同。 默认输出密度单位通过输出空间参考的线性单位确定。 如果输出线性单位是米,输出面积密度单位将设置为平方千米,输出平方千米(点要素)或千米每平方千米(折线要素)。 如果输出线性单位是英尺,输出面积密度单位将设置为平方英里

如果输出单位不是英尺和米,输出面积密度单位将设置为平方地图单位。 即,输出密度单位为输出空间参考的线性单位的平方。 例如,如果输出线性单位是厘米,输出面积密度单位将是平方地图单位,即平方厘米。 如果输出线性单位是千米,输出面积密度单位将是平方地图单位,即平方千米。

可用选项及相应的输出密度单位如下:

  • SQUARE_MAP_UNITS将使用对应输出空间参考的线性单位的平方。
  • SQUARE_MILES将使用美制英里作为单位。
  • SQUARE_KILOMETERS将使用千米作为单位。
  • ACRES将使用美制英亩作为单位。
  • HECTARES将使用公顷作为单位。
  • SQUARE_YARDS将使用美制码作为单位。
  • SQUARE_FEET将使用美制英尺作为单位。
  • SQUARE_INCHES将使用美制英寸作为单位。
  • SQUARE_METERS将使用米作为单位。
  • SQUARE_CENTIMETERS将使用厘米作为单位。
  • SQUARE_MILLIMETERS将使用毫米作为单位。
String
out_cell_values
(可选)

指定输出栅格中的值的含义。

  • DENSITIES输出值表示每个像元的单位面积内计算得出的密度值。 这是默认设置。
  • EXPECTED_COUNTS输出值表示每个像元区域内计算得出的密度值。

由于像元值与指定的像元大小相关联,因此结果栅格不能重新采样为不同的像元大小。

String
method
(可选)

指定使用平地(平面)还是椭球体上的最短路径(测地线)方法。

  • PLANAR将使用要素之间的平面距离。 这是默认设置。
  • GEODESIC将使用要素之间的测地线距离。

椭球体方法仅支持点作为输入要素。

String
in_barriers
(可选)

定义障碍的数据集。

障碍可以是折线或面要素的要素图层。

Feature Layer

返回值

名称说明数据类型
out_raster

输出核密度栅格。

总为浮点栅格。

Raster

代码示例

KernelDensity 示例 1(Python 窗口)

此示例从点 shapefile 计算平滑的密度栅格。

from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
outKDens = KernelDensity("rec_sites.shp", "", 45, 1200, "SQUARE_KILOMETERS",
                         "", "GEODESIC")
outKDens.save("C:/sapyexamples/output/KD_out.tif")
KernelDensity 示例 2(独立脚本)

此示例从点 shapefile 计算平滑的密度栅格。

# Name: KernelDensity_Ex_02.py
# Description: Calculates the ozone concentration pattern divided by
#              Sierra Nevada Mountain in California
#              based on the point samples using a kernel function to
#              fit a smoothly tapered surface.
# 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 = "ozone_california.shp"
populationField = "OZONE"
cellSize = 60
searchRadius = 2500
inBarriers = "SierraNevada.shp"

# Execute KernelDensity
outKernelDensity = KernelDensity(inFeatures, populationField, cellSize, searchRadius,
                                 "SQUARE_KILOMETERS", "DENSITIES", "PLANAR", inBarriers)

# Save the output 
outKernelDensity.save("C:/sapyexamples/output/KD_ozone_california.tif")