通过聚合点创建时空立方体 (时空模式挖掘)

摘要

通过将一组点聚合到空间时间条柱的方法将其汇总到 netCDF 数据结构中。 在每个条柱内计算点计数并聚合指定属性。 对于所有条柱位置,评估计数趋势和汇总字段值。

了解有关通过聚合点创建时空立方体的工作原理的详细信息

插图

“创建时空立方体”工具图示

使用情况

  • 此工具可将点输入要素聚合到时空条柱。 所创建的数据结构可被视为由时空条柱组成的一个三维立方体,其中 x 和 y 维度表示空间,t 维度表示时间。

    三维立方体中的时空条柱

  • 每个条柱在空间 (x,y) 和时间 (t) 中都有固定位置。 覆盖同一个 (x,y) 区域的条柱共用同一个位置 ID。 包含相同持续时间的条柱共用相同的时间步长 ID。

    时空立方体中的位置

  • 时空立方体中每个条柱都有 LOCATION_IDtime_step_IDCOUNT 值以及创建立方体后聚合的所有汇总字段值。 与同一物理位置相关的条柱将共享同一位置 ID,这些条柱组合起来可表示时间序列。 与同一时间步长间隔相关的条柱将共享同一时间步长 ID,这些条柱组合起来可构成时间片。 每个立方图格的计数值反映在相关时间步长间隔内出现在相关位置的点的数量。

  • 输入要素应为点,例如犯罪或火灾、疾病事件、客户销售数据或交通事故。 每个点都应具有与其关联的日期。 包含事件时间戳的字段必须为日期类型。 此工具最少需要 60 个点和多个时间戳。 如果指定的参数将导致立方体具有二十多亿个条柱,则此工具将无法执行。

  • 此工具需要使用投影数据来准确测量距离。

  • 此工具的输出为 netCDF,可表示输入点以及汇总了立方体特征的消息。 在工具执行期间,消息将写入到地理处理窗格底部。 可通过将鼠标悬停在进度条上、单击弹出按钮弹出按钮或展开地理处理窗格中的消息部分来访问消息。 此外,还可通过地理处理历史访问之前运行通过聚合点创建时空立方体工具的消息。 可将 netCDF 文件用作其他工具(例如新兴时空热点分析工具或局部异常值分析工具)的输入。 有关允许您查看立方体内容的策略,请参阅可视化时空立方体

  • 时间字段参数选择“日期”类型的字段。 该字段应包含与每个点要素相关联的时间戳。

  • 时间步长间隔用于定义要如何对某一时间范围内的聚合点进行分区。 您可决定使用一天、一周或一年等间隔来聚合点。 时间步长间隔始终为固定持续时间,并且此工具最少需要 10 个时间步长。 如果未提供时间步长间隔值,此工具将为您计算一个值。 有关默认时间步长间隔的计算方法的详细信息,请参阅了解有关通过聚合点创建时空立方体的工作原理的详细信息。 有效的时间步长间隔单位为年、月、日、小时、分钟和秒。

    注:

    尽管时间步长间隔下拉列表中显示有多个时间单位,但是工具仅支持年、月、周、日、小时、分钟和秒。

  • 如果您无法创建时空立方体,则工具可能无法将您提供的输入数据构建为十个时间步长间隔。 如果运行此工具时收到错误消息,请检查输入点的时间戳,确保其包含值范围。 值范围的跨度必须大于等于十秒,因为运行工具所需的最小时间增量为十秒。 Mann-Kendall 统计需要十个时间步长间隔。

  • 根据所选时间步长间隔使用事件数据创建时空立方体时,可能会在立方体的开始或结束处创建一个在整个时间跨度内不包含数据的条柱。 例如,如果您选择 1 个月作为时间步长间隔,并且数据没有平均分解为 1 个月的间隔,则在开始或结束处将存在一个不具有跨越整个时间跨度内数据的时间步长。 这可能会使结果产生偏差,因为存在时间偏差的时间步长内的点将显著少于其他时间步长内的点,而这实际上是聚合方案造成的人为结果。 消息指示第一个或最后一个时间步长中是否存在时间偏差。 一种解决方案是创建一个数据选择集,以便使数据在所需的时间步长间隔内均匀分布。

  • 数据集具有等间距的时间分布是很常见的情况。 例如,您的年度数据可能全部位于每年的 1 月 1 日,或者月度数据时间戳全部是每月的第一天。 此类数据通常被称为固定样本数据。 通过样本数据,时间偏差计算将经常显示非常大的比例。 这属于预期行为,因为每个条柱仅覆盖给定的时间步长中的一个特定时间单位。 例如,如果您选择 1 年作为时间步长间隔,并且您的数据分布在每年的 1 月 1 日,则每个条柱将仅覆盖一年中的一天。 这是可以接受的,因为其适用于每一立方图格。 由于条柱创建参数,而不是真实数据分布,时间偏差仅表示特定条柱时出现问题。 重要的是基于数据分布就每个条柱的预期覆盖评估时间偏差。

  • 输出报告中的时间偏差计算的是不存在任何数据的时间跨度的百分比。 例如,空条柱的时间偏差为 100%。 对于时间跨度为 1 个月、时间步长对齐为结束时间,且第一个时间步长只有后两周具有数据的条柱,其第一个时间步长中的时间偏差为 50%。 对于时间跨度为 1 个月、时间步长对齐为开始时间,且最后一个时间步长只有前两周具有数据的条柱,其最后一个时间步长中的时间偏差为 50%。

  • 时空立方体创建完成后,无法再对立方体的空间范围进行扩展。 如果对时空立方体的深入分析涉及到使用研究区域(例如新兴时空热点分析工具中的面分析掩膜),则您将希望确保在创建立方体时,面分析掩膜未延伸超出输入要素的范围。 创建立方体时将用于深入分析的研究区域面设置为范围环境设置可确保在分析初期立方体的范围会与您所需要的范围一样大。

    旧版本:

    通过聚合点创建时空立方体工具用于创建时空立方体范围的方法在 ArcGIS Pro 1.3 和 ArcMap 10.5 版本中发生了更改。您可以在时空立方体偏差校正中了解有关此更改的详细信息。 新的偏差校正将提供更好的结果,但如果您出于各种原因而需要使用之前的范围重新创建立方体,则可以通过范围环境设置指定范围。

  • 可创建模板立方体,以使您在每次运行分析(尤其是您想要比较一系列时间段的数据)时均可使用。 通过提供相同的模板立方体,可确保分析范围、立方图格大小、时间步长间隔、参考时间以及时间步长对齐始终一致。

  • 如果提供一个模板立方体,则落在该模板立方体范围外的输入点将被排除在分析外。 同样,如果输入点要关联的空间参考不同于模板立方体关联的空间参考,则此工具将投影输入要素以在开始聚合前匹配模板立方体。 模板立方体关联的空间参考还将覆盖输出坐标系设置。 此外,不管您是否指定其他处理范围,模板立方体一经指定便将确定所用的处理范围。 有关详细信息,请参阅创建时空立方体的工作原理

  • 参考时间可以是日期和时间值或仅为日期值,但不可仅为时间值。 预期格式由计算机的区域时间设置决定。

  • 关于如何使用聚合形状类型参数在空间上聚合点,提供了以下几个选项: 如果希望聚合到形状规则的格网,您可以选择渔网或六边形形状。 尽管渔网格网是更常用的聚合形状,但在某些分析中六边形可能是更好的选择。 如果分析中涉及边界或位置(例如,人口普查区块或警务区),您也可以通过已定义位置选项使用上述形状进行聚合。

    注:

    如果已定义位置存储在文件地理数据库中,并且包含真曲线(存储为弧,而非与折点一起存储),则多边形将在存储到时空立方体时变形。 要检查已定义位置中是否包含真曲线,请通过 OGC 验证方法运行检查几何工具。 如果您收到表明所选选项不支持非线性段的错误消息,则说明真曲线位于数据集中,并且可被消除并由折点取代,方法为在创建时空立方体前将增密工具与角度增密方法结合使用。

  • 即使点数据并非矩形,但格网立方体始终为矩形,因此某些位置将会在所有时间步长内的点计数为零。 对于许多分析,只有带有数据的位置(至少一个时间步长的至少一个点计数大于 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 数。 在创建较大的时空立方体时,处理速度的提高最为明显。

参数

标注说明数据类型
输入要素

要聚合到时空立方图格的输入点要素类。

Feature Layer
输出时空立方体

将创建输出 netCDF 数据立方体以包含输入要素点数据的计数和汇总。

File
时间字段

包含每个点的日期和时间(时间戳)的字段。 此字段的类型必须是日期。

Field
模板立方体
(可选)

用于定义输出时空立方体分析范围、条柱维度和条柱对齐方式的参考时空立方体。 还可从模板立方体获取时间步长间隔距离间隔参考时间信息。 该模板立方体必须是已使用此工具创建的 netCDF (.nc) 文件。

通过聚合到已定义位置而创建的时空立方体不能用作模板立方体

File
时间步长间隔
(可选)

用来表示单个时间步长的秒数、分钟数、小时数、天数、周数或年数。 将聚合相同时间步长间隔距离间隔中的所有点。 (提供模板立方体时,将忽略此参数,并从该模板立方体获取时间步长间隔值。)

Time Unit
时间步长对齐
(可选)

定义如何根据给定的时间步长间隔进行聚合。 如果提供模板立方体,则与模板立方体相关的时间步长对齐将会覆盖此参数设置,并将使用模板立方体时间步长对齐

  • 结束时间时间步长与最后一次时间事件对齐,并向后聚合时间。
  • 开始时间时间步长与第一次时间事件对齐,并向前聚合时间。
  • 参考时间时间步长将与指定的特定日期/时间对齐。 如果输入要素中的所有点的时间戳大于您所提供的参考时间(或时间戳刚好位于输入要素的开始时间),则时间步长间隔将以该参考时间为开始时间,并向前聚合时间(与使用开始时间对齐的效果相同)。 如果输入要素中的所有点的时间戳小于您所提供的参考时间(或时间戳刚好位于输入要素的结束时间),则时间步长间隔将以该参考时间为结束时间,并向后聚合时间(与使用结束时间对齐的效果相同)。 如果提供的参考时间处于数据时间范围的中间,则将以提供的参考时间结束创建时间步长间隔(与使用结束时间对齐的情况相同);其他间隔将在参考时间前后进行创建,直到覆盖数据的完整时间范围为止。
String
参考时间
(可选)

用于对齐时间步长间隔的日期/时间。 例如,如果想要按星期从星期一至星期天对数据进行归类,可以将星期天的午夜设置为参考时间,以确保条柱在星期天和星期一之间的午夜进行划分。 (提供模板立方体时,将禁用此参数,因为参考时间将由模板立方体确定。)

Date
距离间隔
(可选)

用于聚合输入要素的条柱尺寸。 将对相同距离间隔时间步长间隔内的所有点进行聚合。 当聚合到六边形网格时,该距离用作构建六边形面的高度。 (提供模板立方体时,将禁用此参数,因为距离间隔值将由模板立方体确定。)

Linear Unit
汇总字段

包含属性值的数值字段,用于在将数据聚合到时空立方体时计算指定的统计数据。 可以指定多项统计和字段组合。 在任何指定字段中出现的空值都将导致从输出立方体中删除相应要素。 如果输入要素中出现空值,则强烈建议您在创建时空立方体前先运行填充缺失值工具。

可用的统计类型有:

  • SUM - 添加每个条柱中指定字段的合计值。
  • MEAN - 计算每个条柱中指定字段的平均值。
  • MIN - 查找每个条柱中指定字段所有记录的最小值。
  • MAX - 查找每个条柱中指定字段所有记录的最大值。
  • STD - 查找每个条柱中指定字段的值的标准差。
  • MEDIAN - 查找每个条柱中指定字段所有记录的中值。

可用填充类型有:

  • ZEROS - 用零填充空条柱。
  • SPATIAL_NEIGHBORS - 用空间相邻要素平均值填充空条柱。
  • SPACE_TIME_NEIGHBORS - 用时空相邻要素平均值填充空条柱。
  • TEMPORAL_TREND - 使用一元样条插值算法填充空条柱。

注:

任何汇总字段记录中出现的空值都将导致从输出立方体中排除这些要素。 如果输入要素中出现空值,则强烈建议您先运行填充缺失值工具。 如果在运行填充缺失值工具后,仍存在空值而每个条柱中的点数是分析策略的一部分,您可能需要考虑创建单独的立方体,针对计数(不含汇总字段)创建一个,并针对汇总字段创建一个。 如果每个汇总字段的空值集不相同,您可能还需要考虑为每个汇总字段创建一个单独的立方体。

Value Table
聚合形状类型
(可选)

输入要素点数据将要聚合到的面网格形状。

  • 渔网网格输入要素将要聚合到方形(渔网)像元网格中。
  • 六边形网格输入要素将要聚合到六边形像元网格中。
  • 已定义位置输入要素将聚合到所提供的位置。
String
已定义面位置
(可选)

输入点数据将要聚合到的面要素。 例如,这些数据可表示县边界、警务区或销售区域。

Feature Layer
位置 ID
(可选)

包含每个唯一位置的 ID 编号的字段。

Field

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_intervaldistance_intervalreference_time 值。 该模板立方体必须是已使用此工具创建的 netCDF (.nc) 文件。

通过聚合到 DEFINED_LOCATIONS 而创建的时空立方体不能用作 template_cube

File
time_step_interval
(可选)

用来表示单个时间步长的秒数、分钟数、小时数、天数、周数或年数。 将对位于同一 time_step_intervaldistance_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_cubetime_step_alignment

  • END_TIME时间步长与最后一次时间事件对齐,并向后聚合时间。
  • START_TIME时间步长与第一次时间事件对齐,并向前聚合时间。
  • REFERENCE_TIME时间步长将与指定的特定日期/时间对齐。 如果输入要素中的所有点的时间戳大于您所提供的参考时间(或时间戳刚好位于输入要素的开始时间),则时间步长间隔将以该参考时间为起始时间,并向前聚合时间(与使用 START_TIME 对齐的效果相同)。 如果输入要素中的所有点的时间戳小于您提供的参考时间(或时间戳刚好位于输入要素的结束时间),则时间步长间隔将以该参考时间为结束时间,并向后聚合时间(与使用 END_TIME 对齐的效果相同)。 如果提供的参考时间处于数据时间范围的中间,则将创建以提供的参考时间为结束的时间步长间隔(与使用 END_TIME 对齐的效果相同);其他间隔将在参考时间前后进行创建,直到覆盖数据的完整时间范围。
String
reference_time
(可选)

用于对齐时间步长间隔的日期/时间。 例如,如果想要按星期从星期一至星期天对数据进行归类,可以将星期天的午夜设置为参考时间,以确保条柱在星期天和星期一之间的午夜进行划分。 (提供 template_cube 时,可忽略此参数,因为 reference_time 将由 template_cube 确定。)

Date
distance_interval
(可选)

用于聚合 in_features 的条柱尺寸。 将对相同 distance_intervaltime_step_interval 内的所有点进行聚合。 当聚合到六边形网格时,该距离用作构建六边形面的高度。 (提供 template_cube 时,可忽略此参数,因为距离间隔值将由 template_cube 确定。)

Linear Unit
summary_fields
[[Field, Statistic, Fill Empty Bins with],...]

包含属性值的数值字段,用于在将数据聚合到时空立方体时计算指定的统计数据。 可以指定多项统计和字段组合。 在任何指定字段中出现的空值都将导致从输出立方体中删除相应要素。 如果输入要素中出现空值,则强烈建议您在创建时空立方体前先运行填充缺失值工具。

可用的统计类型有:

  • SUM - 添加每个条柱中指定字段的合计值。
  • MEAN - 计算每个条柱中指定字段的平均值。
  • MIN - 查找每个条柱中指定字段所有记录的最小值。
  • MAX - 查找每个条柱中指定字段所有记录的最大值。
  • STD - 查找每个条柱中指定字段的值的标准差。
  • MEDIAN - 查找每个条柱中指定字段所有记录的中值。

可用填充类型有:

  • ZEROS - 用零填充空条柱。
  • SPATIAL_NEIGHBORS - 用空间相邻要素平均值填充空条柱。
  • SPACE_TIME_NEIGHBORS - 用时空相邻要素平均值填充空条柱。
  • TEMPORAL_TREND - 使用一元样条插值算法填充空条柱。

注:

任何汇总字段记录中出现的空值都将导致从输出立方体中排除这些要素。 如果输入要素中出现空值,则强烈建议您先运行填充缺失值工具。 如果在运行填充缺失值工具后,仍存在空值而每个条柱中的点数是分析策略的一部分,您可能需要考虑创建单独的立方体,针对计数(不含汇总字段)创建一个,并针对汇总字段创建一个。 如果每个汇总字段的空值集不相同,您可能还需要考虑为每个汇总字段创建一个单独的立方体。

Value Table
aggregation_shape_type
(可选)

输入要素点数据将要聚合到的面网格形状。

  • FISHNET_GRID输入要素将要聚合到方形(渔网)像元网格中。
  • HEXAGON_GRID输入要素将要聚合到六边形像元网格中。
  • DEFINED_LOCATIONS输入要素将聚合到所提供的位置。
String
defined_polygon_locations
(可选)

输入点数据将要聚合到的面要素。 例如,这些数据可表示县边界、警务区或销售区域。

Feature Layer
location_id
(可选)

包含每个唯一位置的 ID 编号的字段。

Field

代码示例

CreateSpaceTimeCube 示例 1(Python 窗口)

以下 Python 窗口脚本演示了如何使用 CreateSpaceTimeCube 函数。

arcpy.env.workspace = r"C:\STPM"
arcpy.stpm.CreateSpaceTimeCube("Homicides.shp", "Homicides.nc", "OccDate", "#", 
                               "3 Months", "End time", "#", "3 Miles", 
                               "Property MEDIAN SPACETIME; Age STD ZEROS", 
                               "HEXAGON_GRID")
CreateSpaceTimeCube 示例 2(独立脚本)

以下独立 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.stpm.CreateSpaceTimeCube("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.management.MinimumBoundingGeometry("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.stpm.EmergingHotSpotAnalysis("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: 是

相关主题