需要 Spatial Analyst 许可。
插图
使用方法
搜索半径(Python 中的 search_radius)参数值越大,生成的密度栅格越平滑且概化程度越高。值越小,生成的栅格所显示的信息越详细。
计算密度时,仅考虑落入邻域范围内的点或线段。如果没有点或线段落入特定像元的邻域范围内,则为该像元分配 NoData。
Population 字段(Python 中的 population_field)中的值过大或过小都会使结果看起来并不直观。如果 population 字段的平均值远大于 1(例如,城市人口),则默认搜索半径可能会非常小,导致在输入点周围生成很小的环。如果 population 字段的平均值远小于 1,则计算的搜索半径看起来可能会非常大。在这些情况下,您可输入自己的搜索半径。
输出像元大小可以通过数值进行定义,也可以从现有栅格数据集获取。如果没有将像元大小明确指定为参数值,则将从像元大小环境获取相应值(前提是已指定环境)。如果未指定参数像元大小和环境像元大小,但已设置捕捉栅格环境,则将使用捕捉栅格的像元大小。如果未指定任何内容,则像元大小会通过使用范围的宽度或高度中的较小值除以 250 来计算,其中范围位于在环境中指定的输出坐标系内。
如果使用数值指定像元大小,则工具会直接将其用于输出栅格。
如果使用栅格数据集指定像元大小,则该参数将显示栅格数据集的路径而不是像元大小的值。如果数据集的空间参考与输出空间参考相同,则栅格数据集的像元大小将直接用于分析。如果数据集的空间参考与输出空间参考不同,则将基于所选的像元大小投影方法进行投影。
默认搜索半径是基于空间配置和输入点数计算的。此方法可更正空间异常值(距离其他输入点非常远的点),这样将不会导致搜索半径过大。
如果相对于要素(点间距离或线段长度,取决于要素类型)来说,面积单位比例因子的单位较小,则输出值可能会很小。要获取较大的值,请选择单位较大的面积单位比例因子(例如,平方千米与平方米)。
输出像元值(Python 中的 out_cell_values)参数可指定输出栅格值表示的内容。如果选择密度值,则这些值将表示每个像元每单位面积的核密度值。如果选择预期计数,则这些值将表示每像元面积的核密度。根据密度值计算计数的公式为:计数 = 密度 × 面积。
如果要在投影准确保留了正确距离和面积的局部比例上执行分析,则可使用方法(Python 中的 method)参数中的平面选项(Python 中的 PLANAR)。如果要以区域或大比例执行分析(例如,使用 Web Mercator 或任何地理坐标系),则可使用测地线(Python 中的 GEODESIC)选项。这种方法考虑到椭球体的曲率,并可以正确处理两极和国际日期变更线附近的数据。
有关适用于此工具的地理处理环境的详细信息,请参阅分析环境和 Spatial Analyst。
语法
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 值的字段。population 字段表示遍布于用来创建连续表面的景观内的计数或数量。 population 字段的值可以是整型或浮点型。 以下列出的是该字段的选项和默认特性。
| Field |
cell_size (可选) | 将创建的输出栅格的像元大小。 此参数可以通过数值进行定义,也可以从现有栅格数据集获取。如果未将像元大小明确指定为参数值,则将使用环境像元大小值(如果已指定);否则,将使用其他规则通过其他输出计算像元大小。有关详细信息,请参阅用法部分。 | Analysis Cell Size |
search_radius (可选) | 在其范围内计算密度的搜索半径。单位基于输出空间参考投影的线性单位。 例如,如果单位为米,若要包含一英里邻域内的所有要素,可将搜索半径设置为 1609.344(1 英里 = 1609.344 米)。 使用“Silverman 经验规则”(Silverman,1986 年版)的空间变量专为输入数据集计算默认搜索半径,该变量足够强大,可避免空间异常值(距离其余点太远的点)。有关该算法的描述,请参阅使用提示。 | Double |
area_unit_scale_factor (可选) | 输出密度值的面积单位。 基于输出空间参考的线性单位选择默认单位。若要转换密度输出,可将此单位更改为合适的单位。线密度值同时转换长度和面积单位。 未指定输出空间参考的情况下,输出空间参考与输入要素类相同。默认输出密度单位通过输出空间参考的线性单位确定,如下所示。如果输出线性单位是米,输出面积密度单位将设置为平方千米,输出平方千米(点要素)或千米每平方千米(折线要素)。如果输出线性单位是英尺,输出面积密度单位将设置为平方英里。 如果输出单位不是英尺和米,输出面积密度单位将设置为平方地图单位。即,输出密度单位为输出空间参考的线性单位的平方。例如,如果输出线性单位是厘米,输出面积密度单位将是平方地图单位,即平方厘米。如果输出线性单位是千米,输出面积密度单位将是平方地图单位,即平方千米。 可用选项及相应的输出密度单位如下:
| String |
out_cell_values (可选) | 指定输出栅格中的值的含义。
由于像元值链接到指定像元大小,因此无法将生成的栅格重新采样为不同像元大小。 | String |
method (可选) | 指定将使用地平(平面)方法还是椭球体上的最短路径(测地线)方法。
测地线方法仅支持作为输入要素的点。 | String |
in_barriers (可选) | 定义障碍的数据集。 障碍可以是折线或面要素的要素图层。 此参数仅在 method 参数设置为 PLANAR 时受支持。 | Feature Layer |
返回值
名称 | 说明 | 数据类型 |
out_raster | 输出核密度栅格。 总为浮点栅格。 | Raster |
代码示例
本示例根据点 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")
本示例根据点 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")
许可信息
- Basic: 需要 Spatial Analyst
- Standard: 需要 Spatial Analyst
- Advanced: 需要 Spatial Analyst