标注 | 说明 | 数据类型 |
输入点图层 | 将与线匹配的点。 输入必须为启用时间的点图层,用于表示时刻;并且必须包含至少一个用于标识唯一轨迹的字段。 | Feature Layer |
输入线图层 | 点将匹配到的线。 输入必须包含其值用于指示线的起始节点和终止节点的字段。 | Feature Layer |
输出要素类 | 将包含匹配点的要素类。 | Feature Class |
轨迹字段 | 将用于标识唯一轨迹的一个或多个字段。 | Field |
搜索距离 | 点与任何被视为匹配的线之间所允许存在的最大距离。 建议您使用小于或等于 75 米的值。 距离较大将导致处理时间较长且结果不够精确。 | Linear Unit |
连通性字段匹配 | 将用于定义输入线要素的连通性的线图层字段。
| Value Table |
要包括的线字段 (可选) | 输入线图层中将包括在输出结果中的一个或多个字段。 | Field |
距离法 (可选) | 用于指定将用来计算点和线之间距离的方法。
| String |
方向值匹配 (可选) | 将用于定义输入线要素的方向的线图层字段和属性值。 例如,某线图层具有一个名为 direction 的字段,其值为 T(向后)、F(向前)、B(双向)和 ""(无)。 如果未指定任何值,则应假定该线为双向线。
| Value Table |
输出模式 (可选) | 用于指定是返回所有输入要素还是仅返回与线要素匹配的输入要素。
| String |
时间分割 (可选) | 时间差距大于按时间分割的持续时间的要素将被分割成单独的轨迹。 | Time Unit |
距离分割 (可选) | 距离差距大于距离分割值的要素将被分割成单独的轨迹。 | Linear Unit |
时间界限分割 (可选) |
用于分割输入数据以进行分析的时间跨度。 您可通过时间界限分析定义的时间跨度内的值。 例如,如果您使用 1 天的时间界限,并将时间界限参考设置为 1980 年 1 月 1 日,则轨迹将在每天开始时被分割。 | Time Unit |
时间界限参考 (可选) |
用于分割输入数据以进行分析的参考时间。 将为整个数据跨度创建时间界限,且不需要在开始时产生参考时间。 如果未指定参考时间,则将使用 1970 年 1 月 1 日。 | Date |
摘要
用于将输入轨迹点捕捉到线。 启用时间的点数据必须包含表示时刻的要素。 分析需要具有指示起始节点和终止节点的字段的可遍历线。
插图
使用情况
下表列出了捕捉轨迹工具中使用的术语:
术语 描述 轨迹
已启用时间且时间类型为时刻的要素序列。 系统将通过使用轨迹标识符字段及其时间顺序来确定要素处于序列中。 例如,某个城市拥有一支扫雪车队,每 30 秒记录一次车辆的位置。 车辆 ID 可以表示不同的轨迹。
观测
轨迹中的一个点。
节点
节点是线要素的端折点,用于指示线的方向。 线的起点是起始节点,线的终点是终止节点。
方向
线的方向。 方向指的是一条线在起始节点和终止节点之间行进的方式。
连通性
连通性描述了如何对线进行连接以表示可遍历的网络。 线将根据其起始节点和终止节点值进行连接。 点基于连通性无法到达的线将不被视为匹配。
可遍历
如果线由共同节点进行连接,则这些线为可遍历线。 例如,如果线 A 的起始节点与线 B 的终止节点相同,则这些线为可遍历线。
该工具需要以下参数输入图层:
- 输入点图层 - 输入点图层必须为启用时间的观测点,用于表示时刻。 没有有效时间戳的轨迹观测点将从分析中排除。
- 输入线图层 - 输入线图层必须包含具有以下连通性信息的字段,并且必须在连通性字段匹配参数中进行指定:
- Unique ID- 线的唯一标识符
- From node- 沿线的行程将远离的节点
- To node- 沿线的行程将移动到的节点
输入点图层参数值的空间参考必须与输入线图层参数值的空间参考相同。 如果数据集具有不同的空间参考,则请使用输出坐标系环境来指定要在分析中使用的空间参考,或在分析之前对数据集进行投影。
可以指定一个或多个字段用于标识轨迹。 轨迹由一个或多个轨迹字段的唯一组合表示。 例如,如果将 flightID 和 Destination 字段用作轨迹标识符,则 ID007, Solden 和 ID007, Tokyo 要素将分别处于两个独立的轨迹,原因是其 Destination 字段值不同。
轨迹必须具有多个观测点才能在分析中使用。 只有一个观测点的轨迹将不匹配。
进行点到线匹配时需考虑到以下事项:
- 观测点需位于距某线的搜索距离内。 此为最低要求。 未满足搜索距离条件的观测点将不匹配。
- 观测点可以根据线的连通性对线进行遍历。
- 观测点将沿着线支持的方向行进。 这是一个可选条件,可在您为方向值匹配参数指定值的情况下提供。 符合此可选条件的结果将更加精确。
使用搜索距离参数可指定观测点与线之间所允许存在的最大距离。 例如,如果您知道 GPS 点的精度大约为 100 米,则请将 100 米指定为搜索距离。
距离法参数将指定搜索距离的计算方式。 一共有两种可用的距离法:
- 测地线 - 如果空间参考可以连续平移穿过对向子午线,则轨迹将在适当的时候穿过对向子午线。 如果空间参考不可连续平移,则轨迹将被限制在坐标系的范围之内且不可环绕。 这是默认设置。
- 平面 - 轨迹不会穿过对向子午线。 如果输入数据使用投影坐标系,请使用此选项。
要在输出结果中包括其他线属性,请使用要包括的线字段参数指定字段名称。 这些字段不会被用于分析目的,且仅供您自己使用。 您无法将几何字段包括在输出结果中。
使用方向值匹配参数可定义每个线要素的受支持方向。 例如,某线图层具有一个名为 direction 的字段,其值为 T(向后)、F(向前)、B(双向)和 ""(无)。 尽管方向匹配为可选项,但建议使用该选项以获得精确的结果。 如果未指定方向匹配,则应假定该线为双向线。
该工具将返回捕捉到沿匹配线最近位置的点。 系统不会返回线要素。 线数据集的唯一标识符将可用于匹配结果。 唯一标识符字段将使用连通性字段匹配参数进行指定。 您可以通过引用此字段来识别匹配的线。
可通过以下方式分割轨迹:
- 时间分割 - 基于两个输入之间的一段时间。 当输入数据大于指定时间时,可应用时间分割将任何轨迹分解。 例如,如果您有五个轨迹标识符相同的要素,时间分别为 [01:00, 02:00, 03:30, 06:00, 06:30],并将时间分割设置为 2 个小时,则任何经测量间隔超过 2 小时的要素都将被分割。 在本示例中,结果将为 [01:00, 02:00, 03:30] 和 [06:00, 06:30] 的轨迹,因为 03:30 与 6:00 之间的间隔大于 2 小时。
- 时间界限分割 - 基于定义的时间间隔。 应用时间界限会以定义的间隔对线段轨迹进行分割。 例如,如果您将时间界限设置为 1 天,开始于 1990 年 1 月 1 日上午 9:00,则轨迹会在每天上午 9:00 被截断。 此分割方法可加快计算速度的快速方法,因为它可以创建较小的追踪以进行分析。 如果您的分析更适合按重复的时间边界进行分割,则建议使用大数据处理。
- 距离分割 - 基于输入之间的距离。 当输入数据大于指定距离时,可应用距离分割将任何轨迹分解。 例如,如果将距离分割设置为 5 公里,则大于 5 公里的连续要素将成为其他轨迹的一部分。
- 分割表达式 - 基于 Arcade 表达式。 应用分割表达式可根据值、几何或时间值来分割轨迹。 例如,当某个字段值是轨迹中前一个值的两倍以上时,可以分割轨迹。 要实现此目的,利用名为 WindSpeed 的示例字段,您可以使用以下表达式:var speed = TrackFieldWindow("WindSpeed", -1, 1); 2* speed[0] < speed[1]。 当前一个值 (speed[0]) 小于当前值的两倍时,将分割轨迹。
除了输入点图层参数值中的字段和使用要包括的线字段参数指定的任何线字段外,输出中还将包括以下字段:
字段名 描述 MatchStatus
用于指示观测点是否与线匹配。 值为对应匹配要素的 M 和对应不匹配要素的 U。
OrigX
输入观测点的 x 坐标。 坐标将以输出空间参考的单位进行存储。
OrigY
输入观测点的 y 坐标。 坐标将以输出空间参考的单位进行存储。
MatchX
线上匹配结果的 x 坐标。 坐标将以输出空间参考的单位进行存储。
MatchY
线上匹配结果的 y 坐标。 坐标将以输出空间参考的单位进行存储。
MatchDist
观测点的原始位置与匹配位置之间的距离。 距离将根据指定的距离法(测地线或平面)进行计算。 值将以米为单位记录。
DATE
观测点的时间戳。
如果所指定的输出模式参数值为所有要素,则系统将同时返回匹配点和不匹配点。 对于不匹配点,输出结果字段将附加对应数值字段的空值和对应字符串字段的空字符串。 将附加空值的字段为使用要包括的线字段参数指定的线字段、MatchX 字段、MatchY 字段和 MatchDist 字段。
还可使用以下方法完成相似性分析:
此地理处理工具由 Spark 支持。 分析在您的台式计算机上使用多核并行完成。 有关运行分析的详细信息,请参阅 GeoAnalytics Desktop 工具的注意事项。
运行 GeoAnalytics Desktop 工具时,分析在您的台式计算机上完成。 为获得最佳性能,应在台式计算机上提供数据。 如果使用的是托管要素图层,则建议您使用 ArcGIS GeoAnalytics Server。 如果数据不是本地数据,则工具需要更长的运行时间。 要使用 ArcGIS GeoAnalytics Server 执行分析,请参阅 GeoAnalytics Tools。
注:
不支持已授权的 StreetMap Premium 地理数据库要素图层作为 ArcGIS Pro 3.0 的输入。
参数
arcpy.geoanalytics.SnapTracks(input_points, input_lines, out_feature_class, track_fields, search_distance, connectivity_field_matching, {line_fields_to_include}, {distance_method}, {direction_value_matching}, {output_mode}, {time_split}, {distance_split}, {time_boundary_split}, {time_boundary_reference})
名称 | 说明 | 数据类型 |
input_points | 将与线匹配的点。 输入必须为启用时间的点图层,用于表示时刻;并且必须包含至少一个用于标识唯一轨迹的字段。 | Feature Layer |
input_lines | 点将匹配到的线。 输入必须包含其值用于指示线的起始节点和终止节点的字段。 | Feature Layer |
out_feature_class | 将包含匹配点的要素类。 | Feature Class |
track_fields [track_fields,...] | 将用于标识唯一轨迹的一个或多个字段。 | Field |
search_distance | 点与任何被视为匹配的线之间所允许存在的最大距离。 建议您使用小于或等于 75 米的值。 距离较大将导致处理时间较长且结果不够精确。 | Linear Unit |
connectivity_field_matching [connectivity_field_matching,...] | 将用于定义输入线要素的连通性的线图层字段。
| Value Table |
line_fields_to_include [line_fields_to_include,...] (可选) | 输入线图层中将包括在输出结果中的一个或多个字段。 | Field |
distance_method (可选) | 用于指定将用来计算点和线之间距离的方法。
| String |
direction_value_matching [direction_value_matching,...] (可选) | 将用于定义输入线要素的方向的线图层字段和属性值。 例如,某线图层具有一个名为 direction 的字段,其值为 T(向后)、F(向前)、B(双向)和 ""(无)。 如果未指定任何值,则应假定该线为双向线。
| Value Table |
output_mode (可选) | 用于指定是返回所有输入要素还是仅返回与线要素匹配的输入要素。
| String |
time_split (可选) | 时间差距大于按时间分割的持续时间的要素将被分割成单独的轨迹。 | Time Unit |
distance_split (可选) | 距离差距大于距离分割值的要素将被分割成单独的轨迹。 | Linear Unit |
time_boundary_split (可选) |
用于分割输入数据以进行分析的时间跨度。 您可通过时间界限分析定义的时间跨度内的值。 例如,如果您使用 1 天的时间界限,并将时间界限参考设置为 1980 年 1 月 1 日,则轨迹将在每天开始时被分割。 | Time Unit |
time_boundary_reference (可选) |
用于分割输入数据以进行分析的参考时间。 将为整个数据跨度创建时间界限,且不需要在开始时产生参考时间。 如果未指定参考时间,则将使用 1970 年 1 月 1 日。 | Date |
代码示例
以下独立脚本演示了如何使用 SnapTracks 函数。
# Name: SnapTracks.py
# Description: Snap snowplow fleet tracks to roads to uncover areas that
# may need more resources for snow removal efforts
# 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\Snowplow.lyrx'
# MakeFeatureLayer converts the .lyrx to features
snowplowsLayer = arcpy.management.MakeFeatureLayer(inputLyrx, "Snowplows Layer")
# ApplySymbologyFromLayer sets the time using the .lyrx file definition
arcpy.management.ApplySymbologyFromLayer(snowplowsLayer, inputLyrx)
# Set local variables
lineLayer = "c:/mydata/Roads.gdb/CityStreets"
trackIdentifier = "vehicle_id"
out = "c:/mydata/OutputDatasets.gdb/Snowplows_snapped_to_streets"
searchDistance = "10 Meters"
connectivityFieldMatching = "unique_ID from_node to_node"
directionValueMatching = "dir_travel F T B #"
# Run Snap Tracks
arcpy.gapro.SnapTracks(snowplowsLayer, lineLayer, out, trackIdentifier,
searchDistance, connectivityFieldMatching, None,
"GEODESIC", directionValueMatching, "MATCHED_FEATURES")