通过已定义位置创建时空立方体 (时空模式挖掘)

摘要

通过创建时空立方图格将面板数据或站点数据(地理位置不会改变,但属性会随时间改变的已定义位置)构建为 netCDF 数据格式。 对于所有位置,评估变量或汇总字段趋势。

了解有关“通过已定义位置创建时空立方体”工作原理的详细信息

插图

“通过已定义位置创建时空立方体”工具图示

使用情况

  • 由此工具创建的数据结构可被视为由时空立方图格组成的一个 3D 立方体,其中 x 和 y 维度表示空间,t 维度表示时间。

    3D 立方体中的时空立方图格

  • 每个立方图格在空间(如果输入点,则为 x,y 位置;如果输入面位置,则为一组固定的折点)和时间 (t) 中都有固定位置。 覆盖同一已定义位置区域(无论 x,y 还是折点)的立方图格将共用同一个位置 ID。 包含相同持续时间的立方图格共用相同的时间步长 ID。

    时空立方体中的位置

  • 时空立方体中的每个立方图格都具有 LOCATION_IDtime_step_IDCOUNT 值以及创建立方体后包括的变量汇总字段参数值。 与同一物理位置相关的立方图格将共享同一位置 ID,这些立方图格组合起来可表示时间序列。 与同一时间步长间隔相关的立方图格将共享同一时间步长 ID,这些立方图格组合起来可构成时间片。

  • 输入要素可以是点或面,并且应该表示具有随时间收集的关联属性的已定义或固定位置。 此类数据通常称为固定样本或站点数据。 包含事件时间戳的字段必须为日期类型。

    注:

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

  • 输入要素可以是包含在同一要素类中的重复形状,也可以是一组要素,其相关表包含随时间记录的属性。

  • 如果指定参数将导致立方体具有的立方图格数量超过 20 亿,则此工具将失败。

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

  • 如果选中时间聚合参数,则生成的时空立方体将包含各个立方图格的计数值,可反映在相关时间步长间隔内出现在相关位置的事件的数量。

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

  • 时间字段参数提供日期类型的字段。 如果输入为重复形状,则此字段应包含与各个要素相关联的时间戳。 如果提供了相关表参数值,则此字段将为与表中各个记录相关联的时间戳。 如果该字段为高精度(包含毫秒值),则每个时空立方图格的时间戳将仅包含秒,并且将忽略任何毫秒。

  • 时间步长间隔参数用于定义对数据的时间范围进行分区的方式。 如果取消选中时间聚合参数,请将时间步长间隔参数设置为数据的现有结构。 例如,对于每五年收集一次的人口普查数据,输入应为 5 年。 要进行时间聚合,请选中时间聚合参数。 例如,对于每 5 分钟记录一次的传感器数据,可以使用一天间隔进行聚合。 时间步长间隔始终为固定持续时间,并且此工具最少需要 10 个时间步长。

    注:

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

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

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

  • 在聚合变量或汇总字段值上执行的趋势分析是以 Mann-Kendall 统计为基础的。

  • 使用此工具可对属性聚合执行以下统计运算:总和、平均值、最小值、最大值、标准差和中值。

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

  • 当使用空间邻域填充空立方图格时,此工具会根据最邻近的 8 个最近相邻要素进行估算。 使用此选项填充空立方图格最少需要 4 个这样的空间相邻要素。

  • 当使用时空邻域填充空立方图格时,此工具会根据最邻近的 8 个最近相邻要素进行估算。 此外,通过向前和向后移动 1 个时间步长,对发现为时间相邻要素的每个条柱,使用空间相邻要素。 使用此选项填充空立方图格最少需要 13 个时空相邻要素。

  • 当使用时间趋势填充空立方图格时,给定位置的前两个时间段和后两个时间段在其立方图格中必须具有值,以便对该位置的其他时间段进行插值。

  • 时间趋势填充类型将使用 SciPy 插值包中的一元样条插值方法。

  • 该工具可利用具有多个 CPU(或多核 CPU)的系统来提高性能。 该工具将默认在使用 50% 可用处理器的情况下运行;但是,可以使用并行处理因子环境增大或减小使用的 CPU 数。 在创建较大的时空立方体时,处理速度的提高最为明显。

参数

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

将转换为时空立方体的输入点或面要素类。

Feature Layer
输出时空立方体

将创建的输出 netCDF 数据立方体。

File
位置 ID

包含每个唯一位置的 ID 编号的整型或文本字段。

Field
时间聚合

指定是否将对数据进行时间聚合。

  • 未选中 - 时空立方体将通过输入要素的现有时间结构进行创建。 例如,您拥有一组年度数据,并希望通过年度时间步长间隔创建立方体。 这是默认设置。
  • 选中 - 时空立方体将根据提供的时间步长间隔对要素进行时间聚合。 例如,您拥有一组每日采集的数据,并希望通过每周时间步长间隔创建立方体。
Boolean
时间字段

包含数据集中每行的时间戳的字段。 此字段必须为日期类型。

Field
时间步长间隔
(可选)

用来表示单个时间步长的秒数、分钟数、小时数、天数、周数或年数。 此参数的有效条目示例为 1 周、13 天或 1 个月。

如果未应用时间聚合(未选中时间聚合),请将此参数设置为数据的现有时间结构。

如果应用时间聚合(选中时间聚合),请将此参数设置为要创建的时间步长间隔。 将聚合相同时间步长间隔内的所有要素。

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

指定将基于给定时间步长间隔对齐立方体结构的方式。

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

将用于对齐时间步长间隔的日期和时间。 例如,要按星期从星期一至星期天对数据进行归类,请将星期天的午夜设置为参考时间,以确保立方图格在星期天和星期一之间的午夜进行划分。

Date
变量
(可选)

将在时空立方体中引入的包含属性值的数值字段。

可用填充类型如下:

  • DROP_LOCATIONS - 缺少任何变量的数据的位置将从输出时空立方体中排除。
  • ZEROS - 空立方图格将使用零进行填充。
  • SPATIAL_NEIGHBORS - 空立方图格将使用空间相邻要素的平均值进行填充。
  • SPACE_TIME_NEIGHBORS - 空立方图格将使用时空相邻要素的平均值进行填充。
  • TEMPORAL_TREND - 空立方图格将使用一元样条插值算法进行填充。

注:

任何变量记录中的空值都将导致产生空立方图格。 如果输入要素中出现空值,则建议您先运行填充缺失值工具。

Value Table
汇总字段
(可选)

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

可用统计类型如下:

  • SUM - 将计算每个立方图格中指定字段的合计值。
  • MEAN - 将计算每个立方图格中指定字段的平均值。
  • MIN - 将标识每个立方图格内指定字段所有记录的最小值。
  • MAX - 将标识每个立方图格内指定字段所有记录的最大值。
  • STD - 将计算每个立方图格中指定字段的值的标准差。
  • MEDIAN - 将计算每个立方图格中指定字段所有记录的中值。

可用填充类型如下:

  • ZEROS - 空立方图格将使用零进行填充。
  • SPATIAL_NEIGHBORS - 空立方图格将使用空间相邻要素的平均值进行填充。
  • SPACE_TIME_NEIGHBORS - 空立方图格将使用时空相邻要素的平均值进行填充。
  • TEMPORAL_TREND - 空立方图格将使用一元样条插值算法进行填充。

注:

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

Value Table
相关表
(可选)

将关联到输入要素的表或表视图。

Table View
相关位置 ID
(可选)

相关表中包含基于关联的位置 ID 的整型或文本字段。

Field

arcpy.stpm.CreateSpaceTimeCubeDefinedLocations(in_features, output_cube, location_id, temporal_aggregation, time_field, {time_step_interval}, {time_step_alignment}, {reference_time}, {variables}, {summary_fields}, {in_related_table}, {related_location_id})
名称说明数据类型
in_features

将转换为时空立方体的输入点或面要素类。

Feature Layer
output_cube

将创建的输出 netCDF 数据立方体。

File
location_id

包含每个唯一位置的 ID 编号的整型或文本字段。

Field
temporal_aggregation
  • APPLY_TEMPORAL_AGGREGATION时空立方体将根据提供的时间步长间隔对要素进行时间聚合。 例如,您拥有一组每日采集的数据,并希望通过每周时间步长间隔创建立方体。
  • NO_TEMPORAL_AGGREGATION时空立方体将通过输入要素的现有时间结构进行创建。 例如,您拥有一组年度数据,并希望通过年度时间步长间隔创建立方体。 这是默认设置。
Boolean
time_field

包含数据集中每行的时间戳的字段。 此字段必须为日期类型。

Field
time_step_interval
(可选)

用来表示单个时间步长的秒数、分钟数、小时数、天数、周数或年数。 此参数的有效条目示例为 1 周、13 天或 1 个月。

如果不应用时间聚合 (temporal_aggregation = "NO TEMPORAL_AGGREGATION"),请将此参数设置为数据的现有时间结构。

如果应用时间聚合 (temporal_aggregation = "APPLY TEMPORAL_AGGREGATION"),请将此参数设置为要创建的时间步长间隔。 将聚合相同时间步长间隔内的所有要素。

Time Unit
time_step_alignment
(可选)

指定将基于给定 time_step_interval 值对齐立方体结构的方式。

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

将用于对齐时间步长间隔的日期和时间。 例如,要按星期从星期一至星期天对数据进行归类,请将星期天的午夜设置为参考时间,以确保立方图格在星期天和星期一之间的午夜进行划分。

Date
variables
[[Field, Fill Empty Bins with],...]
(可选)

将在时空立方体中引入的包含属性值的数值字段。

可用填充类型如下:

  • DROP_LOCATIONS - 缺少任何变量的数据的位置将从输出时空立方体中排除。
  • ZEROS - 空立方图格将使用零进行填充。
  • SPATIAL_NEIGHBORS - 空立方图格将使用空间相邻要素的平均值进行填充。
  • SPACE_TIME_NEIGHBORS - 空立方图格将使用时空相邻要素的平均值进行填充。
  • TEMPORAL_TREND - 空立方图格将使用一元样条插值算法进行填充。

注:

任何变量记录中的空值都将导致产生空立方图格。 如果输入要素中出现空值,则建议您先运行填充缺失值工具。

Value Table
summary_fields
[[Field, Statistic, Fill Empty Bins with],...]
(可选)

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

可用统计类型如下:

  • SUM - 将计算每个立方图格中指定字段的合计值。
  • MEAN - 将计算每个立方图格中指定字段的平均值。
  • MIN - 将标识每个立方图格内指定字段所有记录的最小值。
  • MAX - 将标识每个立方图格内指定字段所有记录的最大值。
  • STD - 将计算每个立方图格中指定字段的值的标准差。
  • MEDIAN - 将计算每个立方图格中指定字段所有记录的中值。

可用填充类型如下:

  • ZEROS - 空立方图格将使用零进行填充。
  • SPATIAL_NEIGHBORS - 空立方图格将使用空间相邻要素的平均值进行填充。
  • SPACE_TIME_NEIGHBORS - 空立方图格将使用时空相邻要素的平均值进行填充。
  • TEMPORAL_TREND - 空立方图格将使用一元样条插值算法进行填充。

注:

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

Value Table
in_related_table
(可选)

将关联到输入要素的表或表视图。

Table View
related_location_id
(可选)

相关表中包含基于关联的位置 ID 的整型或文本字段。

Field

代码示例

CreateSpaceTimeCubeDefinedLocations 示例 1(Python 窗口)

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

import arcpy
arcpy.env.workspace = r"C:\STPM\Chicago.gdb"
arcpy.stpm.CreateSpaceTimeCubeDefinedLocations("Chicago_Data", r"C:\STPM\Chicago_Cube.nc", "MYID",
                                               "NO_TEMPORAL_AGGREGATION", "TIME", "1 Months",
                                               "END_TIME", "", "COUNT ZEROS")
CreateSpaceTimeCubeDefinedLocations 示例 2(独立脚本)

以下独立 Python 脚本演示了如何使用 CreateSpaceTimeCubeDefinedLocations 函数。

# Fill missing values using a feature set and related table
# Use the results to create a space-time cube from defined locations
# Run Emerging Hot Spot Analysis on the data
# Visualize the results in 3d

# Import system modules
import arcpy

# Set overwriteOutput property to overwrite existing output, by default
arcpy.env.overwriteOutput = True

# Local variables ...
arcpy.env.workspace = r"C:\STPM\Chicago.gdb"

try:

    # Fill missing values in a feature class containing block group polygon shapes and a related table containing the incidents
    # Since some of the values are missing, fill them using the temporal trend method

    arcpy.stpm.FillMissingValues("Chicago_Feature", "Chicago_FilledFeature", "COUNT", "TEMPORAL_TREND", "", "", NoneNone,
                                 "TIME", "", "MYID", "Chicago_Table", "MYID", "", "", "", "Chicago_FilledTable")



    # Create a defined location space-time cube using a related table
    # Using a reference time at the start of the month to force binning fall on month breaks
    # Using temporal aggregation to sum multiple entries into one month
    # Using the method drop location if missing values since you already filled using Fill Missing Values
    arcpy.stpm.CreateSpaceTimeCubeDefinedLocations("Chicago_FilledFeature", r"C:\STPM\Chicago_Cube.nc", "MYID",
                                                   "APPLY_TEMPORAL_AGGREGATION", "TIME", "1 Months", "REFERENCE_TIME",
                                                   "10/1/2015", "", "COUNT SUM DROP_LOCATIONS", "Chicago_FilledTable",
                                                   "MYID")

    # Run an emerging hot spot analysis on the defined locations cube
    # Using contiguity edges so only block groups that bound each other are considered neighbors
    arcpy.stpm.EmergingHotSpotAnalysis(r"C:\STPM\Chicago_Cube.nc", "COUNT_SUM_NONE",
                                       "Chicago_Cube_EmergingHotSpot", "", 1, "",
                                       "CONTIGUITY_EDGES_ONLY")

    # Use Visualize Cube in 3d to see the hot spot results for each time slice
    arcpy.stpm.VisualizeSpaceTimeCube3D(r"C:\STPM\Chicago_Cube.nc", "COUNT_SUM_NONE", "HOT_AND_COLD_SPOT_RESULTS",
                                        "Chicago_Cube_Visualize3d")

except arcpy.ExecuteError:
    # If any error occurred when running the tool, print the messages
    print(arcpy.GetMessages())