描述
通过将一组点聚合到空间时间立方图格的方法将其汇总到 netCDF 数据结构中。在每个立方图格内计算点计数并聚合指定属性。对于所有立方图格位置,评估计数趋势和汇总字段值。
插图
使用方法
此工具可将点输入要素聚合到时空立方图格。所创建的数据结构可被视为由时空立方图格组成的一个三维立方体,其中 x 和 y 维度表示空间,t 维度表示时间。
每个立方图格在空间 (x,y) 和时间 (t) 中都有固定位置。覆盖同一个 (x,y) 区域的立方图格共用同一个位置 ID。包含相同持续时间的立方图格共用相同的时间步长 ID。
时空立方体中的每一个立方图格都具有 LOCATION_ID、time_step_ID、COUNT 值以及创建立方体后聚合的所有汇总字段的值。与同一物理位置相关的立方图格将共享同一位置 ID,这些立方图格组合起来可表示时间序列。与同一时间步长间隔相关的立方图格将共享同一时间步长 ID,这些立方图格组合起来可构成时间片。每个立方图格的计数值反映在相关时间步长间隔内出现在相关位置的点的数量。
输入要素应为点,例如犯罪或火灾、疾病事件、客户销售数据或交通事故。每个点都应具有与其关联的日期。包含事件时间戳的字段必须为日期类型。此工具最少需要 60 个点和多个时间戳。如果指定的参数将导致立方体具有二十多亿个立方图格,此工具将无法执行操作。
此工具需要使用投影数据来准确测量距离。
此工具的输出为 netCDF,可表示输入点以及汇总了立方体特征的消息。在工具执行期间,消息将写入到地理处理窗格底部。可通过将鼠标悬停在进度条上、单击弹出按钮或展开地理处理窗格中的消息部分来访问消息。此外,还可通过地理处理历史访问之前运行通过聚合点创建时空立方体工具的消息。可将 netCDF 文件用作其他工具(例如新兴时空热点分析工具或局部异常值分析工具)的输入。有关允许您查看立方体内容的策略,请参阅可视化时空立方体。
为时间字段参数选择“日期”类型的字段。该字段应包含与每个点要素相关联的时间戳。
时间步长间隔用于定义要如何对某一时间范围内的聚合点进行分区。您可决定使用一天、一周或一年等间隔来聚合点。时间步长间隔始终为固定持续时间,并且此工具最少需要 10 个时间步长。如果未提供时间步长间隔值,此工具将为您计算一个值。有关默认时间步长间隔的计算方法的详细信息,请参阅了解有关通过聚合点创建时空立方体的工作原理的详细信息。有效的时间步长间隔单位为年、月、日、小时、分钟和秒。
注:
尽管时间步长间隔下拉列表中显示有多个时间单位,但是工具仅支持年、月、周、日、小时、分钟和秒。
如果您无法创建时空立方体,则工具可能无法将您提供的输入数据构建为十个时间步长间隔。如果运行此工具时收到错误消息,请检查输入点的时间戳,确保其包含值范围。值范围的跨度必须大于等于十秒,因为运行工具所需的最小时间增量为十秒。Mann-Kendall 统计需要十个时间步长间隔。
当根据所选的时间步长间隔创建含有事件数据的时空立方体时,可能会在立方体的开始处或结束处创建数据立方图格,而该立方图格不具有跨越整个时间跨度的数据。例如,如果您选择 1 个月作为时间步长间隔,并且数据没有平均分解为 1 个月的间隔,则在开始或结束处将存在一个不具有跨越整个时间跨度内数据的时间步长。这可能会使结果产生偏差,因为存在时间偏差的时间步长内的点将显著少于其他时间步长内的点,而这实际上是聚合方案造成的人为结果。消息指示第一个或最后一个时间步长中是否存在时间偏差。一种解决方案是创建一个数据选择集,让数据均匀分布到所需的时间步长间隔中。
数据集具有等间距的时空分布的情况并不常见。例如,您的年度数据可能全部位于每年的 1 月 1 日,或者月度数据时间戳全部是每月的第一天。此类数据通常被称为固定样本数据。通过样本数据,时间偏差计算将经常显示非常大的比例。这属于预期行为,因为每个立方图格仅覆盖给定的时间步长中的一个特定时间单位。例如,如果您选择 1 年作为时间步长间隔,并且您的数据分布在每年的 1 月 1 日,则每个立方图格将仅覆盖一年中的一天。这是可以接受的,因为其适用于每一立方图格。由于立方图格创建参数,而不是真实数据分布,时间偏差仅表示特定立方图格时会出现问题。重要的是基于数据分布就每个立方图格的预期覆盖评估时间偏差。
输出报告中的时间偏差计算的是不存在任何数据的时间跨度的百分比。例如,空立方图格的时间偏差为 100%。对于时间跨度为 1 个月、时间步长对齐为结束时间,且第一个时间步长只有后两周具有数据的立方图格,其第一个时间步长中的时间偏差为 50%。对于时间跨度为 1 个月、时间步长对齐为开始时间,且最后一个时间步长只有前两周具有数据的立方图格,其最后一个时间步长中的时间偏差为 50%。
时空立方体创建完成后,无法再对立方体的空间范围进行扩展。如果对时空立方体的深入分析涉及到使用研究区域(例如新兴时空热点分析工具中的面分析掩膜),则您将希望确保在创建立方体时,面分析掩膜未延伸超出输入要素的范围。创建立方体时将用于深入分析的研究区域面设置为范围环境设置可确保在分析初期立方体的范围会与您所需要的范围一样大。
可创建模板立方体,以使您在每次运行分析(尤其是您想要比较一系列时间段的数据)时均可使用。通过提供相同的模板立方体,可确保分析范围、立方图格大小、时间步长间隔、参考时间以及时间步长对齐始终一致。
如果提供一个模板立方体,则落在该模板立方体范围外的输入点将被排除在分析外。同样,如果输入点要关联的空间参考不同于模板立方体关联的空间参考,则此工具将投影输入要素以在开始聚合前匹配模板立方体。模板立方体关联的空间参考还将覆盖输出坐标系设置。此外,不管您是否指定其他处理范围,模板立方体一经指定便将确定所用的处理范围。有关详细信息,请参阅创建时空立方体的工作原理。
参考时间可以是日期和时间值或仅为日期值,但不可仅为时间值。预期格式由计算机的区域时间设置确定。
关于如何使用聚合形状类型参数在空间上聚合点,提供了以下几个选项: 如果希望聚合到形状规则的格网,您可以选择渔网或六边形形状。尽管渔网格网是更常用的聚合形状, 但在某些分析中六边形可能是更好的选择。如果分析中涉及边界或位置(例如,人口普查区块或警务区),您也可以通过已定义位置选项使用上述形状进行聚合。
即使点数据并非矩形,但格网立方体始终为矩形,因此某些位置将会在所有时间步长内的点计数为零。对于许多分析,只有带有数据的位置(至少一个时间步长的至少一个点计数大于 1)将包括在分析中。
-
通过聚合到已定义位置创建立方体时,将包括所有用户提供的定义位置,甚至包括在任何时间步长内均不包含点的位置。
距离间隔可指定空间时间立方图格的大小。立方图格可用于聚合点数据。例如,您可决定使每个渔网立方图格为 50 米乘 50 米。如果聚合到六边形,则距离间隔为每个六边形的高度,而所生成六边形的宽度为高度除以根号 3 再乘以 2。除非指定模板立方体,否则立方体左上角中的立方图格将在输入要素空间范围的左上角居中显示。
- 您将要选择一个对分析有意义的距离间隔。如果距离间隔过大,则会失去点数据中的基本模式;如果距离间隔过小,则最终会得到使用零计数填充的立方体。您应在这两者之间找到平衡。如果未提供距离间隔值,此工具将为您计算一个值。有关默认距离间隔的计算方法的详细信息,请参阅通过聚合点创建时空立方体的工作原理。支持的距离间隔单位为千米、米、英里和英尺。
在聚合计数数据和汇总字段值上执行的趋势分析是以 Mann-Kendall 统计为基础的。
使用此工具可对属性聚合执行以下统计运算:总和、平均值、最小值、最大值、标准差和中值。
通过 SPATIAL_NEIGHBORS 填充空立方图格时,将使用二阶(其中包括相邻要素和相邻要素的相邻要素)Queens Case 邻接(基于边和节点的邻接)。使用此选项填充空立方图格最少需要 4 个空间相邻要素。
通过 SPACE_TIME_NEIGHBORS 填充空立方图格时,将使用二阶(其中包括相邻要素和相邻要素的相邻要素)Queens Case 邻接(基于边和节点的邻接)。此外,针对被视为空间相邻要素的每个立方图格,通过向前和向后移动 2 个时间步长使用时间相邻要素。使用此选项填充空立方图格最少需要 13 个时空相邻要素。
通过 TEMPORAL_TREND 填充空立方图格时,给定位置的前两个时间段和后两个时间段在其立方图格中必须具有值,以便对该位置的其他时间段进行插值。
TEMPORAL_TREND 填充类型使用 SciPy 插值包中的一元样条插值方法。
任何汇总字段记录中出现的空值都将导致从输出立方体中排除这些要素。如果输入要素中出现空值,则强烈建议您先运行填充缺失值工具。如果在运行填充缺失值工具后,仍存在空值而每个立方图格中的点数是分析策略的一部分,您可能需要考虑创建单独的立方体,针对计数(不含汇总字段)创建一个,并针对汇总字段创建一个。如果每个汇总字段的空值集不相同,您可能还需要考虑为每个汇总字段创建一个单独的立方体。
该工具可利用具有多个 CPU(或多核 CPU)的系统来提高性能。该工具将默认在使用 50% 可用处理器的情况下运行;但是,可以使用并行处理因子环境增加或减小使用的 CPU 数。在创建较大的时空立方体时,处理速度的提高最为明显。
语法
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}, {defined_polygon_locations}, {location_id})
参数 | 说明 | 数据类型 |
in_features | 要聚合到时空立方图格的输入点要素类。 | Feature Layer |
output_cube | 将创建的输出 netCDF 数据立方体,以包含输入要素点数据的计数和汇总。 | File |
time_field | 包含每个点的日期和时间(时间戳)的字段。此字段必须为日期类型。 | Field |
template_cube (可选) | 用于定义 output_cube 分析范围、立方图格维度和立方图格对齐的参考时空立方体。还可从模板立方体获得 time_step_interval、distance_interval 和 reference_time 值。该模板立方体必须是已使用此工具创建的 netCDF (.nc) 文件。 通过聚合到 DEFINED_LOCATIONS 而创建的时空立方体不能用作 template_cube。 | File |
time_step_interval (可选) | 用来表示单个时间步长的秒数、分钟数、小时数、天数、周数或年数。将对位于同一 time_step_interval 和 distance_interval 内的所有点进行聚合。(如果提供 template_cube,则可忽略此参数,并从模板立方体中获得 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 |
defined_polygon_locations (可选) | 输入点数据将要聚合到的面要素。例如,这些数据可表示县边界、警务区或销售区域。 | Feature Layer |
location_id (可选) | 包含每个唯一位置的 ID 编号的字段。 | Field |
代码示例
以下 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", "HEXAGON_GRID", "#", "#")
以下独立 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(2))
环境
许可信息
- Basic: 是
- Standard: 是
- Advanced: 是