生成空间权重矩阵 (空间统计)
插图
用法
-
此工具的输出是空间权重矩阵文件 (.swm)。需要指定空间关系的概念化选项的工具将接受空间权重矩阵文件;为空间关系的概念化参数选择 GET_SPATIAL_WEIGHTS_FROM_FILE,并且为权重矩阵文件参数指定使用此工具创建的空间权重文件的完整路径名。
此工具还会报告所生成的空间权重矩阵文件的特征:要素数量、连通性以及最小相邻要素数、最大相邻要素数和平均相邻要素数。通过结果窗口可以访问此汇总,右键单击结果 窗口中的消息条目并选择视图即可查看。使用此汇总时,请确保所有要素至少具有 1 个相邻要素(理想情况是 8 个相邻要素)。通常,最好让要素连通性具有一个低值,尤其是大型数据集更是如此。
-
对于线和面要素,会在距离计算中使用要素质心。对于多点、折线 (polyline) 或由多部分组成的面,使用所有要素部分的加权平均中心来计算质心。点要素的加权项是 1,线要素的加权项是长度,而面要素的加权项是面积。
-
唯一 ID 字段与运行此工具后所获得的要素关系关联。因此,每个要素的唯一 ID 值都必须唯一,而且通常应该位于与要素类一同保留的永久性字段中。如果没有“唯一 ID”字段,则可以轻松地创建一个,方法是向要素类表添加一个新的整型字段,然后将此字段的值计算为与 FID/OID 字段的值相等。您无法将 FID/OID 字段直接用于唯一 ID 参数。
-
空间关系的概念化参数的面邻接选项(CONTIGUITY_EDGES_ONLY 和 CONTIGUITY_EDGES_CORNERS)仅对面要素有效。只有具有 ArcInfo 级别许可才能使用这些选项。
-
相邻要素的数目参数可以覆盖“空间关系反距离或固定距离概念化”的阈值距离参数。如果指定的阈值距离为 10 英里,相邻要素数目为 3,则所有要素都至少会接收 3 个相邻要素(即使必须增加该阈值才能找到它们)。只有在未达到最小相邻要素数时,才增加距离阈值。
空间关系的概念化参数的 CONVERT_TABLE 选项可用来将 ASCII 空间权重矩阵文件转换为 .swm 格式的空间权重矩阵文件。首先,需要将 ASCII 权重置入一个有格式的表中(例如,使用 Excel)。
对于面要素,几乎总是需要为标准化参数选择行。如果每个要素所具有的邻域数目由聚合方案或者采样过程决定,而不是反映您所分析的变量的实际空间分布,则行标准化将减少偏移。
-
空间关系建模帮助主题提供了有关此工具的参数的附加信息。
在使用 shapefile 时,请注意 shapefile 无法存储空值。根据非 shapefile 输入创建 shapefile 的工具或其他过程可能会将空值存储(或解析)为零。这会产生意外的结果。另请参阅 shapefile 输出的地理处理注意事项。
语法
参数 | 说明 | 数据类型 |
Input_Feature_Class |
将被评估要素空间关系的要素类。 | Feature Class |
Unique_ID_Field |
包含输入要素类中每个要素不同值的整型字段。 | Field |
Output_Spatial_Weights_Matrix_File |
要创建的空间权重矩阵文件 (.swm) 的完整路径名。 | File |
Conceptualization_of_Spatial_Relationships |
指定要素空间关系的概念化方式。
注:只有具有 ArcInfo 级别许可才能使用面邻接方法。 | String |
Distance_Method |
指定计算每个要素与邻近要素之间的距离的方式。
| String |
Exponent (可选) |
反距离计算参数。典型值是 1 或 2。 | Double |
Threshold_Distance (可选) |
为空间关系的“反距离”和“固定距离”概念化指定中断距离。使用在环境输出坐标系中指定的单位输入此值。 零值表明应未应用任何距离阈值。此参数留空时,将根据输出要素类范围和要素数量计算默认阈值。 | Double |
Number_of_Neighbors (可选) |
用于表示相邻要素最小数目或精确数目的整数。对于 K 最近邻,每个要素的相邻要素数正好等于这个指定数目。对于反距离或固定距离,每个要素将至少具有这些数量的相邻要素(如有必要,距离阈值将临时增大以确保达到这个相邻要素数)。如果存在一些岛屿面,并且选择了一个有关邻接的空间关系的概念化,则指定的最近面的数目将与这些岛屿面关联。 | Integer |
Row_Standardization (可选) |
当要素的分布由于采样设计或施加的聚合方案而可能出现偏离时,建议使用行标准化。
| Boolean |
Input_Table (可选) |
由输入要素类中每个要素相对于其他要素的数字权重组成的表。必填字段是“输入要素类唯一 ID”字段、“NID”(相邻要素 ID)和“权重”。 | File |
代码示例
下面的 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 geoprocessor object property to overwrite existing output, by default arcpy.gp.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: # If an error occurred when running the tool, print out the error message. print arcpy.GetMessages()