协同区位分析 (空间统计)

摘要

使用协同区位商统计测量两类点要素之间的空间关联或区位协同的局部模式。

了解有关协同区位分析工作原理的详细信息

插图

协同区位分析逻辑示意图

使用情况

  • 该工具仅接受点要素。要分析的类别可以位于同一数据集或两个单独的数据集中。也可以将两个单独的数据集视为类别。例如,对于包含许多类型餐厅的点数据集,只能将其视为类别 RESTAURANTS;对于包含许多类型犯罪的另一个点数据集,只能将其视为类别 CRIMES。

  • 该工具将针对感兴趣类别的每个要素确定,与类别的整体空间分布相比,相邻类别的要素出现在其邻域内的可能性更大还是更小。例如,对于类别 A 的每个要素,生成的局部协同区位商 (LCLQ) 值为 1 时,意味着很可能与预期一样相邻要素为类别 B。LCLQ 值大于 1 时,意味着相邻要素为 B 的可能性更大(与随机相比),而 LCLQ 值小于 1 时,意味着类别 A 的要素的相邻要素为类别 B 点的可能性不大(与随机分布相比)。

    注:

    此分析的协同区位关系不对称。将类别 A 与类别 B 进行比较时计算的协同区位商值将不同于将类别 B 与类别 A 进行比较时计算的协同区位商值。

    此外,如果邻域中存在类别 C,则与只有类别 A 和 B 相比,生成的协同区位商将有所不同。根据要询问的问题,可能需要创建数据子集以仅包含类别 A 和 B。但是,在创建子集时,您将失去有关存在的其他类别的信息。如果您确定某一类别的出现完全不受另一类别出现的影响,则选择并创建数据子集至关重要。

  • 空间关系可以使用距离范围最近的 K 个相邻要素或空间权重矩阵文件通过邻域类型参数进行定义。

  • 可以使用空间时间窗口来分析数据,方法是指定感兴趣的时间字段相邻类别的时间字段时间关系类型参数。使用空间时间窗口,可控制哪些要素包含在所分析的邻域中。在空间和时间上彼此相邻的要素将一起分析,因为所有要素关系都是相对于目标要素的位置和时间戳进行评估的。也可以指定该工具是在目标特征之前还是之后搜索特征,或者可以创建一个时间跨度,在该跨度内该工具将在要分析的目标特征之前和之后搜索特征。

  • 置换检验次数参数用于计算 p 值。选择置换检验次数时,需要兼顾精度和所需增加的处理时间。默认值为 99 次置换检验,但建议增加最终分析结果的置换检验次数。

  • 要计算全局协同区位商,也可以通过为全局关系输出表参数指定路径。该表包含区位商,因此可以分析数据集中所有类别之间的空间关联测量值。从而可以探索数据中的其他关系,因为可能会在全局范围内找到其他高度区位协同的类别。如果您确实找到了其他高度区位协同的类别,则可以通过以下方式扩展分析:通过使用感兴趣的类别再次运行该工具来探索该关系的局部性质;或者如果您认为高度区位协同的类别会在您的结果中引入不必要的偏差,则通过从分析中移除这些类别再次运行该工具。

  • 该工具的输出是一张地图,其中显示的每个感兴趣的输入要素按照其与输入相邻要素是明显区位协同还是相互隔离进行符号化。该工具会向输出要素添加字段,包括计算的局部协同区位商、p 值、用于符号化的 LCLQ 立方图格和 LCLQ 类型。可以指定可选的全局关系输出表,以报告感兴趣字段参数中所有类别和包含相邻类别的字段参数中存在的所有类别之间的全局协同区位商。

  • 此工具支持并行处理,默认情况下使用 50% 的可用处理器。处理器数目可以通过使用并行处理因子环境增加或减少。

参数

标注说明数据类型
输入类型

指定感兴趣的输入要素是来自包含指定类别的同一数据集、包含指定类别的不同数据集还是将被视为其自身类别的不同数据集(例如,一个数据集包含表示猎豹的所有点,另一个数据集包含表示瞪羚的所有点)。

  • 单个数据集要分析的类别存在于单个数据集的某个字段中。
  • 两个数据集要分析的类别存在于单独数据集的多个字段中。
  • 不含类别的数据集将分析表示两个类别的两个单独数据集。
String
感兴趣的输入要素

包含具有代表性类别的点的要素类。

Feature Layer
输出要素

该输出要素类包含所有感兴趣的输入要素并具有包含生成的局部协同区位商、符号系统立方图格和 p 值的字段。

Feature Class
感兴趣字段
(可选)

包含要分析的一个或多个类别的字段。

Field
感兴趣的时间字段
(可选)

具有每个要素的可选时间戳的日期字段,以供使用空间时间窗口分析点。在空间和时间上彼此相邻的要素将被视为相邻要素,并将一起进行分析。

Field
感兴趣类别
(可选)

分析的基本类别。该工具将针对每个感兴趣类别值确定,基本类别被相邻类别吸引或与之区位协同的程度。

String
输入相邻要素
(可选)

该输入要素类包含具有要比较的类别的点。

Feature Layer
包含相邻类别的字段
(可选)

来自输入相邻要素参数的字段,包含要比较的类别。

Field
相邻要素的时间字段
(可选)

具有每个要素的时间戳的日期字段,以供使用空间时间窗分析点。在空间和时间上彼此相邻的要素将被视为相邻要素,并将一起进行分析。

Field
相邻类别
(可选)

分析的相邻类别。该工具将确定感兴趣类别相邻类别吸引或与之相互隔离的程度。

String
邻域类型

指定要素空间关系的定义方式。

  • 距离范围将对邻近要素环境中的每个要素进行分析。指定临界距离(由距离范围参数指定)内的相邻要素的权重为 1,并对目标要素的计算产生影响。指定临界距离之外的相邻要素的权重为零,并且不会对目标要素的计算产生任何影响。
  • K - 最近邻将最近的 k 个要素包含在分析中作为相邻要素。相邻要素数由相邻要素数参数指定。这是默认设置。
  • 通过文件获取空间权重当将单个数据集用作输入类型时,可以通过指定的空间权重矩阵文件定义空间关系。指向空间权重文件的路径由权重矩阵文件参数指定。
String
相邻要素的数目
(可选)

每个要素周围用于测试类别之间的局部关系的相邻要素数。如果未指定任何值,则将使用默认值 8。提供的值必须足够大,才能检测要素之间的关系,但同时要小到足以识别局部模式。

Long
距离范围
(可选)

邻域大小是每个要素的恒定或固定距离。此距离内的所有要素都将用于测试类别之间的局部关系。如果未提供任何值,则使用的距离将是每个要素至少具有八个相邻要素的平均距离。

Linear Unit
权重矩阵文件
(可选)

包含权重(其定义要素间的空间关系以及可能的时态关系)的文件的路径。

File
时间关系类型
(可选)

指定要素时态关系的定义方式。

  • 之前时间窗口将针对每个感兴趣的输入要素值向后延长时间。相邻要素的日期/时间戳必须发生在感兴趣要素的日期/时间戳之前才能包含在分析中。这是默认设置。
  • 之后时间窗口将针对每个感兴趣的输入要素值向前延长时间。相邻要素的日期/时间戳必须发生在感兴趣要素的日期/时间戳之后才能包含在分析中。
  • 跨度时间窗口将针对每个感兴趣的输入要素值同时向前和向后延长时间。将在分析中包含日期/时间戳发生在感兴趣要素的日期/时间戳时间步长间隔值之前或之后的相邻要素。例如,如果时间步长间隔参数设置为 1 周,则窗口将在目标要素 1 周之前和 1 周之后进行查找。
String
时间步长间隔
(可选)

表示构成时间窗口的时间单位数的整数和测量单位。

Time Unit
置换检验次数
(可选)

用于创建参考分布的置换检验次数。选择置换检验次数时,需要兼顾精度和所需增加的处理时间。根据偏好选择速度或精度。结果越可靠越精确计算所花费的时间就会越长。

  • 99分析将使用 99 次置换检验。如果置换检验次数为 99,则可能的最小伪 p 值为 0.02,其他所有伪 p 值将是该值的倍数。这是默认设置。
  • 199分析将使用 199 次置换检验。如果置换次数为 199,则可能的最小伪 p 值为 0.01,其他所有伪 p 值将是该值的数倍。
  • 499分析将使用 499 次置换检验。如果置换次数为 499,则可能的最小伪 p 值为 0.004,其他所有伪 p 值将是该值的数倍。
  • 999分析将使用 999 次置换检验。如果置换次数为 999,则可能的最小伪 p 值为 0.002,其他所有伪 p 值将是该值的数倍。
  • 9999分析将使用 9999 次置换检验。如果置换检验次数为 9999,则可能的最小伪 p 值为 0.0002,其他所有伪 p 值将是该值的数倍。
Long
局部权重方案
(可选)

指定用于提供空间加权的核类型。核用于定义每个要素与其邻域内其他要素的关联方式。

  • 双平方将根据距最远相邻要素或距离范围边的距离对要素进行加权,并且将值为 0 的权重分配给指定邻域以外的任何要素。
  • 高斯函数将根据距最远相邻要素或距离范围边的距离对要素进行加权,但与双平方选项相比,下降速度更快。权重 0 将会分配给指定邻域外的任何要素。这是默认设置。
  • 不应用加权方案,并且邻域内的所有要素的权重均为 1 且贡献均等。邻域外的所有要素的权重均为 0。
String
全局关系输出表
(可选)

包含感兴趣字段参数中所有类别和包含相邻类别的字段参数中所有类别之间的全局协同区位商的表格。此表可帮助您确定要分析的局部类别。

如果将不含类别的数据集用作输入类型参数值,则将计算每个数据集和各个数据集之间的全局协同区位商。

Table

arcpy.stats.ColocationAnalysis(input_type, in_features_of_interest, output_features, {field_of_interest}, {time_field_of_interest}, {category_of_interest}, {input_feature_for_comparison}, {field_for_comparison}, {time_field_for_comparison}, {category_for_comparison}, neighborhood_type, {number_of_neighbors}, {distance_band}, {weights_matrix_file}, {temporal_relationship_type}, {time_step_interval}, {number_of_permutations}, {local_weighting_scheme}, {output_table})
名称说明数据类型
input_type

指定 in_features_of_interest 参数值是来自包含指定类别的同一数据集、包含指定类别的不同数据集还是将被视为其自身类别的不同数据集(例如,一个数据集包含表示猎豹的所有点,另一个数据集包含表示瞪羚的所有点)。

  • SINGLE_DATASET要分析的类别存在于单个数据集的某个字段中。
  • TWO_DATASETS要分析的类别存在于单独数据集的多个字段中。
  • DATASETS_WITHOUT_CATEGORIES将分析表示两个类别的两个单独数据集。
String
in_features_of_interest

包含具有代表性类别的点的要素类。

Feature Layer
output_features

该输出要素类包含所有 in_features 参数值并具有表示局部协同区位商分数和 p 值的字段。

Feature Class
field_of_interest
(可选)

包含要分析的一个或多个类别的字段。

Field
time_field_of_interest
(可选)

具有每个要素的可选时间戳的日期字段,以供使用空间时间窗口分析点。在空间和时间上彼此相邻的要素将被视为相邻要素,并将一起进行分析。

Field
category_of_interest
(可选)

分析的基本类别。该工具将针对每个 category_of_interest 值确定,基本类别被 neighboring_category 参数值吸引或与之区位协同的程度。

String
input_feature_for_comparison
(可选)

该输入要素类包含具有要比较的类别的点。

Feature Layer
field_for_comparison
(可选)

来自 input_feature_for_comparison 参数的字段,包含要比较的类别。

Field
time_field_for_comparison
(可选)

具有每个要素的时间戳的日期字段,以供使用空间时间窗分析点。在空间和时间上彼此相邻的要素将被视为相邻要素,并将一起进行分析。

Field
category_for_comparison
(可选)

分析的相邻类别。该工具将确定 category_of_interest 参数值被 category_for_comparison 值吸引或与之相互隔离的程度。

String
neighborhood_type

指定要素空间关系的定义方式。

  • DISTANCE_BAND将对邻近要素环境中的每个要素进行分析。指定临界距离(由 distance_band 参数指定)内的相邻要素的权重为 1,并对目标要素的计算产生影响。指定临界距离之外的相邻要素的权重为零,并且不会对目标要素的计算产生任何影响。
  • K_NEAREST_NEIGHBORS将最近的 k 个要素包含在分析中作为相邻要素。相邻要素数由 number_of_neighbors 参数指定。相邻要素的影响基于距最远相邻要素的距离进行加权。这是默认设置。
  • GET_SPATIAL_WEIGHTS_FROM_FILESINGLE_DATASET 用作 input_type 时,可以通过指定的空间权重矩阵文件定义空间关系。相邻要素的影响基于距最远相邻要素的距离进行加权。指向空间权重文件的路径由 weights_matrix_file 参数指定。
String
number_of_neighbors
(可选)

每个要素周围用于测试类别之间的局部关系的相邻要素数。如果未指定任何值,则将使用默认值 8。提供的值必须足够大,才能检测要素之间的关系,但同时要小到足以识别局部模式。

Long
distance_band
(可选)

邻域大小是每个要素的恒定或固定距离。此距离内的所有要素都将用于测试类别之间的局部关系。如果未提供任何值,则使用的距离将是每个要素至少具有八个相邻要素的平均距离。

Linear Unit
weights_matrix_file
(可选)

包含权重(其定义要素间的空间关系以及可能的时态关系)的文件的路径。

File
temporal_relationship_type
(可选)

指定要素时态关系的定义方式。

  • BEFORE时间窗口将针对每个 in_features_of_interest 值向后延长时间。相邻要素的日期/时间戳必须发生在感兴趣要素的日期/时间戳之前才能包含在分析中。这是默认设置。
  • AFTER时间窗口将针对每个 in_features_of_interest 值向前延长时间。相邻要素的日期/时间戳必须发生在感兴趣要素的日期/时间戳之后才能包含在分析中。
  • SPAN时间窗口将针对每个 in_features_of_interest 值向前和前后延长时间。将在分析中包含日期/时间戳发生在感兴趣要素的日期/时间戳 time_step_interval 值之前或之后的相邻要素。例如,如果 time_step_interval 参数设置为 1 周,则窗口将在目标要素 1 周之前和 1 周之后进行查找。
String
time_step_interval
(可选)

表示构成时间窗口的时间单位数的整数和测量单位。

Time Unit
number_of_permutations
(可选)

用于创建参考分布的置换检验次数。选择置换检验次数时,需要兼顾精度和所需增加的处理时间。根据偏好选择速度或精度。结果越可靠越精确计算所花费的时间就会越长。

  • 99分析将使用 99 次置换检验。如果置换检验次数为 99,则可能的最小伪 p 值为 0.02,其他所有伪 p 值将是该值的倍数。这是默认设置。
  • 199分析将使用 199 次置换检验。如果置换次数为 199,则可能的最小伪 p 值为 0.01,其他所有伪 p 值将是该值的数倍。
  • 499分析将使用 499 次置换检验。如果置换次数为 499,则可能的最小伪 p 值为 0.004,其他所有伪 p 值将是该值的数倍。
  • 999分析将使用 999 次置换检验。如果置换次数为 999,则可能的最小伪 p 值为 0.002,其他所有伪 p 值将是该值的数倍。
  • 9999分析将使用 9999 次置换检验。如果置换检验次数为 9999,则可能的最小伪 p 值为 0.0002,其他所有伪 p 值将是该值的数倍。
Long
local_weighting_scheme
(可选)

指定用于提供空间加权的核类型。核用于定义每个要素与其邻域内其他要素的关联方式。

  • BISQUARE将根据距最远相邻要素或距离范围边的距离对要素进行加权,并且将值为 0 的权重分配给指定邻域以外的任何要素。
  • GAUSSIAN将根据距最远相邻要素或距离范围边的距离对要素进行加权,但与双平方选项相比,下降速度更快。权重 0 将会分配给指定邻域外的任何要素。这是默认设置。
  • NONE不应用加权方案,并且邻域内的所有要素的权重均为 1 且贡献均等。邻域外的所有要素的权重均为 0。
String
output_table
(可选)

包含感兴趣字段参数中所有类别和包含相邻类别的字段参数中所有类别之间的全局协同区位商的表格。此表可帮助您确定要分析的局部类别。

如果将不含类别的数据集用作输入类型参数值,则将计算每个数据集和各个数据集之间的全局协同区位商。

Table

代码示例

ColocationAnalysis 示例 1(Python 窗口)

以下 Python 窗口脚本演示了如何使用 ColocationAnalysis 函数。


import arcpy
arcpy.env.workspace = r"C:\Analysis"
# Two categories from the same categorical field.
# Find the colocation of elementary schools and middle schools
arcpy.stats.ColocationAnalysis("SINGLE_DATASET", r"Colocation.gdb\Schools",
                               r"Outputs.gdb\School_Colocation", "Facility_Type", None,
                               "Elementary", None, None, None, "Middle", "K_NEAREST_NEIGHBORS",
                               8, None, None, "BEFORE", None, 99, "BISQUARE",
                               r"Outputs.gdb\Global_School_Colocation")
# Categories from different datasets without categories
# Find the colocation of elementary schools and hospitals
arcpy.stats.ColocationAnalysis("DATASETS_WITHOUT_CATEGORIES", r"Colocation.gdb\Schools",
                               r"Outputs.gdb\Schools_Hospitals", None, None, '',
                               r"Colocation.gdb\Hospitals", None, None, '', "DISTANCE_BAND",
                               None, "30 Kilometers", None, "BEFORE", None, 199, "GAUSSIAN",
                               None)
# Categories from two datasets
# Find the colocation of elementary schools and hospitals
arcpy.stats.ColocationAnalysis("TWO_DATASETS", r"Colocation.gdb\Schools",
                               r"Outputs.gdb\Elementary_Hospitals", "Facility_Type", None,
                               "Elementary", r"Colocation.gdb\Hospitals", None, None, '',
                               "K_NEAREST_NEIGHBORS", 15, None, None, "BEFORE", None, 499,
                               "NONE", None)
ColocationAnalysis 示例 2(独立脚本)

以下独立 Python 脚本演示了如何使用 ColocationAnalysis 函数。

# Analyze the spatial relationship (colocation) between elementary school locations and hospital locations
# Two categories from the same categorical field.
# Find the colocation of elementary schools and  middle schools
intype = "SINGLE_DATASET"
infc_interest = r"Colocation.gdb\Schools"
outfc = r"Outputs.gdb\School_Colocation"
field_interest = "Facility_Type"
time_field = ""
cat_interest = "Elementary"
infc_neigh = ""
field_neigh = ""
time_field_neigh = ""
cat_neigh = "Middle"
neighborhood_type = "K_NEAREST_NEIGHBORS"
num_neighbors = 8
dist_band = ""
swm_file = ""
temporal_type = ""
time_step_interval = ""
num_permutation = 99
weighting_scheme ="BISQUARE"
out_global_tbl = r"Outputs.gdb\Global_School_Colocation"
arcpy.stats.ColocationAnalysis(intype, infc_interest, outfc, field_interest,
                               time_field, cat_interest, infc_neigh, field_neigh,
                               time_field_neigh, cat_neigh, neighborhood_type,
                               num_neighbors, dist_band, swm_file, temporal_type,
                               time_step_interval num_permutation, weighting_scheme,
                               out_global_tbl)
# Categories from different datasets without categories
# Find the colocation of schools and hospitals
intype = "DATASETS_WITHOUT_CATEGORIES"
infc_interest = r"Colocation.gdb\Schools"
outfc = r"Outputs.gdb\Schools_Hospitals"
field_interest = ""
time_field = ""
cat_interest = ""
infc_neigh = r"Colocation.gdb\Hospitals"
field_neigh = ""
time_field_neigh = ""
cat_neigh = ""
neighborhood_type = "DISTANCE_BAND"
num_neighbors = ""
dist_band = "30 Kilometers"
swm_file = ""
temporal_type = ""
time_step_interval = ""
num_permutation = 199
weighting_scheme ="GAUSSIAN"
out_global_tbl = ""
arcpy.stats.ColocationAnalysis(intype, infc_interest, outfc, field_interest,
                               time_field, cat_interest, infc_neigh, field_neigh,
                               time_field_neigh, cat_neigh, neighborhood_type,
                               num_neighbors, dist_band, swm_file, temporal_type,
                               time_step_interval num_permutation, weighting_scheme,
                               out_global_tbl)
# Categories from two datasets
# Find the colocation of elementary schools and hospitals
intype = "TWO_DATASETS"
infc_interest = r"Colocation.gdb\Schools"
outfc = r"Outputs.gdb\Elementary_Hospitals"
field_interest = "Facility_Type"
time_field = ""
cat_interest = "Elementary"
infc_neigh = r"Colocation.gdb\Hospitals"
field_neigh = ""
time_field_neigh = ""
cat_neigh = ""
neighborhood_type = "K_NEAREST_NEIGHBORS"
num_neighbors = 15
dist_band = ""
swm_file = ""
temporal_type = ""
time_step_interval = ""
num_permutation = 499
weighting_scheme ="NONE"
out_global_tbl = ""
arcpy.stats.ColocationAnalysis(intype, infc_interest, outfc, field_interest,
                               time_field, cat_interest, infc_neigh, field_neigh,
                               time_field_neigh, cat_neigh, neighborhood_type,
                               num_neighbors, dist_band, swm_file, temporal_type,
                               time_step_interval num_permutation, weighting_scheme,
                               out_global_tbl)