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