时空核密度 (空间分析)

摘要

将核密度计算从分析输入特征的相对位置和大小扩展到时间和深度(海拔)等其他维度。 由此产生的输出结果利用多重核函数识别单位面积的大小,从而为每个输入点拟合出一个平滑的锥形曲面。

使用情况

  • 您必须为高程字段Python 中的 elevation_field)参数或时间字段Python 中的 time_field)参数或两者都提供一个值。 虽然该工具最初会将两者都显示为必填项,但一旦提供了其中一项的值,另一项就会变成可选项。

    核函数是根据提供的参数值定义的。 当提供高程字段参数值时,内核将沿方向(z)轴扩展。 当提供时间字段参数值时,内核将沿方向(t)轴扩展。 当提供这两个值时,核将沿 z 轴和 t 轴扩展。

    如果只提供其中一个参数值,输出将是三维栅格。 如果同时提供两个参数值,输出将是四维栅格。

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

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

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

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

  • 生成的值Python 中的 resultant_values)参数可指定输出栅格值表示的内容。 如果已经指明密度值Python 中的 DENSITIES),则这些值将表示每个像元每单位面积的核密度值。 如果指明预期计数Python 中的 EXPECTED_COUNTS),则这些值将表示每像元面积的核密度。

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

  • 计算密度时,仅考虑落入邻域范围内的点。 如果没有点落入特定像元的邻域范围内,则该像元会被赋予 NoData。

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

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

  • 参考:

    Hu, Y., Wang, F., Guin, C., & Zhu, H. (2018). "A spatio-temporal kernel density estimation framework for predictive crime hotspot mapping and evaluation." Applied geography, 99, 89-97.

    Nakaya, T., & Yano, K. (2010). Visualising crime clusters in a space‐time cube: An exploratory data analysis approach using space time kernel density estimation and scan statistics. Transactions in GIS, 14(3), 223-239.

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

参数

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

密度在计算范围内的输入点要素。

Feature Layer
总体字段

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

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

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

Field
高程字段
(可选)

表示各要素的高程值的字段。

高程字段中的值可为整型或浮点型。

使用 Empty 支持随时间变化的三维内核密度。

对于 3D 要素,将在字段列表中添加一个伪字段,Shape.Z

Field
高程字段单位
(可选)

输入高程字段值所使用的度量单位。 默认设置为米。

使用适当的单位来表示高程字段参数值中的数值。

  • 英寸将使用英寸作为单位。
  • 英尺将使用英尺作为单位。
  • 将使用码作为单位。
  • 英里(美制)将使用美制英里作为单位。
  • 海里将使用海里作为单位。
  • 毫米将使用毫米作为单位。
  • 厘米将使用厘米作为单位。
  • 将使用米作为单位。
  • 千米将使用千米作为单位。
  • 分米将使用分米作为单位。
String
时间字段
(可选)

表示各要素的时间值的字段。

Field
像元大小
(可选)

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

值可以通过数值进行定义,也可以从现有栅格数据集获取。 如果没有提供像元大小作为参数值,则将使用指定的环境像元大小值;否则,将使用附加规则从其他输入值计算像元大小。 详情请查看工具用法。

Analysis Cell Size
搜索半径(x 和 y)
(可选)

在 x、y 平面上计算密度的搜索半径。

定义使用的单位。 例如,如果要包含 1 英里(单位为米)范围内的所有要素,可将搜索半径设置为 1609.344(1 英里 = 1609.344 米)。

Linear Unit
搜索半径 (z)
(可选)

计算密度的 Z 方向垂直搜索距离。 这个垂直距离将用于沿 z 轴向上和向下搜索要素。

定义使用的单位。

Linear Unit
搜索时间窗口 (t)
(可选)

计算密度的搜索时间范围。

定义使用的单位。

Time Unit
生成的值
(可选)

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

由于输出像元值链接到指定像元大小,因此无法将生成的栅格重新采样为不同像元大小。

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

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

  • 平面将使用要素之间的平面距离。 这是默认设置。
  • 测地线将使用要素之间的测地线距离。
String
最小高程
(可选)

用于多维栅格输出的起始高程。

Double
最大高程
(可选)

用于多维栅格输出的结束高程。

Double
高程间隔
(可选)

多维栅格输出中切片之间的高程间隔。

Double
高程单位
(可选)

指定用于多维栅格输出的高程间隔单位。 默认单位为米。

  • 英寸将使用英寸作为单位。
  • 英尺将使用英尺作为单位。
  • 将使用码作为单位。
  • 英里(美制)将使用美制英里作为单位。
  • 海里将使用海里作为单位。
  • 毫米将使用毫米作为单位。
  • 厘米将使用厘米作为单位。
  • 将使用米作为单位。
  • 千米将使用千米作为单位。
  • 分米将使用分米作为单位。
String
开始时间
(可选)

用于多维栅格输出的起始时间。

Date
结束时间
(可选)

用于多维栅格输出的结束时间。

Date
时间间隔
(可选)

多维栅格输出中切片之间的时间间隔。

Double
时间间隔单位
(可选)

指定用于多维栅格输出的时间间隔单位。 默认值为日。

  • 时间间隔单位为秒。
  • 时间间隔单位为分。
  • 小时时间间隔单位为时。
  • 时间间隔单位为天。
  • 时间间隔单位为周。
String

返回值

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

以云栅格格式(.crf)输出内核密度多维栅格数据集。 目前尚不支持其他输出格式。

总为浮点栅格。

Raster

SpaceTimeKernelDensity(in_features, population_field, {elevation_field}, {elevation_field_unit}, {time_field}, {cell_size}, {kernel_search_radius_xy}, {kernel_search_radius_z}, {kernel_search_time_window}, {resultant_values}, {method}, {min_elevation}, {max_elevation}, {elevation_interval}, {elevation_unit}, {start_time}, {end_time}, {time_interval}, {time_interval_unit})
名称说明数据类型
in_features

密度在计算范围内的输入点要素。

Feature Layer
population_field

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

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

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

Field
elevation_field
(可选)

表示各要素的高程值的字段。

高程字段中的值可为整型或浮点型。

使用 '' 支持随时间变化的三维内核密度。

对于 3D 要素,将在字段列表中添加一个伪字段,Shape.Z

Field
elevation_field_unit
(可选)

输入高程字段值所使用的度量单位。 默认设置为米。

使用适当的单位来表示 elevation_field 参数值中的数值。

  • INCH将使用英寸作为单位。
  • FOOT将使用英尺作为单位。
  • YARD将使用码作为单位。
  • MILE_US将使用美制英里作为单位。
  • NAUTICAL_MILE将使用海里作为单位。
  • MILLIMETER将使用毫米作为单位。
  • CENTIMETER将使用厘米作为单位。
  • METER将使用米作为单位。
  • KILOMETER将使用千米作为单位。
  • DECIMETER将使用分米作为单位。
String
time_field
(可选)

表示各要素的时间值的字段。

Field
cell_size
(可选)

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

值可以通过数值进行定义,也可以从现有栅格数据集获取。 如果没有提供像元大小作为参数值,则将使用指定的环境像元大小值;否则,将使用附加规则从其他输入值计算像元大小。 详情请查看工具用法。

Analysis Cell Size
kernel_search_radius_xy
(可选)

在 x、y 平面上计算密度的搜索半径。

定义使用的单位。 例如,如果要包含 1 英里(单位为米)范围内的所有要素,可将搜索半径设置为 1609.344(1 英里 = 1609.344 米)。

Linear Unit
kernel_search_radius_z
(可选)

计算密度的 Z 方向垂直搜索距离。 这个垂直距离将用于沿 z 轴向上和向下搜索要素。

定义使用的单位。

Linear Unit
kernel_search_time_window
(可选)

计算密度的搜索时间范围。

定义使用的单位。

Time Unit
resultant_values
(可选)

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

由于输出像元值链接到指定像元大小,因此无法将生成的栅格重新采样为不同像元大小。

  • DENSITIES输出值表示为每个像元计算的每单位面积的密度值。 这是默认设置。
  • EXPECTED_COUNTS输出值表示所计算的每单位面积的密度值。
String
method
(可选)

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

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

用于多维栅格输出的起始高程。

Double
max_elevation
(可选)

用于多维栅格输出的结束高程。

Double
elevation_interval
(可选)

多维栅格输出中切片之间的高程间隔。

Double
elevation_unit
(可选)

指定用于多维栅格输出的高程间隔单位。 默认单位为米。

  • INCH将使用英寸作为单位。
  • FOOT将使用英尺作为单位。
  • YARD将使用码作为单位。
  • MILE_US将使用美制英里作为单位。
  • NAUTICAL_MILE将使用海里作为单位。
  • MILLIMETER将使用毫米作为单位。
  • CENTIMETER将使用厘米作为单位。
  • METER将使用米作为单位。
  • KILOMETER将使用千米作为单位。
  • DECIMETER将使用分米作为单位。
String
start_time
(可选)

用于多维栅格输出的起始时间。

Date
end_time
(可选)

用于多维栅格输出的结束时间。

Date
time_interval
(可选)

多维栅格输出中切片之间的时间间隔。

Double
time_interval_unit
(可选)

指定用于多维栅格输出的时间间隔单位。 默认值为日。

  • SECOND时间间隔单位为秒。
  • MINUTE时间间隔单位为分。
  • HOUR时间间隔单位为时。
  • DAY时间间隔单位为天。
  • WEEK时间间隔单位为周。
String

返回值

名称说明数据类型
out_raster

以云栅格格式(.crf)输出内核密度多维栅格数据集。 目前尚不支持其他输出格式。

总为浮点栅格。

Raster

代码示例

SpaceTimeKernelDensity 示例 1(Python 窗口)

本例使用形状文件计算平滑的时间核密度。

from arcpy import env  
from arcpy.sa import * 

env.workspace = "C:/sapyexamples/data" 
STKD_out_raster = SpaceTimeKernelDensity("WOD_subset.shp", "Salinity", "Z", "Meter",
                                         "Time", "0.001", resultant_values="Densities",
                                         method="Planar", elevation_unit="Meter")  

STKD_out_raster.save("C:/sapyexamples/output/STKD_out.crf")
SpaceTimeKernelDensity 示例 2(独立脚本)

本例使用多维数据集计算平滑的时间核密度。

## Name: SpaceTimeKernelDensity_Ex_standalone.py  
## Description: Calculate spatial temporal salinity concentration using a multidimensional dataset 
## Requirements: Spatial Analyst Extension 
 
## Import system modules 
import arcpy  
from arcpy import env   
from arcpy.sa import *

## Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")
 
## Set environment settings 
env.workspace = r" C:\STKD_Test"
# To allow overwriting outputs change overwriteOutput option to True. 
env.overwriteOutput = False 
  
## Set local variables 
in_features = "WOD_subset"  
Population_Field = "Salinity"  
Elevation_Field = "Z"  
Elevation_Field_Unit = "Meter"  
Time_Field = "Time"  
Cell_Size = "30"  
Resultant_values = "Densities"  
Method = "Planar" 
Elevation_Unit = "Meter"  
  
## Execute: Space Time Kernel Density  
STKD_out_raster = SpaceTimeKernelDensity(in_features, Population_Field,   
                                Elevation_Field, Elevation_Field_Unit,   
                                Time_Field, Cell_Size,   
                                resultant_values=Resultant_values,   
                                method=Method, 
                                elevation_unit=Elevation_Unit) 
  
## Save the output 
STKD_out_raster.save("STKD_test.crf")