迭代时间 (模型构建器)

使用情况

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

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

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

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

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

  • 时态片的开始和结束将根据参数值的组合进行计算。 下表显示了未选中跳过空切片参数时,基于不同参数组合的预期结果。 例如,数据的 datetime 范围为 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

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

    当为迭代开始时间迭代结束时间参数使用不同的 datetime 字段时,将默认跳过具有空值的行。 取消选中跳过空值参数以使其包含在迭代中。 下表显示了 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。

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

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

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

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

参数

标注说明数据类型
输入表

要迭代的输入表。

Table View; Feature Layer
时间步长间隔

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

  • 数据将以分钟为单位划分。
  • 小时数据将以小时为单位划分。
  • 数据将以天为单位划分。
  • 数据将以周为单位划分。
  • 数据将以月为单位划分。
  • 数据将以年为单位划分。
  • 十年数据将以十年为单位划分。
  • 世纪数据将以世纪为单位划分。
Time Unit
开始时间字段

用于定义时态范围和查询以创建时态片的字段。

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

Field
结束时间字段
(可选)

用于定义时态范围的结束时间和查询以创建时态片的字段。

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

Field
迭代开始时间
(可选)

创建于指定的 datetime 值或其之后开始的数据子集。

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
迭代结束时间
(可选)

创建于指定的 datetime 值或其之前结束的数据子集。

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

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

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

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

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

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

Boolean
包括起点
(可选)

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

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

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

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

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

  • 选中 - 将不包括具有空 datetime 值的行。 这是默认设置。
  • 未选中 - 将包括具有空 datetimes 值的行。

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

  • 开始时间字段参数值为空 - 每个时态片中都将包括所有开始时间字段参数值中具有空值的行,直至结束字段参数值中的时间范围结束。
  • 结束时间字段参数值为空 - 每个时态片中都将包括所有结束时间字段参数值中具有空值的行,除非其不在针对该时态片的时间片查询范围内。
  • 开始时间字段结束时间字段参数值均为空 - 每个时态片中都将包括所有开始字段结束字段参数值中具有空值的行。

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

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

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

指定是否移除空(行计数 = 0)时间片。 空时间片不包含行。

  • 选中 - 将移除空时间片。 例如,如果输入数据没有 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

环境

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