| 标注 | 说明 | 数据类型 | 
| 输入要素 | 将从中找到停留的点轨迹。 输入必须为启用时间的图层,并具有用于表示时刻的要素。 | Feature Layer | 
| 输出数据集 | 带有所生成停留的输出要素类。 | Feature Class | 
| 轨迹字段 | 将用于标识唯一轨迹的一个或多个字段。 | Field | 
| 距离法 | 指定如何计算停留要素之间的距离。 
 | String | 
| 距离容差 | 点之间将视为一个停留位置的最大距离。 | Linear Unit | 
| 时间容差 | 将视为单个停留位置的最短持续时间。 在查找停留时,系统会同时考虑时间和距离。 请使用距离容差参数指定距离。 | Time Unit | 
| 输出类型 | 用于指定将如何输出停留要素。 
 | String | 
| 汇总统计数据 (可选) | 将根据指定字段进行计算的统计数据。 
 | Value Table | 
| 时间界限分割 (可选) | 用于分割输入数据以进行分析的时间跨度。 您可通过时间界限分析定义的时间跨度内的值。 例如,如果您使用 1 天的时间界限,并将时间界限参考设置为 1980 年 1 月 1 日,则轨迹将在每天开始时被分割。 | Time Unit | 
| 时间界限参考 (可选) | 用于分割输入数据以进行分析的参考时间。 将为整个数据跨度创建时间界限,且不需要在开始时产生参考时间。 如果未指定参考时间,则将使用 1970 年 1 月 1 日。 | Date | 
摘要
使用给定的时间和距离阈值来查找移动对象已停止或停留的位置。
插图

使用情况
- 输入图层必须为启用时间的点要素,用于表示时刻。 
- 停留位置被定义为在一定时间内极少移动或没有移动的连续观测点。 根据具体的应用领域,可将其称为停留点或空闲检测。 
- 下表列出了查找停留位置工具中使用的术语: - 术语 - 描述 - 停留位置 - 在给定时间和距离参数的情况下表示轨迹何时静止的要素。 此为工具的输出结果,可将停留要素表示为点、凸包或平均中心。 - 轨迹 - 已启用时间且时间类型为时刻的要素序列。 要素由轨迹标识符字段确定处于序列中,并按时间进行排序。 例如,某个城市拥有一支扫雪车队,每 10 分钟记录一次车辆的位置。 车辆 ID 可以表示不同的轨迹。 - 观测 - 轨迹中的一个点。 - 测地线 - 在球体上绘制的线。 在地球上绘制的测地线表示地球大地水准面的曲率。 - 平面 - 在平面上(即笛卡尔平面)上测量的直线距离。 这也被称为欧氏距离。 - 时刻 - 由开始时间表示的单个时间点且无结束时间。 - 间隔 - 由开始时间和结束时间表示的一段时间。 
- 结果是表示时刻的点要素,或是表示时间间隔的面要素。 间隔的开始和结束由停留中第一个和最后一个要素的时间决定。 
- 任何不具备时间的要素都将从分析中排除。 
- 停留位置只能在具有多个要素的轨迹中检测到。 
- 停留位置需要同时使用时间(时间容差参数)和距离(距离容差参数)值进行确定。 首先,该工具将使用唯一标识符将要素分配给轨迹。 轨迹的顺序取决于要素的时间。 接下来,将计算轨迹中的第一个观测点与下一个观测点之间的距离。 如果两个时间上连续的点至少在给定的持续时间内保持在给定的距离内,则要素将被视为停留的一部分。 如果发现两个要素是停留的一部分,则停留中的第一个要素将被用作参考点,且该工具会找到位于停留中参考点的指定距离内的连续要素。 找到指定距离内的所有要素后,该工具将采集停留要素并计算其平均中心。 如果当前停留之前和之后的要素位于停留位置的平均中心的给定距离内,则系统会将其添加到停留中。 此过程将一直持续到轨迹结束。 
- 可以指定一个或多个字段用于标识轨迹。 轨迹由一个或多个轨迹字段的唯一组合表示。 
- 默认情况下,系统将使用测地线方法创建停留位置,以进行距离计算。 建议在以下情况下使用测地线距离: - 跨越国际日期变更线的轨迹 - 当使用测地线方法时,越过国际日期变更线的输入图层将具有正确跨越国际日期变更线的轨迹。 这是默认设置。 必须将输入图层或处理空间参考设置为支持环绕国际日期变更线的空间参考,例如“世界圆柱等积”等全球投影。
- 数据集不在局部投影中 - 如果输入数据在局部投影中,请使用平面距离方法。 例如,使用平面方法检查单个州内的停留位置。 您的输入图层或处理空间参考必须设置为数据集本地的空间参考。
 
- 输出停留位置可通过四种方式表示。 下表显示了每种方式的示例: - 输出类型参数选项 - 描述 - 示例 - 所有要素 - 将返回每个要素。 生成的要素将具有时间类型时刻。 - 属于停留的要素将渲染为蓝色。 不属于停留的要素将渲染为灰色。 - 对于此输出类型,将仅计算计数统计数据。 该计数将表示属于单个停留的要素的数量。 不属于停留的要素的计数为 0。  - 停留要素 - 仅返回组成停留的要素。 生成的要素将具有时间类型时刻。 - 对于此输出类型,将仅计算计数统计数据。 该计数将表示属于单个停留的要素的数量。  - 平均中心 - 每个停留都会返回一个点,用于表示停留在时间和距离上的平均中心。 生成的要素将具有时间类型间隔。 - 系统将始终计算停留中的要素计数。 您可以选择计算有关此类型停留要素的统计数据。 默认情况下,系统不会计算任何统计数据。  - 凸包 - 每个停留都由停留要素的凸包表示。 生成的要素将具有时间类型间隔。 - 系统将始终计算停留中的要素计数。 您可以选择计算有关此类型停留要素的统计数据。 默认情况下,系统不会计算任何统计数据。  - 折叠停留要素 - 将返回所有不属于停留的输入点要素以及每个停留的起点和终点。 - 对于此输出类型,将仅计算计数统计数据。 该计数将表示属于单个停留的要素的数量。  
- 除了来自输入图层的字段之外,所有输出要素中还包括以下字段: - 字段名 - 描述 - count - 曾位于停留中的要素数 - dwellid - 要素所属的停留的唯一 ID - meanx - 构成停留的 x 坐标的平均值 - meany - 构成停留的 y 坐标的平均值 - meandistance - 停留位置中连续点之间的平均距离 - dwellduration - 停留位置中包含的第一个和最后一个观测点之间的持续时间(以毫秒为单位) - date - 当输出类型为停留要素、平均中心或所有要素时,创建单个要素的时间 - start_date - 输出类型为凸包时创建的开始时间 - end_date - 输出类型为凸包时创建的结束时间 - 如果输出类型为所有要素或折叠停留要素,则属于停留的结果将计算出上述字段。 不属于停留的结果将为 count 字段返回值 0,date 字段将返回输入要素的时间值,且所有其他字段将返回空值。 
- 使用时间界限分割参数来分割轨迹。 定义间隔的线段轨迹。 例如,如果您将时间界限参考设置为 1 天,开始于 1990 年 1 月 1 日上午 9:00,则轨迹会在每天上午 9:00 被截断。 此分割方法可加快计算速度的快速方法,因为它可以创建较小的追踪以进行分析。 如果分析更适合按重复的时间边界进行分割,则建议使用大数据处理。 
- 当计算凸包且停留位置完全静止(一个唯一位置)或由两个唯一点组成时,系统会将基于分析中使用的空间参考容差的较小值用作宽度、高度或直径,以创建输出面而非凸包。 这些面将用于可视化,且不表示停留的空间范围。 下面的表格中将介绍此类情况的示例: - 输入情况 - 描述 - 示例 - 重合(一个空间唯一点) - 如果输入要素发生堆叠(重合),则生成的凸包将为无效的面。 - 在此示例中,重合输入要素由位于黄色面中心的红点表示。 黄色面表示重合点的输出凸包结果。 蓝色面可表示当单个停留位置中存在四个非重合点时的真正凸多边形外观。  - 共线(两个空间唯一点) - 如果输入要素位于一条线上(最常见于两个空间唯一点),则生成的凸多边形将为无效面。 - 在此示例中,共线点由黄色面内的红色点表示。 黄色面表示共线点的输出凸包结果。  
- 在选择用于计算停留位置的参数时,请考虑观测类型和要查找的停留比例。 以下是有关如何修改参数以查找移动数据中的停留的示例: - 船舶要素具有 vesselID 和 tripID 字段。- 将 vesselID 和 tripID 字段用作标识符,以计算沿不同路线的停留位置。
- 使用 1 小时的时间容差和 1 海里的距离容差来查找船只在其 1 海里范围内停留至少 1 小时的位置。
 
 - 动物追踪器具有 animalID 字段。- 将 animalID 字段用作标识符,以比较特定动物的停留位置。
- 要确定动物的活动范围,请使用 3 天的时间容差和 10 英里的距离容差,以查找感兴趣的动物栖息地。
- 对于较小的感兴趣区域,请使用 2 小时的时间容差和 100 米的距离容差。
 
 
- 船舶要素具有 vesselID 和 tripID 字段。
- 您可以通过以下一个或多个操作来提升查找停留位置工具的性能: - 设置范围环境,以便仅分析感兴趣的数据。
- 将结果输出为停留要素或平均中心值。
- 通过添加轨迹字段输入来最大程度细分轨迹。
- 使用平面方法而非测地线方法进行距离计算。
- 使用时间界限分割参数来分割轨迹。
- 将本地数据用于分析运行的位置。
 
- 此地理处理工具由 Spark 作为支持。 可在台式计算机上并行使用多个核来完成分析。 要了解有关运行分析的详细信息,请参阅 GeoAnalytics Desktop 工具的注意事项。 
- 运行 GeoAnalytics Desktop 工具时,将在台式计算机上完成分析。 为获得最佳性能,应在桌面上提供数据。 如果使用的是托管要素图层,则建议您使用 ArcGIS GeoAnalytics Server。 如果您的数据不是本地数据,则运行工具需要更长时间。 要使用 ArcGIS GeoAnalytics Server 执行分析,请参阅 GeoAnalytics Tools。 
参数
arcpy.geoanalytics.FindDwellLocations(input_features, output, track_fields, distance_method, distance_tolerance, time_tolerance, output_type, {summary_statistics}, {time_boundary_split}, {time_boundary_reference})| 名称 | 说明 | 数据类型 | 
| input_features | 将从中找到停留的点轨迹。 输入必须为启用时间的图层,并具有用于表示时刻的要素。 | Feature Layer | 
| output | 带有所生成停留的输出要素类。 | Feature Class | 
| track_fields [track_fields,...] | 将用于标识唯一轨迹的一个或多个字段。 | Field | 
| distance_method | 指定如何计算停留要素之间的距离。 
 | String | 
| distance_tolerance | 点之间将视为一个停留位置的最大距离。 | Linear Unit | 
| time_tolerance | 将视为单个停留位置的最短持续时间。 在查找停留时,系统会同时考虑时间和距离。 请使用距离容差参数指定距离。 | Time Unit | 
| output_type | 用于指定将如何输出停留要素。 
 | String | 
| summary_statistics [summary_statistics,...] (可选) | 将根据指定字段进行计算的统计数据。 
 | Value Table | 
| time_boundary_split (可选) | 用于分割输入数据以进行分析的时间跨度。 您可通过时间界限分析定义的时间跨度内的值。 例如,如果您使用 1 天的时间界限,并将时间界限参考设置为 1980 年 1 月 1 日,则轨迹将在每天开始时被分割。 | Time Unit | 
| time_boundary_reference (可选) | 用于分割输入数据以进行分析的参考时间。 将为整个数据跨度创建时间界限,且不需要在开始时产生参考时间。 如果未指定参考时间,则将使用 1970 年 1 月 1 日。 | Date | 
代码示例
以下独立脚本演示了如何使用 FindDwellLocations 函数。
# Name: FindDwellLocations.py
# Description: Find the mean centers representing locations where ships have 
#              stayed within 1 mile across 4 hours of travel.
# Requirements: ArcGIS GeoAnalytics Desktop tools
# Import system modules
import arcpy
# Enable time on the input features using an .lyrx file.
# To create the .lyrx file, add your layer to a map, open the layer properties 
# and enable time. Then right-click the layer and select Share As Layer File.
inputLyrx = r'C:\data\MyAtlanticShips.lyrx'
# MakeFeatureLayer converts the .lyrx to features
myAtlanticShipsInputLayer = arcpy.management.MakeFeatureLayer(inputLyrx, "MyAtlanticShips_layer")
# ApplySymbologyFromLayer sets the time using the .lyrx file definition
arcpy.management.ApplySymbologyFromLayer(myAtlanticShipsInputLayer, inputLyrx)
# Set local variables
outFeatures = "c:/mydata/OutputDatasets/AtlanticShips_DwellLocations.shp"
trackIdentifier = "SHIPID"
distance = "1 Miles"
timeDuration = "4 Hours"
outputType = "MEAN_CENTERS"
statistics = [["SPEED", "MEAN"]]
# Run Find Dwell Locations
arcpy.gapro.FindDwellLocations(myAtlanticShipsInputLayer, outFeatures, trackIdentifier, 
                               "GEODESIC", distance, timeDuration, 
                               outputType, statistics)