迭代时间 (ModelBuilder)

使用情况

  • 该工具仅在 模型构建器 中提供,以供在模型中使用。 地理处理窗格或 Python 中不提供该工具。

  • 此工具接受包含日期字段的要素和表。

  • 此工具可迭代和过滤处于不同时间间隔和时间范围的行。 例如,针对数据的完整时态范围或其中的一部分迭代每小时的数据。 此工具将创建可作为输入用于其他工具的时态片。

  • 使用时间定义参数来筛选特定月份或工作日的行数据。 例如,如果按周迭代数据,且时间步长间隔值为 1 周,当时间定义设置为星期六星期日时,每个时态片仅返回星期六和星期日的数据。

  • 使用子集参数可以为每个时态片创建一个或多个子集。 下表展示了不同子集延迟子集持续时间值的示例,假设时态片是从 2022 年 1 月 1 日凌晨 1 点 (2022-01-01 01:00:00) 到 2022 年 1 月 2 日凌晨 1 点 (2022-01-02 01:00:00)。

    案例子集值结果

    1

    子集延迟:2 小时

    子集持续时间:2 小时

    将返回从凌晨 3 点 (2022-01-01 00:03:00) 到凌晨 5 点 (2022-01-01 00:05:00) 的数据。

    2

    子集延迟:2 小时

    子集持续时间:2 小时

    子集延迟:8 小时

    子集持续时间:4 小时

    将返回从凌晨 3 点 (2022-01-01 00:03:00) 到凌晨 5 点 (2022-01-01 00:05:00) 以及从上午 9 点 (2022-01-01 00:09:00) 到下午 1 点 (2022-01-01 00:13:00) 的数据。

    3

    子集延迟:2 小时

    子集持续时间:无

    将返回从凌晨 3 点 (2022-01-01 00:03:00) 到次日凌晨 1 点 (2022-01-02 00:01:00) 的数据。

    4

    子集延迟:2 小时

    子集持续时间:0 小时

    将返回从凌晨 3 点 (2022-01-01 00:03:00) 开始的数据。

    迭代时间子集示例

  • 使用迭代开始时间迭代结束时间参数根据数据的时态子集创建时态片。

  • 使用将迭代开始日期时间捕捉到数据将迭代结束日期时间捕捉到数据参数,以及迭代开始时间迭代结束时间参数,可将迭代的开始和结束捕捉到数据中最近的日期和时间值。

  • 时态片的开始和结束将根据参数值的组合进行计算。 下表显示了未选中跳过空切片参数时,基于不同参数组合的预期结果。 例如,数据范围为 2022-01-03 至 2022-01-31。 使用一天的间隔时,如果未指定迭代开始时间迭代结束时间参数值,则第一个时态片将基于数据的开始时间从 2022-01-03 开始,于 2022-02-01 结束。

    迭代开始时间将迭代开始日期时间捕捉到数据迭代结束时间将迭代结束日期时间捕捉到数据时态片开始时态片结束

    2022-01-03

    2022-02-01

    2022-01-01

    未选中

    2022-01-01

    2022-02-01

    2022-01-01

    选中

    2022-01-03

    2022-02-01

    2022-02-01

    未选中

    2022-01-03

    2022-02-01

    2022-02-01

    选中

    2022-01-03

    2022-01-31

    2022-01-01

    未选中

    2022-02-01

    未选中

    2022-01-01

    2022-02-01

    2022-01-01

    选中

    2022-02-01

    未选中

    2022-01-03

    2022-02-01

    2022-01-01

    未选中

    2022-02-01

    选中

    2022-01-01

    2022-01-31

    2022-01-01

    选中

    2022-02-01

    选中

    2022-01-03

    2022-01-31

  • 无论包括起点包括终点参数值如何设置,第一个时态片始终采用包括起点参数,最后一个时态片始终采用包括终点参数。 对于其间的各个时态片,数据的包含或排除取决于参数值。 例如,如果数据包含 2022-01-01 至 2022-01-03 的值,下表显示 2022-01-01 至 2022-01-03 期间以 1 天为间隔迭代的预期计数结果。

    时间片两个参数均未选中时的计数仅选中“包括起点”时的计数仅选中“包括终点”时的计数两个参数均选中时的计数

    2022-01-01 至 2022-01-02

    1

    1

    2(第一个时态片始终采用包括起点

    2

    2022-01-02 至 2022-01-03

    0

    1

    1

    2

    2022-01-03 至 2022-01-04

    0

    1

    0

    1

  • 子集参数遵循包括起始包括结束参数中的设置。

  • 当为迭代开始时间迭代结束时间参数使用同一字段时,具有空值的行将被跳过,因为它们不在任意时间范围内。

    当为迭代开始时间迭代结束时间参数使用不同的字段时,将默认跳过具有空值的行。 取消选中跳过空值参数以使其包含在迭代中。 下表显示了 2022-01-01 至 2022-01-03 期间以 1 天为间隔且选中包括起点参数时的输出时间片中是否包括某一行。

    例如,某行的开始时间字段值为空、结束时间字段值为 2022-01-02:

    时间片预期结果

    2022-01-01 至 2022-01-02

    包括(因为空行值在开始字段中)

    2022-01-02 至 2022-01-03

    包括(因为已选中包括起点参数)

    2022-01-03 至 2022-01-04

    不包括

    例如,某行的开始时间字段为 2022-01-02、结束时间字段值为空:

    时间片预期结果

    2022-01-01 至 2022-01-02

    不包括

    2022-01-02 至 2022-01-03

    包括(因为空行值在结束字段中)

    2022-01-03 至 2022-01-04

    包括(因为空行值在结束字段中)

    如果行的开始时间字段和结束时间字段中均有空值,则该行将包含在每个输出时间片中。

  • 取消选中跳过空切片参数以在输出中显示所有时态片(包括行计数为零的时态片)。 默认情况下,将隐藏空切片。

  • 对于每次迭代,该工具将返回以下输出:

    • 输出图层 - 包含匹配时态切片条件的所选行的图层
    • 开始时间 - 每个时态片的开始时间
    • 结束时间 - 每个时态片的结束时间
    • 计数 - 每个时态片中的行数

  • 两个输出参数(开始时间结束时间)采用 24 小时格式。 如果数据或任意参数值中均未指定时间,则默认中断时间为 00:00:00。

  • 开始时间结束时间参数值可以用作行内变量替换,以定义其他工具中的输出名称。 为此,请选中格式化输出时间字符串参数以返回没有特殊字符的日期和时间字符串,如下例所示。

    工具输出作为行内变量替换

    时间始终追加至开始和结束时间字符串。 要从该字符串移除时间,请使用计算值工具并将表达式设置为 "%Start Time%"[:11] + "_to_" + "%End Time%"[:11]计算值工具的输出后续可以用作复制要素工具输出中的行内变量替换。

    无时间的工具输出作为行内变量替换

参数

标注说明数据类型
输入表

要迭代的输入表。

Table View; Feature Layer
时间定义
(可选)

指定将应用于数据的过滤器。

  • 不使用过滤器。
  • 工作日将使用参数值对数据进行筛选。
  • 将使用参数值对数据进行筛选。
String
(可选)

指定将用于筛选数据的月。

如果时间定义参数值指定为,则此参数将处于活动状态。

  • 一月将返回一月的数据。
  • 二月将返回二月的数据。
  • 三月将返回三月的数据。
  • 四月将返回四月的数据。
  • 五月将返回五月的数据。
  • 六月将返回六月的数据。
  • 七月将返回七月的数据。
  • 八月将返回八月的数据。
  • 九月将返回九月的数据。
  • 十月将返回十月的数据。
  • 十一月将返回十一月的数据。
  • 十二月将返回十二月的数据。
String
(可选)

指定将用于筛选数据的工作日。

如果时间定义参数值指定为,则此参数将处于活动状态。

  • 星期一将返回星期一的数据。
  • 星期二将返回星期二的数据。
  • 星期三将返回星期三的数据。
  • 星期四将返回星期四的数据。
  • 星期五将返回星期五的数据。
  • 星期六将返回星期六的数据。
  • 星期日将返回星期日的数据。
String
时间步长间隔

用于创建时态片的时间间隔。 仅整数可以作为有效输入。

Time Unit
子集
(可选)

针对每次迭代,可以创建一个或多个时态子集。 每个子集由子集延迟子集持续时间值对定义。

每个时态片的起始偏移量由子集延迟值确定,切片的时间范围由子集持续时间值定义。

例如,一个时态片从 2022 年 1 月 1 日凌晨 1 点 (2022-01-01 01:00:00) 到 2022 年 1 月 2 日凌晨 1 点 (2022-01-02 01:00:00),子集延迟值为 2 小时。

  • 子集持续时间值为 2 小时时,时态片将从凌晨 3 点 (2022-01-01 00:03:00) 开始,到凌晨 5 点 (2022-01-01 00:05:00) 结束。
  • 子集持续时间值为空时,时态片将从凌晨 3 点 (2022-01-01 00:03:00) 开始,到次日凌晨 1 点 (2022-01-02 01:00:00) 结束。
  • 子集持续时间值为 0 时,子集将仅返回凌晨 3 点 (2022-01-01 00:03:00) 的数据。
Value Table
开始时间字段

用于定义时态范围(或时态范围的开始时间)并查询数据以创建时态片的字段。 根据用于迭代数据集的时间单位,此字段的类型可以是“日期”或“仅日期”或“仅时间”。

通过在迭代开始时间参数中指定其他的日期和时间值,即可更改时态范围。

Field
结束时间字段
(可选)

用于定义时态范围的结束时间和查询以创建时态片的字段。 该字段的字段类型必须与开始时间字段参数值的字段类型匹配。

如果数据的开始和结束时间具有单独的日期字段,则可以添加此字段。 如果数据的开始和结束时间具有单个字段,请将此参数留空,或将其设置为与开始时间字段值相同的字段。

Field
迭代开始时间
(可选)

用于创建于指定的时间、日期或日期和时间或其之后开始的数据子集的开始时间。 该值应与开始时间字段参数中设置的字段类型匹配。

Date
将迭代开始日期时间捕捉到数据
(可选)

指定迭代的开始是否与数据中最近的日期对齐。

  • 选中 - 迭代的开始将与数据中最近的日期对齐,该日期可能在为迭代开始时间参数指定的日期当天或之后。

    例如,如果迭代开始时间参数值为 2022-01-01 并且数据从 2022-01-06 开始,则迭代将从 2022-01-06 开始,并按照时间步长间隔参数定义的时间间隔划分数据。 如果步长间隔为一个月,则切片将为 2022-01-06 至 2022-02-06 等。

  • 未选中 - 迭代的开始将与为迭代开始时间参数指定的日期对齐。 这是默认设置。

    例如,如果迭代开始时间参数值为 2022-01-01 并且数据从 2022-01-06 开始,则迭代将从 2022-01-01 开始,并按照时间步长间隔参数定义的时间间隔划分数据。 如果步长间隔为一个月,则切片将为 2022-01-01 至 2022-02-01 等。

Boolean
迭代结束时间
(可选)

创建在指定时间、日期或日期和时间或其之前结束的数据子集的结束时间。 该值应与结束时间字段参数中设置的字段类型匹配。

Date
将迭代结束日期时间捕捉到数据
(可选)

指定迭代的结束是否与数据中最近的日期对齐。

  • 选中 - 迭代的结束将与数据中最近的日期对齐,该日期可能在为迭代结束时间参数指定的日期当天或之前。

    例如,如果迭代结束时间参数值为 2022-12-31,而数据结束于 2022-12-28,则迭代将结束于 2022-12-28。 最后一个切片可能小于定义的时间步长间隔。

  • 未选中 - 迭代的结束将与为迭代结束时间参数指定的最近日期对齐。 这是默认设置。

    例如,如果迭代结束时间参数值为 2022-12-31,而数据结束于 2022-12-28,则迭代将结束于 2022-12-31。 最后一个切片将根据时间间隔划分,但是其结束时间基于指定的迭代结束时间值。

Boolean
包括起点
(可选)

指定每个时间片中是否包括开始时间。

  • 选中 - 每个时间片中将包括开始时间。 这是默认设置。
  • 未选中 - 每个时间片中将不包括开始时间。
Boolean
包括终点
(可选)

指定每个时间片中是否包括结束时间。 同时选中包括起点包括终点会导致将同一个事件计数两次。 如果某个事件发生于上一个切片的结尾处,则此事件还会计入之后的切片(包括起点)。 此选项可能适用于连续事件。 例如,一场火灾可能已持续三天,而您希望了解新火灾记录和现有火灾记录的总数。

  • 选中 - 将包括小于或等于结束时间的值。
  • 未选中 - 将包括小于结束时间的值。 这是默认设置。
Boolean
跳过空值
(可选)

指定是否包括具有空日期和时间值的行。 当开始时间字段结束时间字段参数具有不同的日期字段时,此参数可用。

  • 选中 - 将不包括具有空日期和时间值的行。 这是默认设置。
  • 未选中 - 将包括具有空日期和时间值的行。

请在以下情况下取消选中此参数:

  • 开始时间字段参数值为空 - 每个时态片中都将包括所有开始时间字段参数值中具有空值的行,其将于结束字段参数值或其之前结束。
  • 结束时间字段参数值为空 - 每个时态片中都将包括所有结束时间字段参数值中具有空值的行,其将于开始字段参数值或其之后结束。
  • 开始时间字段结束时间字段参数值均为空 - 每个时态片中都将包括所有开始字段结束字段参数值中具有空值的行。

Boolean
格式化输出时间字符串
(可选)

指定是否将保留字符从输出的开始时间结束时间参数值中移除。 仅会保留字母数字和下划线字符。

  • 选中 - 将从输出的开始时间结束时间参数值中移除保留字符。 例如,如果日期和时间值为 2022-01-01 08:30:00,则格式化的字符串将为 2022_01_01_08_30_00。
  • 未选中 - 不会从输出的开始时间结束时间参数值中移除保留字符。 这是默认设置。
Boolean
跳过空切片
(可选)

指定是否移除空时间片。 空时间片不包含行。

  • 选中 - 将移除空时间片。 例如,如果输入数据没有 2022-01-02 和 2022-01-03 的记录。 使用 2022-01-01 至 2022-01-05 的时间段并以一天为间隔时,可以通过此选项跳过这两个空时间片,并且不会返回空图层。 这是默认设置。
  • 未选中 - 不会移除空时间片。 例如,如果输入数据没有 2022-01-02 和 2022-01-03 的记录。 使用 2022-01-01 至 2022-01-05 的时间段并以一天为间隔时,可以通过此选项保留这两个时间片,并将返回空图层。
Boolean

派生输出

标注说明数据类型
输出时间图层

包含匹配时态切片条件的所选行的图层。

Any Value
开始时间

每个切片的开始时间。

String
结束时间

每个切片的结束时间。

String
计数

每个切片中的行数。

Long

环境

此工具不使用任何地理处理环境。

许可信息

  • Basic: 是
  • Standard: 是
  • Advanced: 是