描述
通过将一组点聚合到时空条柱的方法将其汇总到 netCDF 数据结构中。在每个条柱内计算点并聚合指定属性。对于所有条柱位置,评估计数趋势和汇总字段值。
插图
使用方法
此工具可将点输入要素聚合到时空条柱。所创建的数据结构可被视为由时空条柱组成的一个三维立方体,其中 x 和 y 维度表示空间,t 维度表示时间。
每个条柱在空间 (x,y) 和时间 (t) 中都有固定位置。覆盖同一个 (x, y) 区域的条柱共用同一个位置 ID。包含相同持续时间的条柱共用相同的时间步长 ID。即使点数据并非矩形,但立方体始终为矩形,因此某些位置将会在所有时间步长内的点计数为零。对于许多分析,只有带有数据的位置(至少一个时间步长的至少一个点计数大于 1)将包括在分析中。
时空立方体中的每一个条柱都具有 LOCATION_ID、time_step_ID、COUNT 值以及创建立方体后聚合的所有汇总字段的值。与同一物理位置相关的条柱将共享同一位置 ID,这些条柱组合起来可表示时间序列。与同一时间步长间隔相关的条柱将共享同一时间步长 ID,这些条柱组合起来可构成时间片。每个条柱的计数值反映在相关时间步长间隔内出现在相关位置的点的数量。
输入要素应为点,例如犯罪或火灾、疾病事件、客户销售数据或交通事故。每个点都应具有与其关联的日期。包含事件时间戳的字段必须为日期类型。此工具需要最少 60 个点和各种时间戳。如果指定的参数将导致立方体具有二十多亿条柱,此工具将无法执行操作。
此工具需要使用投影数据来准确测量距离。
此工具的输出为 netCDF,可表示输入点以及汇总了立方体特征且会写入到结果窗口中的消息。可将创建的 netCDF 文件用作新兴时空热点分析工具或局部异常值分析工具的输入。要获取允许您查看立方体内容的策略,请参阅可视化时空立方体。
为时间字段参数选择“日期”类型的字段。该字段应包含与每个点要素相关联的时间戳。
时间步长间隔用于定义要如何对某一时间范围内的聚合点进行分区。您可决定使用一天、一周或一年等间隔来聚合点。时间步长间隔始终为固定持续时间,并且此工具最少需要十个时间步长。如果未提供时间步长间隔值,此工具将为您计算一个值。有关默认时间步长间隔的计算方法的详细信息,请参阅了解有关通过聚合点创建时空立方体的工作原理的详细信息。有效的时间步长间隔单位为年、月、日、小时、分钟和秒。
以整数值加单位值形式键入时间步长间隔。时间步长间隔条目示例为 1 周、2 周、13 天或 1 个月。
如果您无法创建时空立方体,则工具可能无法将您提供的数据构建为十个时间步长间隔。如果运行此工具时出现错误消息,请检查输入点的时间戳,确保其包含值范围。值范围的跨度必须大于等于十秒,因为运行工具所需的最小时间增量为十秒。Mann-Kendall 统计需要十个时间步长间隔。
当根据所选的时间步长间隔创建含有事件数据的时空立方体时,可能会在立方体的开始处或结束处创建数据条柱,而该条柱不具有跨越整个时间跨度的数据。例如,如果您选择 1 个月作为时间步长间隔,并且数据没有平均分解为 1 个月的间隔,则在开始或结束处将存在一个不具有跨越整个时间跨度内数据的时间步长。这可能会使结果产生偏差,因为存在时间偏差的时间步长内的点将显著少于其他时间步长内的点,而这实际上是聚合方案造成的人为结果。消息指示第一个或最后一个时间步长中是否存在时间偏差。一种解决方案是创建一个数据选择集,让数据均匀分布到所需的时间步长间隔中。
数据集具有等间距的时间分布是很常见的情况。例如,您的年度数据可能全部位于每年的一月 1 日,或者月度数据时间戳全部是每月的第一天。此类数据通常被称为固定样本数据。通过样本数据,时间偏差计算将经常显示非常大的比例。这属于预期行为,因为每个条柱仅覆盖给定的时间步长中的一个特定时间单位。例如,如果您选择 1 年时间步长间隔 并且您的数据分布在每年的 1 月 1 日,则每个条柱将仅覆盖一天。但这是可被接受的,因为其适用于每一条柱。由于条柱创建参数,而不是真实数据分布,时间偏差仅表示特定条柱时出现问题。重要的是基于数据分布就每个条柱的预期覆盖评估时间偏差。
输出报告中的时间偏差计算的是不存在任何数据的时间跨度的百分比。例如,空条柱的时间偏差为 100%。对于时间跨度为 1 个月、时间步长对齐为结束时间,且第一个时间步长只有后两周具有数据的条柱,其第一个时间步长中的时间偏差为 50%。对于时间跨度为 1 个月、时间步长对齐为开始时间,且最后一个时间步长只有前两周具有数据的条柱,其最后一个时间步长中的时间偏差为 50%。
时空立方体创建完成后,无法再对立方体的空间范围进行扩展。如果对时空立方体的深入分析涉及到使用研究区域(例如新兴时空热点分析工具中的面分析掩膜),则您将希望确保在创建立方体时,面分析掩膜未延伸超出输入要素的范围。创建立方体时将用于深入分析的研究区域面设置为范围环境设置可确保在分析初期立方体的范围会与您所需要的范围一样大。
可创建模板立方体,以使您在每次运行分析(尤其是您想要比较一系列时间段的数据)时均可使用。通过提供相同的模板立方体,可确保分析范围、条柱大小、时间步长间隔、参考时间以及时间步长对齐始终一致。
如果提供一个模板立方体,则落在该模板立方体范围外的输入点将被排除在分析外。同样,如果输入点要关联的空间参考不同于模板立方体关联的空间参考,则此工具将投影输入要素以在开始聚合前匹配模板立方体。模板立方体关联的空间参考还将覆盖输出坐标系设置。此外,不管您是否指定其他处理范围,模板立方体一经指定便将确定所用的处理范围。有关详细信息,请参阅通过聚合点创建时空立方体的工作原理。
参考时间可能是日期和时间值或仅为日期值,不可仅为时间值。预期格式由计算机的区域时间设置确定。
您可以选择渔网或六边形聚合形状类型。虽然渔网格网是更常用的聚合形状,但在某些分析中六边形可能是更好的选择。
距离间隔可指定空间时间条柱的大小。条柱可用于聚合点数据。例如,您可决定使每个渔网条柱为 50 米乘 50 米。如果聚合到六边形,则距离间隔为每个六边形的高度,而所生成六边形的宽度为高度除以根号 3 再乘以 2。除非指定模板立方体,否则立方体左上角中的条柱将在输入要素空间范围的左上角居中显示。
- 您将要选择一个对分析有意义的距离间隔。如果距离间隔过大,则会失去点数据中的基本模式;如果距离间隔过小,则最终得到充满零计数的立方体。您应在这两者之间找到平衡。如果未提供距离间隔值,此工具将为您计算一个值。有关默认距离间隔的计算方法的详细信息,请参阅通过聚合点创建时空立方体的工作原理。支持的距离间隔单位为千米、米、英里和英尺。
在聚合计数数据和汇总字段值上执行的趋势分析是以 Mann-Kendall 统计为基础的。
使用此工具可对属性聚合执行以下统计运算:总和、平均值、最小值、最大值、标准差和中值。
通过 SPATIAL_NEIGHBORS 填充空条柱时,将使用二阶(其中包括相邻要素和相邻要素的相邻要素)Queens Case 邻接(基于边角的邻接)。 使用此选项填充空条柱最少需要 4 个空间相邻要素。
通过 SPACE_TIME_NEIGHBORS 填充空条柱时,将使用二阶(其中包括相邻要素和相邻要素的相邻要素)Queens Case 邻接(基于边角的邻接)。 额外利用通过对空间相邻要素的每个条柱向前和向后移动 2 个时间步长得到的时间相邻要素。使用此选项填充空条柱最少需要 13 个时空相邻要素。
通过时间趋势 TEMPORAL_TREND 填充空条柱时,给定位置的前两个时间段和后两个时间段在其条柱中必须具有值,以便对该位置的其他时间段进行插值。
TEMPORAL_TREND 填充类型在 SciPy 的插值包中使用插值一元样条方法。
任何汇总字段记录中出现的空值都将导致从分析中排除这些要素。如果将每个条柱中的点数作为分析策略的一部分,您可能需要考虑创建单独的立方体,针对计数(不含汇总字段)创建一个,并针对汇总字段创建一个。如果每个汇总字段的空值集不相同,您可能还需要考虑为每个汇总字段创建一个单独的立方体。
语法
arcpy.stpm.CreateSpaceTimeCube(in_features, output_cube, time_field, {template_cube}, {time_step_interval}, {time_step_alignment}, {reference_time}, {distance_interval}, summary_fields, {aggregation_shape_type})
参数 | 说明 | 数据类型 |
in_features | 要聚合到时空条柱的输入点要素类。 | Feature Layer |
output_cube | 将创建输出 netCDF 数据立方体以包含输入要素点数据的计数和汇总。 | File |
time_field | 包含每个点的日期和时间(时间戳)的字段。此字段必须为日期类型。 | Field |
template_cube (可选) | 用于定义 output_cube 分析范围、条柱维度和条柱对齐的参考时空立方体。还可从模板立方体获得 time_step_interval、distance_interval 和 reference_time 值。该模板立方体必须是已使用此工具创建的 netCDF (.nc) 文件。 | File |
time_step_interval (可选) | 用来表示单个时间步长的秒数、分钟数、小时数、天数、周数或年数。将聚合相同时间步长间隔和距离间隔中的所有点。(提供模板立方体时,将忽略此参数,并从该模板立方体获取时间步长间隔值。) 此参数的有效条目示例为 1 周、13 天或 1 年。 | Time unit |
time_step_alignment (可选) | 定义如何根据给定的 time_step_interval 进行聚合。如果提供 template_cube,则与 template_cube 相关的 time_step_alignment 将覆盖此参数设置,并使用 template_cube 的 time_step_alignment。
| String |
reference_time (可选) | 用于对齐时间步长间隔的日期/时间。例如,如果想要按星期从星期一至星期天对数据进行归类,可以将星期天的午夜设置为参考时间,以确保条柱在星期天和星期一之间的午夜进行划分。(提供 template_cube 时,可忽略此参数,因为 reference_time 将由 template_cube 确定。) | Date |
distance_interval (可选) | 用于聚合 in_features 的条柱尺寸。将对相同 distance_interval 和 time_step_interval 内的所有点进行聚合。当聚合到六边形网格时,该距离用作构建六边形面的高度。(提供 template_cube 时,可忽略此参数,因为距离间隔值将由 template_cube 确定。) | Linear Unit |
summary_fields [[Field, Statistic, Fill Empty Bins with],...] | 包含在用于计算指定统计数据的属性值的数值字段(当将数据聚合到时空立方体时)。可以指定多项统计数据和字段组合。空值将被排除在所有统计计算之外。 可用的统计类型有:
可用填充类型有:
注意:任何汇总字段中出现的空值都将导致从分析中排除这些要素。如果将每个条柱中的点数作为分析策略的一部分,您可能需要考虑创建单独的立方体,针对计数创建一个(不含汇总字段),并针对汇总字段创建一个。如果每个汇总字段的空值集不相同,您可能还需要考虑为每个汇总字段创建一个单独的立方体。 | Value Table |
aggregation_shape_type (可选) | 输入要素点数据将要聚合到的面网格形状。
| String |
代码示例
CreateSpaceTimeCube 示例 1(Python 窗口)
以下 Python 窗口脚本演示了如何使用 CreateSpaceTimeCube 工具。
arcpy.env.workspace = r"C:\STPM"
arcpy.CreateSpaceTimeCube_stpm("Homicides.shp", "Homicides.nc", "OccDate", "#", "3 Months",
"End time", "#", "3 Miles", "Property MEDIAN SPACETIME; Age STD ZEROS")
CreateSpaceTimeCube 示例 2(独立 Python 脚本)
以下独立 Python 脚本演示了如何使用 CreateSpaceTimeCube 工具。
# Create Space Time Cube of homicide incidents in a metropolitan area
# Import system modules
import arcpy
# Set geoprocessor object property to overwrite existing output, by default
arcpy.env.overwriteOutput = True
# Local variables...
workspace = r"C:\STPM"
try:
# Set the current workspace (to avoid having to specify the full path to the feature
# classes each time)
arcpy.env.workspace = workspace
# Create Space Time Cube of homicide incident data with 3 months and 3 miles settings
# Also aggregate the median of property loss, no date predicted by space-time neighbors
# Also aggregate the standard deviation of the victim's age, fill the no-data with zeros
# Process: Create Space Time Cube By Aggregating Points
cube = arcpy.CreateSpaceTimeCube_stpm("Homicides.shp", "Homicides.nc", "MyDate", "#",
"3 Months", "End_time", "#", "3 Miles", "Property MEDIAN SPACETIME; Age STD ZEROS",
"HEXAGON_GRID")
# Create a polygon that defines where incidents are possible
# Process: Minimum Bounding Geometry of homicide incident data
arcpy.MinimumBoundingGeometry_management("Homicides.shp", "bounding.shp", "CONVEX_HULL",
"ALL", "#", "NO_MBG_FIELDS")
# Emerging Hot Spot Analysis of homicide incident cube using 5 Miles neighborhood
# distance and 2 neighborhood time step to detect hot spots
# Process: Emerging Hot Spot Analysis
cube = arcpy.EmergingHotSpotAnalysis_stpm("Homicides.nc", "COUNT", "EHS_Homicides.shp",
"5 Miles", 2, "bounding.shp")
except arcpy.ExecuteError:
# If any error occurred when running the tool, print the messages
print(arcpy.GetMessages())
环境
许可信息
- Basic: 是
- Standard: 是
- Advanced: 是