标注 | 说明 | 数据类型 |
输入要素 | 输入运动轨迹点,用于分析是否为可能的常用地点。 图层必须已启用时间。 | Feature Layer |
追踪 ID 字段 | 包含将源数据组织成运动轨迹的唯一标识符的字段。 | Field |
输出要素类 | 包含可能常用位置的输出面要素类。 | Feature Class |
表达式 (可选) | 用于选择记录子集的 SQL 表达式。 | SQL Expression |
搜索距离 (可选) | 运动轨迹点在不再被视为常用位置的一部分之前可以徘徊的最大距离。 默认值是 100 米。 | Linear Unit |
最短徘徊时间 (可选) | 运动轨迹点在被视为停留之前可以在区域中徘徊的最短时间。 该值有助于识别可能常用位置,其中多个唯一运动轨迹停留在同一时间和空间。 默认值为 10 分钟。 | Time Unit |
时间界限 (可选) | 将用于拆分输入要素参数值的时间跨度。 例如,如果您使用始于 1 天的时间界限,则轨迹将在每天开始时被分割。 | Time Unit |
每个位置的最小停留数 (可选) | 要定义为常用位置所需发生的重叠单次停留的最小数量。 默认情况下,将返回满足停留条件的所有位置。 | Long |
归一化每天分布 (可选) | 指定是否对停留位置的每日分布进行归一化。 归一化值表示在特定日期停留位置发生的总时间的百分比,而实际值表示在给定日期发生的停留总数。
| Boolean |
汇总字段 (可选) | 指定将计算的统计数据。 可以计算以下变量的统计数据:
支持以下统计数据:
| Value Table |
摘要
识别运动轨迹已停留多个时间段的区域,并根据轨迹标识符聚合这些位置。
使用情况
该工具可识别运动轨迹持续停留的位置。 这有助于为唯一运动轨迹标识符制定正常的生活模式,并有助于确定可能的新感兴趣区域以帮助调查。
生活模式是在给定时间段内与实体相关的一组特定行为和运动。 它在调查中被广泛使用,可以更好地了解特定实体位于给定位置特定次数的时间。
查找常用位置工具中使用了以下术语:
- 常用位置 - 表示多个停留位置在多个时间间隔内在空间中相交的位置。
- 停留位置 - 在给定时间和距离参数的情况下表示轨迹何时静止的要素。
- 轨迹 - 已启用时间且时间类型为时刻的要素序列。 要素由轨迹标识符字段确定处于序列中,并按时间进行排序。 例如,带有海上移动通信业务标识 (MMSI) 的船舶近乎实时地报告其位置。 在本例中,MMSI 可以代表不同的轨迹。
- 时刻 - 由开始时间表示的单个时间点且无结束时间。 这有时被称为时间时刻。
- 间隔 - 由开始时间和结束时间表示的持续时间。 这有时被称为时间间隔。
查找常用位置工具与查找汇合位置工具的不同之处在于,查找汇合位置标识多个独特的运动轨迹在空间和时间上共存的区域。 查找常用位置工具可识别单个唯一运动轨迹在多个唯一时间间隔内停留在同一位置的位置。
停留位置是使用最短徘徊时间和搜索距离参数值确定的。 首先,该工具将使用唯一标识符将要素分配给轨迹。 轨迹的顺序取决于要素的时间。 接下来,将计算轨迹中的第一个观测点与下一个观测点之间的距离。 如果两个时间上连续的点至少在给定的持续时间内保持在给定的距离内,则要素将被视为停留的一部分。 如果发现两个要素是停留的一部分,则停留中的第一个要素将被用作参考点,且该工具会找到位于停留中参考点的指定距离内的连续要素。 找到指定距离内的所有要素后,该工具将采集停留要素并计算其平均中心。 如果当前停留之前和之后的要素位于停留位置的平均中心的给定距离内,则系统会将其添加到停留中。 此过程将一直持续到轨迹结束。
通过首先识别数据集中存在的所有停留位置来确定常用位置。 一旦它们被识别,共享相同轨迹标识符的停留位置将被组合在一起并合并。 如果指定了每个位置的最小停留数值,则该位置必须满足指定的最小停留数值才合格。 将计算额外的统计数据以查找该位置的第一次和最后一次访问、该位置的单次停留总数、该位置的总持续时间以及一周中每天活动的详细分类。
默认情况下,时间边界参数将在每天 12:00 a.m. 开始分割轨迹数据。如果停留位置从 1 月 1 日星期一 10:00 p.m. 开始,并在 1 月 2 日 2:00 a.m. 结束,将为该地点创建 1 月 1 日和 1 月 2 日的停留位置。
如果对于相同的数据,时间边界值设置为 1 周,则将在 monday 字段中创建一个值为 1 的停留位置。
必须在输入要素参数值上启用时间。
输出要素类参数值将包含以下字段:
- track_id - 从追踪 ID 字段参数中指定的值派生的唯一轨迹标识符
- area_id - 表示每个已识别常用位置的唯一值
- total_dwells - 已为指定的停留地点确定的数量 area_id
- total_time - 每个单次停留位置的持续时间总和(以秒为单位)
- location_start - 常用位置的第一个观察时刻
- location_end - 常用位置的最后一个观察时刻
- sunday - 星期日在给定 area_id 发生的单次停留地点的数量
- monday - 星期一在给定 area_id 发生的单次停留地点的数量
- tuesday - 星期二在给定 area_id 发生的单次停留地点的数量
- wednesday - 星期三在给定 area_id 发生的单次停留地点的数量
- thursday - 星期四在给定 area_id 发生的单次停留地点的数量
- friday - 星期五在给定 area_id 发生的单次停留地点的数量
- saturday - 星期六在给定 area_id 发生的单次停留地点的数量
如果选中归一化每日分布参数,则 sunday、monday、tuesday、wednesday、thursday、friday 和 saturday 字段的值将代表一周中特定日期在该位置花费的总时间的百分比。 这些值将介于 0 和 1 之间,值 1 表示 100%。 如果未选中归一化每日分布参数,则该值将代表一周中某一天在特定位置花费的时间的实际值。
此地理处理工具由 Spark 作为支持。 可在台式计算机上并行使用多个核来完成分析。 为获得最佳性能,应在台式计算机上提供数据。 如果数据不是本地数据,则运行此工具需要更长时间。
参数
arcpy.intelligence.FindFrequentedLocations(in_features, track_id_field, out_featureclass, {expression}, {search_distance}, {minimum_loiter_time}, {time_boundary}, {minimum_dwells}, {normalize_daily_distribution}, {summary_fields})
名称 | 说明 | 数据类型 |
in_features | 输入运动轨迹点,用于分析是否为可能的常用地点。 图层必须已启用时间。 | Feature Layer |
track_id_field | 包含将源数据组织成运动轨迹的唯一标识符的字段。 | Field |
out_featureclass | 包含可能常用位置的输出面要素类。 | Feature Class |
expression (可选) |
用于选择记录子集的 SQL 表达式。 有关 SQL 语法的详细信息,请参阅在 ArcGIS 中使用的查询表达式的 SQL 参考。 | SQL Expression |
search_distance (可选) | 运动轨迹点在不再被视为常用位置的一部分之前可以徘徊的最大距离。 默认值是 100 米。 | Linear Unit |
minimum_loiter_time (可选) | 运动轨迹点在被视为停留之前可以在区域中徘徊的最短时间。 该值有助于识别可能常用位置,其中多个唯一运动轨迹停留在同一时间和空间。 默认值为 10 分钟。 | Time Unit |
time_boundary (可选) | 将用于拆分输入要素参数值的时间跨度。 例如,如果您使用始于 1 天的时间界限,则轨迹将在每天开始时被分割。 | Time Unit |
minimum_dwells (可选) | 要定义为常用位置所需发生的重叠单次停留的最小数量。 默认情况下,将返回满足停留条件的所有位置。 | Long |
normalize_daily_distribution (可选) | 指定是否对停留位置的每日分布进行归一化。 归一化值表示在特定日期停留位置发生的总时间的百分比,而实际值表示在给定日期发生的停留总数。
| Boolean |
summary_fields [summary_fields,...] (可选) | 指定将计算的统计数据。 可以计算以下变量的统计数据:
支持以下统计数据:
| Value Table |
代码示例
以下 Python 脚本演示了如何在独立脚本中使用 FindFrequentedLocations 函数。
# Name FindFrequentedLocations.py
# Description: Find frequented locations in a track dataset.
import arcpy
arcpy.env.workspace = "C:/data/Tracks.gdb"
fc = "Movement_Tracks"
track_field = "user"
out_fc = "frequented_locations"
where_statement = "user = 'user_1'"
distance = "100 Meters"
loiter_time = "10 Minutes"
boundary = "1 Days"
min_dwells = 5
daily_dist = "NORMALIZED"
arcpy.intelligence.FindFrequentedLocations(fc,
track_field,
out_fc,
where,
distance,
loiter_time,
boundary,
min_dwells,
daily_dist)