标注 | 说明 | 数据类型 |
输入图层 | 要重新构建为轨迹的点或面。 输入必须为启用时间的图层,用于表示时刻。 | Feature Layer |
输出要素类 | 具有生成轨迹的新要素类。 | Feature Class |
轨迹字段 | 将用于标识唯一轨迹的一个或多个字段。 | Field |
方法 | 指定将用于重新构建轨迹的条件。 如果使用了缓冲区,则方法参数将用于确定缓冲区的类型。
| String |
缓冲区类型 | 指定将定义缓冲距离的方式。
| String |
缓冲字段 (可选) | 将用于缓冲输入要素的字段。 字段值采用输入空间参考的单位,除非您所使用的是地理坐标系,在这种情况下,单位将为米。 | Field |
缓冲区表达式 (可选) | 将用于缓冲输入要素的表达式。 字段必须为数字形式,并且表达式可以包含 [+ - * / ] 运算符和多个字段。 将应用经计算的值,且采用输入空间参考的单位,除非您所使用的是地理坐标系,在这种情况下,单位为米。 请使用 Arcade 表达式,例如 as_kilometers($feature.distance) * 2 + as_meters(15)。 如果将图层添加到地图中,则可以使用字段和助手过滤器来构建表达式。 | Calculator Expression |
时间分割 (可选) | 时间差距大于按时间分割的持续时间的要素将被分割成单独的轨迹。 | Time Unit |
距离分割 (可选) | 距离差距大于距离分割值的要素将被分割成单独的轨迹。 | Linear Unit |
时间界限分割 (可选) |
用于分割输入数据以进行分析的时间跨度。 您可通过时间界限分析定义的时间跨度内的值。 例如,如果您使用 1 天的时间界限,并将时间界限参考设置为 1980 年 1 月 1 日,则轨迹将在每天开始时被分割。 | Time Unit |
时间界限参考 (可选) |
用于分割输入数据以进行分析的参考时间。 将为整个数据跨度创建时间界限,且不需要在开始时产生参考时间。 如果未指定参考时间,则将使用 1970 年 1 月 1 日。 | Date |
汇总字段 (可选) | 将根据指定字段进行计算的统计数据。
| Value Table |
分割表达式 (可选) | 基于值、几何或时间值分割轨迹的表达式。 将对验证为 true 的表达式进行分割。 | Calculator Expression |
分割类型 (可选) | 指定当分割轨迹时,将如何在两个要素之间创建轨迹段。 分割类型应用于分割表达式、距离分割和时间分割。
| String |
摘要
基于启用时间的输入数据创建线或面轨迹。
插图
使用情况
将针对点要素或面要素运行重新构建轨迹。 输入图层必须已启用时间,并具有用于表示时刻的要素。
可以指定一个或多个字段用于标识轨迹。 追踪由一个或多个追踪字段的唯一组合表示。 例如,如果将字段 flightID 和 Destination 用作轨迹标识符,则要素 ID007, Solden 和 ID007, Tokyo 将分别处于两个独立的轨迹,原因是其 Destination 字段值不同。
应用了缓冲区的要素将生成面轨迹。 未应用缓冲区的输入点要素将生成折线轨迹。
输入要素将由已启用时间、且能够表示时刻的要素组成。 结果为可表示时间间隔的线或面要素。 该间隔的开始和结束由轨迹中第一个和最后一个要素的时间决定。
针对线性结果,仅会返回包含多个点的轨迹。 如果应用了缓冲区,则将返回所有要素。
您可以选择为您的输入要素应用缓冲区。 当应用缓冲区时,生成的轨迹将为面要素。
缓冲输入要素时,每个输入要素都会被缓冲。 随后将生成凸包,以创建面轨迹。
缓冲区表达式中使用的字段必须为数值字段,且必须采用输入空间参考的单位进行应用。 有关详细信息,请参阅 GeoAnalytics Desktop 工具箱中的 Arcade 表达式。 可以使用轨迹感知型方程。
默认情况下,系统仅会计算轨迹中的点或面计数。 其他统计数据可通过指定汇总字段参数值进行计算。
默认情况下,需使用测地线方法创建轨迹。 该方法适用于以下两个分析的组件:
- 跨越国际日期变更线的轨迹 - 当使用测地线方法时,越过国际日期变更线的输入图层将具有正确跨越国际日期变更线的轨迹。 这是默认设置。 必须将您的输入图层或处理空间参考设置为支持环绕国际日期变更线的空间参考,例如“世界圆柱等积”等全球投影。
- 缓冲区 - 可对输入要素进行有选择地缓冲。 要了解有关何时应用测地线或平面缓冲区的详细信息,请参阅创建缓冲区。
可通过以下方式分割轨迹:
- 时间分割 - 基于输入之间的时间。 当输入数据之间的间隔超过指定时间时,应用时间分割将中断任何轨迹。 例如,如果您拥有 5 个轨迹标识符相同的要素,时间分别为 [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]) 小于当前值的两倍时对轨迹进行分割。
可以同时应用一个、两个、三个或四个分割选项或者均不应用。 以下所有示例都使用间距分割。 假设您应用 6 小时的时间分割、1 天的时间界限和 16 千米的距离分割,则会得到如下结果:
分割选项 描述 6 个具有时间和位置的输入点
具有相同标识符的输入点。 点之间的距离标记在虚线的顶部,各点测量的时间标记在点的下方。 时间轴上有 4 处分割。 红色分割代表 1 天的时间界限分割,从 12:00 a.m. 开始 蓝色分割代表两点之间的距离大于 16 千米的距离分割。 紫色分割代表两个连续点之间的时态距离大于 6 小时的时间分割。
没有时间分割和没有距离分割的示例。
时间分割为 6 小时的示例。 任何大于 2 小时的要素都会分割成单独的轨迹。
时间界限为 1 天(从午夜开始)的示例。 从指定时间(此处为 12:00 a.m.)开始,以 1 天为时间间隔创建轨迹。
距离分割为 16 千米的示例。 任何相距大于 16 千米的要素(05:00 a.m. 和 06:00 a.m. 时的要素)都会分割成独立的轨迹。
时间分割为 6 小时和时间界限为 1 天(从 12:00 a.m. 开始)的示例。任何相差超过 6 小时或与从 12:00 a.m. 开始的持续时间分割相交的要素都会被分割成独立的轨迹。
时间分割为 6 小时和距离分割为 16 千米的示例。 任何相差大于 6 小时(06:00 a.m. 和 7:00 p.m. 时的要素)或相距大于 16 千米的要素都会分割成独立的轨迹。
距离分割为 16 千米和时间界限为 1 天(从 12:00 a.m. 开始)的示例。任何相距大于 16 千米或与从 12:00 a.m. 开始的持续时间分割相交的要素都会被分割成独立的轨迹。
距离分割为 16 千米、时间分割为 6 小时和时间界限为一天(从 12:00 a.m. 开始)的示例。任何相距大于 16 千米、相差超过 6 小时或与从 12:00 a.m. 开始的持续时间分割相交的要素都会被分割成独立的轨迹。
当使用时间分割、距离分割或分割表达式对轨迹进行分割时,可确定将如何在分割之间创建段。 您具有以下几种选项:
- 间距 - 在分割的两个要素之间创建间距。
- 之后结束 - 创建在分割之后结束的段。
- 之前开始 - 创建在分割之前结束和开始的段。
下图显示了此分割类型的一个示例:
显示了相同输入点(黄色)上时间分割的三个示例。 时间分割选项 描述 五个具有时间和位置的输入点
五个具有相同标识符的输入点 将在虚线下方标记每个点的时间。 对于所有示例,2:00 a.m. 和 5:00 a.m. 之间存在一个分割。 每个轨迹将在轨迹上的第三个点和第四个点之间被分割为两段。 第一个轨迹为绿色,第二个轨迹为紫色。 分割轨迹的方式将由分割类型参数定义。
间距
在分割的两个点之间存在间距的示例。 这是默认设置。
之后完成
轨迹在分割后的第四个点处结束的示例。 第二个轨迹将从第四个点处开始。
之前开始
轨迹在分割前的第三个点处分割的示例。 第二个轨迹将从第三个点处开始。
以下是使用分割参数和字段标识符参数可能对定义轨迹有意义的示例,以航班飞行为例:
- 飞机要素包括 aircraft ID、flight ID、pilot name、start time 和 flight_maneuver 字段。 flight_maneuver 字段表示飞机是在陆地上、在上升、在下降还是位于恒定高度。
- 要查看每架飞机的飞行路线,请使用 aircraft ID 字段作为标识符。
- 要比较不同的路径,请使用 aircraft ID 和 flight ID 字段作为标识符。
- 要一次性检查每架飞机一年的飞行情况,请使用 aircraft ID 和时间界限 1 年。
- 要查看每位飞行员的飞行,请使用 pilot name、aircraft ID 和 start time 字段。
- 可以使用 aircraft ID 字段作为标识符,并使用大于 1000 千米的距离分割来确定新的轨迹(已知 1000 千米的测量跳跃点不应属于同一轨迹)。
- 可以使用 aircraft ID 字段作为标识符,然后当 flight_maneuver 字段中的值发生变化时使用表达式进行分割。 例如,var flight_manuever = TrackFieldWindow("maneuver", -1, 1); flight_maneuver[0] != flight_maneuver[1] 将检查轨迹中的当前值与上一个值是否匹配。 如果不匹配,则将分割轨迹。
- 飞机要素包括 aircraft ID、flight ID、pilot name、start time 和 flight_maneuver 字段。 flight_maneuver 字段表示飞机是在陆地上、在上升、在下降还是位于恒定高度。
输出轨迹将返回用作轨迹标识符的字段、轨迹内的要素计数 (count)、各个轨迹的开始和结束时间(start_date 和 end_date)、以毫秒为单位的轨迹持续时间 (duration) 以及任何其他可选统计数据(格式为 statisticstype_fieldname))。
可执行以下一项或多项操作来提高重新构建轨迹工具的性能:
- 设置范围环境,以便仅分析感兴趣的数据。
- 请使用平面方法,而非测地线方法。
- 请勿应用缓冲区。
- 可以使用时间分割、时间界限分割、距离分割或分割表达式参数来分割轨迹。 时间界限分割参数将实现最大的性能提升。
- 将本地数据用于分析运行的位置。
此地理处理工具由 Spark 作为支持。 可在台式计算机上并行使用多个核来完成分析。 要了解有关运行分析的详细信息,请参阅 GeoAnalytics Desktop 工具的注意事项。
运行 GeoAnalytics Desktop 工具时,将在台式计算机上完成分析。 为获得最佳性能,应在桌面上提供数据。 如果使用的是托管要素图层,则建议您使用 ArcGIS GeoAnalytics Server。 如果您的数据不是本地数据,则运行工具需要更长时间。 要使用 ArcGIS GeoAnalytics Server 执行分析,请参阅 GeoAnalytics Tools。
还可使用以下方法完成相似性分析:
- “数据管理”工具箱中的点转线工具。
参数
arcpy.gapro.ReconstructTracks(input_layer, out_feature_class, track_fields, method, buffer_type, {buffer_field}, {buffer_expression}, {time_split}, {distance_split}, {time_boundary_split}, {time_boundary_reference}, {summary_fields}, {split_expression}, {split_type})
名称 | 说明 | 数据类型 |
input_layer | 要重新构建为轨迹的点或面。 输入必须为启用时间的图层,用于表示时刻。 | Feature Layer |
out_feature_class | 具有生成轨迹的新要素类。 | Feature Class |
track_fields [track_fields,...] | 将用于标识唯一轨迹的一个或多个字段。 | Field |
method | 指定将用于重新构建轨迹的条件。 如果使用了缓冲区,则 method 参数将用于确定缓冲区的类型。
| String |
buffer_type | 指定将定义缓冲距离的方式。
| String |
buffer_field (可选) | 将用于缓冲输入要素的字段。 字段值采用输入空间参考的单位,除非您所使用的是地理坐标系,在这种情况下,单位将为米。 | Field |
buffer_expression (可选) |
将用于缓冲输入要素的表达式。 字段必须为数字形式,并且表达式可以包含 [+ - * / ] 运算符和多个字段。 将应用经计算的值,且采用输入空间参考的单位,除非您所使用的是地理坐标系,在这种情况下,单位为米。 请使用 Arcade 表达式,例如 as_kilometers($feature.distance) * 2 + as_meters(15)。 | Calculator Expression |
time_split (可选) | 时间差距大于按时间分割的持续时间的要素将被分割成单独的轨迹。 | Time Unit |
distance_split (可选) | 距离差距大于距离分割值的要素将被分割成单独的轨迹。 | Linear Unit |
time_boundary_split (可选) |
用于分割输入数据以进行分析的时间跨度。 您可通过时间界限分析定义的时间跨度内的值。 例如,如果您使用 1 天的时间界限,并将时间界限参考设置为 1980 年 1 月 1 日,则轨迹将在每天开始时被分割。 | Time Unit |
time_boundary_reference (可选) |
用于分割输入数据以进行分析的参考时间。 将为整个数据跨度创建时间界限,且不需要在开始时产生参考时间。 如果未指定参考时间,则将使用 1970 年 1 月 1 日。 | Date |
summary_fields [summary_fields,...] (可选) | 将根据指定字段进行计算的统计数据。
| Value Table |
split_expression (可选) | 基于值、几何或时间值分割轨迹的表达式。 将对验证为 true 的表达式进行分割。 | Calculator Expression |
split_type (可选) | 指定当分割轨迹时,将如何在两个要素之间创建轨迹段。 分割类型应用于分割表达式、距离分割和时间分割。
| String |
代码示例
以下独立脚本演示了如何使用 ReconstructTracks 函数。
# Name: ReconstructTracks.py
# Description: Reconstruct hurricane points into hurricane tracks, where each
# location is buffered by the wind speed * 100.
# 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\Hurricanes.lyrx'
# MakeFeatureLayer converts the .lyrx to features
hurricanesLayer = arcpy.management.MakeFeatureLayer(inputLyrx, "Hurricanes Layer")
# ApplySymbologyFromLayer sets the time using the .lyrx file definition
arcpy.management.ApplySymbologyFromLayer(hurricanesLayer, inputLyrx)
# Set local variables
trackIdentifier = "EVENTID"
out = "c:/mydata/OutputDatasets.gdb/HurricaneTracks"
bufferExpression = "WINDSPEED * 100"
statistics = [["PRESSURE", "MEAN"]]
# Run Reconstruct Tracks
arcpy.gapro.ReconstructTracks(hurricanesLayer, out, trackIdentifier,
"GEODESIC", "EXPRESSION", None,
bufferExpression, None, statistics)
许可信息
- Basic: 否
- Standard: 否
- Advanced: 是