时空核密度 (Spatial Analyst)

需要 Spatial Analyst 许可。

摘要

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

了解有关时空核密度的工作原理的更多信息

使用情况

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

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

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

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

  • 该工具以 NetCDF 格式或云栅格格式 (CRF) 生成输出栅格。 您为输出栅格提供的位置和名称决定了它的创建格式。 对于输出栅格参数值,使用 .nc 扩展名创建 netCDF 格式的输出。 使用 .crf 扩展名来创建输出 CRF 栅格。 默认情况下,该工具将输出 CRF 栅格。

  • 您可以使用可选的输出体素图层参数创建体素图层输出。 仅当输出栅格参数值设置为使用 .nc 扩展名创建 NetCDF 输出时,此参数才可用。 如果您尝试在输出栅格参数中使用 CRF 栅格的 .crf 扩展名指定体素图层输出,则该工具将生成错误消息并且无法运行。

  • 如果该工具在本地场景中运行,该场景与输入要素具有相同的水平和垂直坐标系,则会将体素图层添加至场景,以便以交互方式探索结果。 如果未定义坐标系,则会出现一条通知,指出坐标系未知。 您还可以使用创建多维体素图层工具或者添加多维体素图层对话框将输出 NetCDF 栅格添加为体素图层。

    可以使用复制栅格工具将输出 netCDF 栅格转换为多维栅格。 您也可以分别使用创建 NetCDF 要素图层工具或创建 NetCDF 栅格图层工具,将其作为要素图层或栅格图层添加至地图。

    生成的体素图层是一个临时图层,除非使用保存至图层文件工具保存,否则不会保留该图层。 使用创建体素场景图层内容工具,根据体素图层输入创建场景图层包(.slpk 文件)。

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

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

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

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

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

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

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

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

  • 参考:

    Härdle, W. K., Müller, M, Sperlich, S., and Werwatz, A. Nonparametric and semiparametric models (Vol. 1). Berlin: Springer, 2004.

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

    Nakaya, T., and Yano, K. "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), 2010, 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
输出体素图层
(可选)

基于存储在输出 netCDF 栅格中的体积数据的输出体素图层。

仅当将输出栅格参数设置为使用 .nc 扩展名创建 netCDF 栅格时,才可创建此输出类型。

Voxel Layer

返回值

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

输出内核密度多维栅格数据集。

文件扩展名决定了输出的格式。 使用 .crf 来创建 CRF 栅格。 使用 .nc 来创建 netCDF 栅格。 默认输出是 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}, {out_voxel_layer})
名称说明数据类型
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_voxel_layer
(可选)

基于存储在输出 netCDF 栅格中的体积数据的输出体素图层。

仅当 out_raster 参数值设置为使用 .nc 扩展名创建 netCDF 栅格时,才可创建此输出类型。

Voxel Layer

返回值

名称说明数据类型
out_raster

输出内核密度多维栅格数据集。

文件扩展名决定了输出的格式。 使用 .crf 来创建 CRF 栅格。 使用 .nc 来创建 netCDF 栅格。 默认输出是 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")

许可信息

  • Basic: 需要 Spatial Analyst
  • Standard: 需要 Spatial Analyst
  • Advanced: 需要 Spatial Analyst

相关主题