标注 | 说明 | 数据类型 |
输入要素类 | 将被评估要素间空间关系的要素类。 | Feature Class |
唯一 ID 字段 | 包含输入要素类中每个要素不同值的整型字段。如果没有“唯一 ID”字段,则可以创建一个,方法是向要素类表添加一个整型字段,然后将此字段的值计算为与 FID 或 OBJECTID 字段的值相等。 | Field |
输出空间权重矩阵文件 | 输出空间权重矩阵文件 (.swm) 的完整路径。 | File |
空间关系的概念化 | 指定要素空间关系的概念化方式。
| String |
距离法 (可选) | 指定计算每个要素与邻近要素之间的距离的方式。
| String |
指数 (可选) | 反距离计算值。 典型值为 1 或 2。 | Double |
阈值距离 (可选) | 用于空间关系的概念化参数的反距离和固定距离选项的中断距离。 使用环境输出坐标系中指定的单位输入此值。 为空间时间窗选项定义空间窗的大小。 此参数留空时,将根据输出要素类范围和要素数目计算默认阈值。 对于空间关系的反距离概念化,零值表示将不应用阈值距离,并且所有要素都将是其他所有要素的相邻要素 | Double |
相邻要素的数目 (可选) | 用于反映指定相邻要素的最小数目或精确数目。 当将空间关系的概念化参数设置为 K - 最近邻时,每个要素都将具有指定数量的相邻要素。 对于反距离或固定距离选项,每个要素将至少具有这些数目的相邻要素(如有必要,距离阈值将临时增大以确保达到这个相邻要素数目)。 当选择仅邻接边或邻接边拐角选项时,每个面将被分配此最小数目的相邻要素。 对于具有少于此相邻要素数目的面,将根据要素质心邻近性获得附加相邻要素。 | Long |
行标准化 (可选) | 指定是否按行标准化空间权重。 当要素分布由于采样设计或施加的聚合方案而可能偏离时,建议使用行标准化。
| Boolean |
输入表 (可选) | 由输入要素类中每个要素相对于其他要素的数字权重组成的表。 该表的必填字段是唯一 ID 字段参数值、NID(邻居 ID)和 WEIGHT。 | Table |
日期/时间字段 (可选) | 具有每个要素的时间戳的日期字段。 | Field |
日期/时间间隔类型 (可选) | 指定将用于测量时间的单位。
| String |
日期/时间间隔值 (可选) | 反映构成时间窗的时间单位数量的整数。 例如,如果为日期/时间间隔类型参数选择小时,并为日期/时间间隔值参数指定 3,则时间窗将为 3 小时。 位于指定空间窗和指定时间窗内的要素将成为相邻要素。 | Long |
使用 Z 值 | 指定在输入要素启用 z 的情况下是否在构建空间权重矩阵时使用 z 坐标。
| Boolean |
插图
使用情况
此工具的输出是空间权重矩阵文件 (.swm)。 需要指定空间关系的概念化参数值的工具(例如热点分析)将接受空间权重矩阵文件。 为空间关系的概念化参数选择从文件中获取空间权重选项,并为权重矩阵文件参数提供使用此工具创建的空间权重文件的完整路径。
此工具还会报告所生成的空间权重矩阵文件的特征:要素数量、连通性以及最小相邻要素数、最大相邻要素数和平均相邻要素数。 在工具执行期间,该摘要将以消息形式写入地理处理窗格底部。 可将鼠标悬停在进度条上、单击弹出按钮或展开地理处理窗格中的消息部分来访问消息。 您还可以通过地理处理历史记录访问之前运行工具的消息。 该汇总将指示是否所有要素都至少具有一个相邻要素。 一般而言,尤其是对于大型数据集,最好至少有 8 个相邻要素且要素连通性值较低。
对于空间和时间分析,为空间关系的概念化参数选择空间时间窗选项。 可通过指定阈值距离值定义空间;也可通过指定日期/时间字段值以及日期/时间类型(例如小时或天)和日期/时间间隔值定义时间。 日期/时间间隔值参数值为整数。 例如,如果输入 1000 英尺,选择小时选项,并为日期/时间间隔值提供值 3,则距离在 1000 英尺范围内且在彼此 3 小时内出现的要素将被视为相邻要素。
通过空间权重矩阵文件 (.swm),可以生成、存储、重用和共享一组要素之间关系的概念化。 为了提高性能,文件采用二进制文件格式创建。 要素关系存储为稀疏矩阵,因此仅将非零关系写入 .swm 文件。 通常,即使 .swm 文件包含超过 1500 万个非零关系,工具也会表现良好。 但是,如果在使用 .swm 文件时发生内存错误,请重新考虑如何定义要素关系。 作为最佳做法,对于空间权重矩阵,其中每个要素至少有 1 个相邻要素,大多数要素具有 8 个相邻要素,并且没有要素具有超过 1000 个相邻要素。
重合点不用于计算默认阈值距离参数值。
当使用具有含 z 值的坐标的数据时,阈值距离参数值将为 3D 距离。
当使用具有含 z 值的坐标的数据时,空间关系的概念化仅支持反距离、固定距离、K - 最近邻和空间时间窗选项。
如果输入要素类参数值启用了 z 值,那么垂直坐标系 (VCS) 的线性单位必须与水平坐标系的线性单位相匹配。 如果输入要素类参数值不具有 VCS,则假设垂直线性单位与水平线性单位相同。
如果未投影输入要素类参数值(即,坐标单位为度、分和秒),或者将输出坐标系设置为地理坐标系,则采用弦测量方法计算距离。 使用弦距离测量法是因为此方法不仅计算速度快,而且提供真实测地线距离的良好估测,至少对于彼此 30 度以内的点是这样。 弦距离是基于扁椭球体计算的。 给定地球表面上的任意两点,两点之间的弦距离是从三维地球穿过然后连接该两点的一条线的长度。 弦距离报表将以米为单位。
警告:
如果研究区域超过 30 度,请投影数据。 弦距离无法准确估算超出 30 度的测地线距离。
如果分析时使用弦距离,阈值距离参数值(如指定)应以米为单位。
-
对于线和面要素,距离计算中会使用要素的质心。对于多点、折线或由多部分组成的面,将会使用所有要素部分的加权平均中心来计算质心。点要素的加权项是 1,线要素的加权项是长度,而面要素的加权项是面积。
唯一 ID 字段参数值与运行此工具后所获得的要素关系关联。 因此,每个要素的唯一 ID 字段值都必须唯一,而且通常应该位于与要素类一同保留的永久性字段中。 如果没有唯一 ID 字段,则可以轻松地创建一个,方法是向要素类表添加一个新的整型字段(添加字段),然后将此字段的值计算为与 FID 或 OBJECTID 字段的值相等(计算字段)。 由于复制或编辑要素类时 FID 和 OBJECTID 字段值可能会发生变化,所以不能直接对唯一 ID 字段参数使用这些字段。
相邻要素的数目参数可以覆盖“空间关系反距离或固定距离概念化”的阈值距离参数。 例如,如果指定的阈值距离为 10 英里,相邻要素数目参数为 3,则所有要素都至少会接收到 3 个相邻要素(即使必须增加距离阈值才能找到它们)。 只有在未达到最小相邻要素数时,才会增加阈值距离。
空间关系的概念化参数的转换表选项可用来将 ASCII 空间权重矩阵文件转换为 SWM 格式的空间权重矩阵文件。 首先,将 ASCII 权重置入一个带格式的表中(例如,使用 Excel)。
对于面要素,选中行标准化参数。 如果每个要素所具有的邻域数目由聚合方案或者采样过程决定,而不是反映您所分析的变量的实际空间分布,则行标准化将减少偏移。
-
空间关系建模帮助主题提供了有关此工具的参数的附加信息。
可以使用空间权重矩阵文件的工具会在进行分析之前将要素几何投影到输出坐标系,并且所有数学计算均基于输出坐标系。 因此,如果输出坐标系设置与输入要素类空间参考不匹配,对于使用空间权重矩阵文件的所有分析,请确保输出坐标系与在创建空间权重矩阵文件时使用的设置匹配;或者对输入要素类进行投影,使得输入要素类与空间权重矩阵文件相关的空间参考相匹配。
警告:
在使用 shapefile 时,请注意 shapefile 无法存储空值。根据非 shapefile 输入创建 shapefile 的工具或其他过程可能会将空值存储(或解释)为零。某些情况下,空值则以极大的负值储存于 shapefile 中。这会产生意外的结果。有关详细信息,请参阅 shapefile 输出的地理处理注意事项。
参数
arcpy.stats.GenerateSpatialWeightsMatrix(Input_Feature_Class, Unique_ID_Field, Output_Spatial_Weights_Matrix_File, Conceptualization_of_Spatial_Relationships, {Distance_Method}, {Exponent}, {Threshold_Distance}, {Number_of_Neighbors}, {Row_Standardization}, {Input_Table}, {Date_Time_Field}, {Date_Time_Interval_Type}, {Date_Time_Interval_Value}, Use_Z_values)
名称 | 说明 | 数据类型 |
Input_Feature_Class | 将被评估要素间空间关系的要素类。 | Feature Class |
Unique_ID_Field | 包含输入要素类中每个要素不同值的整型字段。如果没有“唯一 ID”字段,则可以创建一个,方法是向要素类表添加一个整型字段,然后将此字段的值计算为与 FID 或 OBJECTID 字段的值相等。 | Field |
Output_Spatial_Weights_Matrix_File | 输出空间权重矩阵文件 (.swm) 的完整路径。 | File |
Conceptualization_of_Spatial_Relationships | 指定要素空间关系的概念化方式。
| String |
Distance_Method (可选) | 指定计算每个要素与邻近要素之间的距离的方式。
| String |
Exponent (可选) | 反距离计算值。 典型值为 1 或 2。 | Double |
Threshold_Distance (可选) | 用于 Conceptualization_of_Spatial_Relationships 参数的 INVERSE_DISTANCE 和 FIXED_DISTANCE 选项的中断距离。 使用环境输出坐标系中指定的单位输入此值。 为 SPACE_TIME_WINDOW 选项定义空间窗的大小。 此参数留空时,将根据输出要素类范围和要素数目计算默认阈值。 对于空间关系的反距离概念化,零值表示将不应用阈值距离,并且所有要素都将是其他所有要素的相邻要素 | Double |
Number_of_Neighbors (可选) | 用于反映指定相邻要素的最小数目或精确数目。 当将 Conceptualization_of_Spatial_Relationships 参数设置为 K_NEAREST_NEIGHBORS 时,每个要素的相邻要素数正好等于这个指定数目。 对于 INVERSE_DISTANCE 或 FIXED_DISTANCE 选项,每个要素将至少具有这些数目的相邻要素(如有必要,距离阈值将临时增大以确保达到这个相邻要素数目)。 当选择 CONTIGUITY_EDGES_ONLY 或 CONTIGUITY_EDGES_CORNERS 选项时,每个面将被分配此最小数目的相邻要素。 对于具有少于此相邻要素数目的面,将根据要素质心邻近性获得附加相邻要素。 | Long |
Row_Standardization (可选) | 指定是否按行标准化空间权重。 当要素分布由于采样设计或施加的聚合方案而可能偏离时,建议使用行标准化。
| Boolean |
Input_Table (可选) | 由输入要素类中每个要素相对于其他要素的数字权重组成的表。 该表的必填字段是唯一 ID 字段参数值、NID(邻居 ID)和 WEIGHT。 | Table |
Date_Time_Field (可选) | 具有每个要素的时间戳的日期字段。 | Field |
Date_Time_Interval_Type (可选) | 指定将用于测量时间的单位。
| String |
Date_Time_Interval_Value (可选) | 反映构成时间窗的时间单位数量的整数。 例如,如果为 Date_Time_Interval_Type 参数选择 HOURS,并为 Date_Time_Interval_Value 参数指定 3,则时间窗将为 3 小时。 位于指定空间窗和指定时间窗内的要素将成为相邻要素。 | Long |
Use_Z_values | 指定在输入要素启用 z 的情况下是否在构建空间权重矩阵时使用 z 坐标。
| Boolean |
代码示例
以下 Python 窗口脚本演示了如何使用 GenerateSpatialWeightsMatrix 函数。
import arcpy
arcpy.env.workspace = "C:/data"
arcpy.GenerateSpatialWeightsMatrix_stats("911Count.shp", "MYID",
"euclidean6Neighs.swm",
"K_NEAREST_NEIGHBORS", "#", "#", "#",
6, "NO_STANDARDIZATION")
以下独立 Python 脚本演示了如何使用 GenerateSpatialWeightsMatrix 函数。
# Analyze the spatial distribution of 911 calls in a metropolitan area
# using the Hot-Spot Analysis Tool (Local Gi*)
# Import system modules
import arcpy
# Set property to overwrite existing output, by default
arcpy.env.overwriteOutput = True
# Local variables...
workspace = "C:/Data"
try:
# Set the current workspace (to avoid having to specify the full path to the feature classes each time)
arcpy.env.workspace = workspace
# Copy the input feature class and integrate the points to snap
# together at 500 feet
# Process: Copy Features and Integrate
cf = arcpy.CopyFeatures_management("911Calls.shp", "911Copied.shp",
"#", 0, 0, 0)
integrate = arcpy.Integrate_management("911Copied.shp #", "500 Feet")
# Use Collect Events to count the number of calls at each location
# Process: Collect Events
ce = arcpy.CollectEvents_stats("911Copied.shp", "911Count.shp", "Count", "#")
# Add a unique ID field to the count feature class
# Process: Add Field and Calculate Field
af = arcpy.AddField_management("911Count.shp", "MyID", "LONG", "#", "#", "#", "#",
"NON_NULLABLE", "NON_REQUIRED", "#",
"911Count.shp")
cf = arcpy.CalculateField_management("911Count.shp", "MyID", "[FID]", "VB")
# Create Spatial Weights Matrix for Calculations
# Process: Generate Spatial Weights Matrix...
swm = arcpy.GenerateSpatialWeightsMatrix_stats("911Count.shp", "MYID",
"euclidean6Neighs.swm",
"K_NEAREST_NEIGHBORS",
"#", "#", "#", 6,
"NO_STANDARDIZATION")
# Hot Spot Analysis of 911 Calls
# Process: Hot Spot Analysis (Getis-Ord Gi*)
hs = arcpy.HotSpots_stats("911Count.shp", "ICOUNT", "911HotSpots.shp",
"GET_SPATIAL_WEIGHTS_FROM_FILE",
"EUCLIDEAN_DISTANCE", "NONE",
"#", "#", "euclidean6Neighs.swm")
except arcpy.ExecuteError:
# If an error occurred when running the tool, print the error message
print(arcpy.GetMessages())
环境
特殊情况
- 输出坐标系
在分析之前,会将要素几何投影到输出坐标系,这样,为距离阈值参数输入的值会与输出坐标系中指定的值一致。 所有数学计算都基于输出坐标系的空间参考进行。 输出坐标系基于度、分、秒时,测地线距离使用弦距离(米)估测。