重新构建轨迹 (GeoAnalytics Desktop)

摘要

基于启用时间的输入数据创建线或面轨迹。

插图

“重新构建轨迹”工具图示

使用情况

  • 将针对点要素或面要素运行重新构建轨迹。 输入图层必须已启用时间,并具有用于表示时刻的要素。

  • 可以指定一个或多个字段用于标识轨迹。 追踪由一个或多个追踪字段的唯一组合表示。 例如,如果将字段 flightIDDestination 用作轨迹标识符,则要素 ID007, SoldenID007, 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 千米的距离分割,则会得到如下结果:

    有关输入点(绿色)与多个不同时间和距离分割的 5 个示例
    显示了有关输入点(黄色)与多个不同时间和距离分割的 5 个示例。

    分割选项描述

    6 个具有时间和位置的输入点

    具有相同标识符的输入点。 点之间的距离标记在虚线的顶部,各点测量的时间标记在点的下方。 时间轴上有 4 处分割。 红色分割代表 1 天的时间界限分割,从 12:00 a.m. 开始 蓝色分割代表两点之间的距离大于 16 千米的距离分割。 紫色分割代表两个连续点之间的时态距离大于 6 小时的时间分割。

    没有时间分割和没有距离分割的示例

    没有时间分割和没有距离分割的示例。

    时间分割为 6 小时的示例

    时间分割为 6 小时的示例。 任何大于 2 小时的要素都会分割成单独的轨迹。

    时间界限为 1 天的示例

    时间界限为 1 天(从午夜开始)的示例。 从指定时间(此处为 12:00 a.m.)开始,以 1 天为时间间隔创建轨迹。

    距离分割为 16 千米的示例

    距离分割为 16 千米的示例。 任何相距大于 16 千米的要素(05:00 a.m. 和 06:00 a.m. 时的要素)都会分割成独立的轨迹。

    时间分割为 6 小时和时间界限为 1 天(从 12:00 a.m. 开始)的示例

    时间分割为 6 小时和时间界限为 1 天(从 12:00 a.m. 开始)的示例。任何相差超过 6 小时或与从 12:00 a.m. 开始的持续时间分割相交的要素都会被分割成独立的轨迹。

    时间分割为 6 小时和距离分割为 16 千米的示例

    时间分割为 6 小时和距离分割为 16 千米的示例。 任何相差大于 6 小时(06:00 a.m. 和 7:00 p.m. 时的要素)或相距大于 16 千米的要素都会分割成独立的轨迹。

    距离分割为 16 千米和时间界限为 1 天(从 12:00 a.m. 开始)的示例

    距离分割为 16 千米和时间界限为 1 天(从 12:00 a.m. 开始)的示例。任何相距大于 16 千米或与从 12:00 a.m. 开始的持续时间分割相交的要素都会被分割成独立的轨迹。

    距离分割为 16 千米、时间分割为 6 小时和时间界限为 1 天(从 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 IDflight IDpilot namestart timeflight_maneuver 字段。 flight_maneuver 字段表示飞机是在陆地上、在上升、在下降还是位于恒定高度。
      • 要查看每架飞机的飞行路线,请使用 aircraft ID 字段作为标识符。
      • 要比较不同的路径,请使用 aircraft IDflight ID 字段作为标识符。
      • 要一次性检查每架飞机一年的飞行情况,请使用 aircraft ID 和时间界限 1 年。
      • 要查看每位飞行员的飞行,请使用 pilot nameaircraft IDstart time 字段。
      • 可以使用 aircraft ID 字段作为标识符,并使用大于 1000 千米的距离分割来确定新的轨迹(已知 1000 千米的测量跳跃点不应属于同一轨迹)。
      • 可以使用 aircraft ID 字段作为标识符,然后当 flight_maneuver 字段中的值发生变化时使用表达式进行分割。 例如,var flight_manuever = TrackFieldWindow("maneuver", -1, 1); flight_maneuver[0] != flight_maneuver[1] 将检查轨迹中的当前值与上一个值是否匹配。 如果不匹配,则将分割轨迹。

  • 输出轨迹将返回用作轨迹标识符的字段、轨迹内的要素计数 (count)、各个轨迹的开始和结束时间(start_dateend_date)、以毫秒为单位的轨迹持续时间 (duration) 以及任何其他可选统计数据(格式为 statisticstype_fieldname))。

  • 可执行以下一项或多项操作来提高重新构建轨迹工具的性能:

    • 设置范围环境,以便仅分析感兴趣的数据。
    • 请使用平面方法,而非测地线方法。
    • 请勿应用缓冲区。
    • 可以使用时间分割时间界限分割距离分割分割表达式参数来分割轨迹。 时间界限分割参数将实现最大的性能提升。
    • 本地数据用于分析运行的位置。

  • 此地理处理工具由 Spark 作为支持。 可在台式计算机上并行使用多个核来完成分析。 要了解有关运行分析的详细信息,请参阅 GeoAnalytics Desktop 工具的注意事项

  • 运行 GeoAnalytics Desktop 工具时,将在台式计算机上完成分析。 为获得最佳性能,应在桌面上提供数据。 如果使用的是托管要素图层,则建议您使用 ArcGIS GeoAnalytics Server。 如果您的数据不是本地数据,则运行工具需要更长时间。 要使用 ArcGIS GeoAnalytics Server 执行分析,请参阅 GeoAnalytics Tools

  • 还可使用以下方法完成相似性分析:

    • “数据管理”工具箱中的点转线工具。

参数

标注说明数据类型
输入图层

要重新构建为轨迹的点或面。 输入必须为启用时间的图层,用于表示时刻。

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
汇总字段
(可选)

将根据指定字段进行计算的统计数据。

  • 计数 - 非空值的数目。 可用于数值字段或字符串。 [null, 0, 2] 的计数为 2
  • 总和 - 字段内数值的总和。 [null, null, 3] 的总和为 3
  • 平均值 - 数值的平均值。 [0, 2, null] 的平均值为 1
  • 最小值 - 数值字段的最小值。 [0, 2, null] 的最小值为 0
  • 最大值 - 数值字段的最大值。 [0, 2, null] 的最大值为 2
  • 标准差 - 数值字段的标准差。 [1] 的标准差为 null[null, 1,1,1] 的标准差为 null
  • 方差 - 轨迹中数值字段内数值的方差。 [1] 的方差为 null[null, 1, 1, 1] 的方差为 null
  • 范围 - 数值字段的范围。 其计算方法为最大值减去最小值。 [0, null, 1] 的范围为 1[null, 4] 的范围为 0
  • 任何 - 字符串型字段中的示例字符串。
  • 第一个 - 轨迹中指定字段的第一个值。
  • 最后一个 - 轨迹中指定字段的最后一个值。

Value Table
分割表达式
(可选)

基于值、几何或时间值分割轨迹的表达式。 将对验证为 true 的表达式进行分割。

Calculator Expression
分割类型
(可选)

指定当分割轨迹时,将如何在两个要素之间创建轨迹段。 分割类型应用于分割表达式、距离分割和时间分割。

  • 间距将不会在两个要素之间创建段。 这是默认设置。
  • 之后完成将在分割后结束的两个要素之间创建段。
  • 之前开始将在分割前结束的两个要素之间创建段。
String

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 参数将用于确定缓冲区的类型。

  • GEODESIC如果可以平移空间参考,则轨迹将在适当的时候穿过日期变更线。 如果无法平移空间参考,则轨迹将被限制在坐标系的范围之内且不可环绕。
  • PLANAR轨迹将不会穿过日期变更线
String
buffer_type

指定将定义缓冲距离的方式。

  • FIELD将使用单个字段来定义缓冲距离。
  • EXPRESSION将使用包含字段和数学运算符的方程来定义缓冲区距离。
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,...]
(可选)

将根据指定字段进行计算的统计数据。

  • COUNT - 非空值的数目。 可用于数值字段或字符串。 [null, 0, 2] 的计数为 2
  • SUM - 字段内数值的总和。 [null, null, 3] 的总和为 3
  • MEAN - 数值的平均值。 [0,2, null] 的平均值为 1
  • MIN - 数值字段的最小值。 [0, 2, null] 的最小值为 0
  • MAX - 数值字段的最大值。 [0, 2, null] 的最大值为 2
  • STDDEV - 数值字段的标准差。 [1] 的标准差为 null[null, 1,1,1] 的标准差为 null
  • VAR - 轨迹中数值字段内数值的方差。 [1] 的方差为 null[null, 1,1,1] 的方差为 null
  • RANGE - 数值字段的范围。 其计算方法为最大值减去最小值。 [0, null, 1] 的范围为 1[null, 4] 的范围为 0
  • ANY - 字符串型字段中的示例字符串。
  • FIRST - 轨迹中指定字段的第一个值。
  • LAST - 轨迹中指定字段的最后一个值。

Value Table
split_expression
(可选)

基于值、几何或时间值分割轨迹的表达式。 将对验证为 true 的表达式进行分割。

Calculator Expression
split_type
(可选)

指定当分割轨迹时,将如何在两个要素之间创建轨迹段。 分割类型应用于分割表达式、距离分割和时间分割。

  • GAP将不会在两个要素之间创建段。 这是默认设置。
  • FINISH_LAST将在分割后结束的两个要素之间创建段。
  • START_NEXT将在分割前结束的两个要素之间创建段。
String

代码示例

ReconstructTracks 示例(独立脚本)

以下独立脚本演示了如何使用 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: 是

相关主题