收集事件 (空间统计)
摘要
将事件数据(如犯罪或疾病事件点)转换为加权点数据。
插图
用法
-
“收集事件”可将重合点合并:它会创建一个新的输出要素类,其中包含在输入要素类中找到的所有唯一位置。然后,它会添加一个名为 ICOUNT 的字段,以保存每个唯一位置所有事件点的总和。
-
此工具仅合并 X 和 Y 质心坐标完全相同的要素。在运行“收集事件”工具之前,最好使用整合工具将附近的要素捕捉到一起。
警告:整合工具会永久性地更改要素几何,因此在使用整合工具之前,请务必为要素类创建一个备份副本。
-
例如,热点分析 (Getis-Ord Gi*)、聚类和异常值分析 (Local Moran's I) 以及空间自相关 (Morans I) 工具需要加权点而不是各个事件点。当输入要素类包含重合的要素时,可以使用“收集事件”工具来创建权重。
-
尽管此工具将用于处理面或线数据,但它实际上其仅适用于事件、事件点或其他点要素数据。对于线要素和面要素,要素是否重合取决于要素真正的几何质心。对于多点、折线 (polyline) 或由多部分组成的面,使用所有要素部分的加权平均中心来计算质心。点要素的加权项是 1,线要素的加权项是长度,而面要素的加权项是面积。
如果未投影输入要素类(即,坐标单位为度、分和秒),或者将输出坐标系设置为地理坐标系,则采用弦测量方法计算距离。使用弦距离测量法是因为此方法不仅计算速度快,而且提供真实测地线距离的良好估测,至少对于彼此 30 度以内的点是这样。弦距离以球体为基础,而不是以地球实际的扁椭圆体为基础。给定地球表面上的任意两点,两点之间的弦距离是从三维地球穿过然后连接该两点的一条线的长度。弦距离以米为单位报告。
警告:如果您的研究区延伸超过 30 度,则需确保投影数据。测地线距离超过 30 度时,弦距离不是理想的估测方法。
-
如果要将多点/多部分数据的每个点/部分视为单部分要素,则需要运行多部分 (Multipart) 至单部分 (Singlepart) 工具,然后对单部分要素类运行收集事件工具。有关详细信息,请参阅处理多点数据。
-
除了输出要素类之外,此函数还会传递计数字段的名称以及对于任一位置遇到的最大计数值以作为派生输出值。在模型或脚本中使用此工具时,这些派生输出值会非常有帮助。
-
在 ArcMap 中运行此工具时,输出要素类会自动添加到内容列表 (TOC),同时对 ICOUNT 字段应用默认渲染。分级圆圈渲染方案由 <ArcGIS>/ArcToolbox/Templates/Layers 中的图层文件定义。需要时,可通过导入模板图层符号系统重新应用默认渲染。
语法
参数 | 说明 | 数据类型 |
Input_Incident_Features |
表示事件或事件点数据的要素。 | Feature Layer |
Output_Weighted_Point_Feature_Class |
包含加权点数据的输出要素类。 | Feature Class |
代码实例
下面的 Python 窗口脚本演示了如何使用“收集事件”工具。
import arcpy
arcpy.env.workspace = "C:/Data"
arcpy.CollectEvents_stats("911Copied.shp", "911Count.shp", "Count", "#")
下面的独立 Python 脚本演示了如何使用“收集事件”工具。
# 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()