迭代时间 (模型工具)
汇总
用法
此工具仅在 ModelBuilder 中提供,以供在模型中使用。 地理处理窗格或 Python 中不提供该工具。
此工具接受包含日期字段的要素和表。
此工具可迭代和过滤处于不同时间间隔和时间范围的行。 例如,针对数据的完整时态范围或其中的一部分迭代每小时的数据。 此工具将创建可作为输入用于其他工具的时态片。
使用时间定义参数来筛选特定月份或工作日的行数据。 例如,如果按周迭代数据,且时间步长间隔值为 1 周,当时间定义设置为星期六和星期日时,每个时态片仅返回星期六和星期日的数据。
使用子集参数可以为每个时态片创建一个或多个子集。 下表展示了不同子集延迟和子集持续时间值的示例,假设时态片是从 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) 的数据。

子集延迟: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) 的数据。

子集延迟:2 小时
子集持续时间:无
将返回从凌晨 3 点 (2022-01-01 00:03:00) 到次日凌晨 1 点 (2022-01-02 00:01:00) 的数据。

子集延迟: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 期间以一天为间隔且选中包括起点参数时的输出时间片中是否包括某一行。
例如,在下表中,某行的开始时间字段值为空、结束时间字段值为 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 小时。
值表列:
|
Value Table |
|
开始时间字段 |
用于定义时态范围(或时态范围的开始时间)并查询数据以创建时态片的字段。 根据用于迭代数据集的时间单位,此字段的类型可以是“日期”或“仅日期”或“仅时间”。 通过在迭代开始时间参数中指定其他的日期和时间值,即可更改时态范围。 |
Field |
|
结束时间字段 (可选) |
用于定义时态范围的结束时间并查询以创建时态片的字段。 该字段的字段类型必须与开始时间字段参数值的字段类型匹配。 如果数据的开始和结束时间具有单独的日期字段,则可以添加此字段。 如果数据的开始和结束时间具有单个字段,请将此参数留空,或将其设置为与开始时间字段值相同的字段。 |
Field |
|
迭代开始时间 (可选) |
用于创建于指定的时间、日期或日期和时间或其之后开始的数据子集的开始时间。 该值应与开始时间字段参数中设置的字段类型匹配。 |
Date |
|
将迭代开始日期时间捕捉到数据 (可选) |
指定迭代的开始是否与数据中最近的日期对齐。
|
Boolean |
|
迭代结束时间 (可选) |
创建在指定时间、日期或日期和时间或其之前结束的数据子集的结束时间。 该值应与结束时间字段参数中设置的字段类型匹配。 |
Date |
|
将迭代结束日期时间捕捉到数据 (可选) |
指定迭代的结束是否与数据中最近的日期对齐。
|
Boolean |
|
包括起点 (可选) |
指定每个时间片中是否包括开始时间。
|
Boolean |
|
包括终点 (可选) |
指定每个时间片中是否包括结束时间。 同时选中包括起点和包括终点会导致将同一个事件计数两次。 如果某个事件发生于上一个切片的结尾处,则此事件还会计入之后的切片(包括起点)。 此选项可能适用于连续事件。 例如,一场火灾可能已持续三天,而您希望了解新火灾记录和现有火灾记录的总数。
|
Boolean |
|
跳过空值 (可选) |
指定是否包括具有空日期和时间值的行。 当开始时间字段和结束时间字段参数具有不同的日期字段时,此参数可用。
请在以下情况下取消选中此参数:
|
Boolean |
|
格式化输出时间字符串 (可选) |
指定是否将保留字符从输出开始时间和结束时间参数值中移除。 仅会保留字母数字和下划线字符。
|
Boolean |
|
跳过空切片 (可选) |
指定是否移除空时间片。 空时间片不包含行。
|
Boolean |
派生输出
| 标注 | 说明 | 数据类型 |
|---|---|---|
|
输出时间图层 |
包含匹配时态切片条件的所选行的图层。 |
Any Value |
|
开始时间 |
每个切片的开始时间。 |
String |
|
结束时间 |
每个切片的结束时间。 |
String |
|
计数 |
每个切片中的行数。 |
Long |
环境
此工具不使用任何地理处理环境。
许可信息
- 基本: 是
- 标准: 是
- 高级: 是