轨迹#

用于从点数据识别和分组轨迹的函数。

cuspatial.derive_trajectories(object_ids, points: GeoSeries, timestamps)#

从对象ID、点和时间戳推导轨迹。

参数:
object_ids

对象(例如,车辆)ID列

pointsGeoSeries

轨迹的点

timestamps

任意分辨率的时间戳列

返回值:
结果元组 (objects, traj_offsets)
objectscudf.DataFrame

object_ids, xs, ys 和 timestamps,按 (object_id, timestamp) 排序,用于 trajectory_bounding_boxestrajectory_distances_and_speeds

traj_offsetscudf.Series

已发现轨迹的偏移量

示例

计算排序后的对象和已发现轨迹

>>> objects, traj_offsets = cuspatial.derive_trajectories(
        [0, 1, 0, 1],  # object_id
        [0, 0, 1, 1],  # x
        [0, 0, 1, 1],  # y
        [0, 10000, 0, 10000] # timestamp
    )
>>> print(traj_offsets)
    0  0
    1  2
>>> print(objects)
    object_id    x    y           timestamp
    0          0  0.0  0.0 1970-01-01 00:00:00
    1          0  1.0  1.0 1970-01-01 00:00:10
    2          1  0.0  0.0 1970-01-01 00:00:00
    3          1  1.0  1.0 1970-01-01 00:00:10
cuspatial.trajectory_distances_and_speeds(num_trajectories, object_ids, points: GeoSeries, timestamps)#

计算多组轨迹的行驶距离和速度

参数:
num_trajectories

轨迹数量(唯一对象ID)

object_ids

对象(例如,车辆)ID列

points: GeoSeries

一个点序列

timestamps

任意分辨率的时间戳列

返回值:
结果cudf.DataFrame
meterscudf.Series

轨迹距离(单位:公里)

speedcudf.Series

轨迹速度(单位:米/秒)

示例

计算推导轨迹的距离和速度

>>> objects, traj_offsets = cuspatial.derive_trajectories(...)
>>> dists_and_speeds = cuspatial.trajectory_distances_and_speeds(
        len(traj_offsets)
        objects['object_id'],
        objects['x'],
        objects['y'],
        objects['timestamp']
    )
>>> print(dists_and_speeds)
                      distance       speed
    trajectory_id
    0              1414.213562  141.421356
    1              1414.213562  141.421356
cuspatial.trajectory_bounding_boxes(num_trajectories, object_ids, points: GeoSeries)#

计算多组轨迹的边界框。

参数:
num_trajectories

轨迹数量(唯一对象ID)

object_ids

对象(例如,车辆)ID列

points: GeoSeries

轨迹点序列

返回值:
结果cudf.DataFrame

每个轨迹的最小边界框(单位:公里)

x_mincudf.Series

每个边界框的最小x坐标

y_mincudf.Series

每个边界框的最小y坐标

x_maxcudf.Series

每个边界框的最大x坐标

y_maxcudf.Series

每个边界框的最大y坐标

示例

计算推导轨迹的最小边界框

>>> objects, traj_offsets = cuspatial.derive_trajectories(
        [0, 0, 1, 1],  # object_id
        [0, 1, 2, 3],  # x
        [0, 0, 1, 1],  # y
        [0, 10, 0, 10] # timestamp
    )
>>> traj_bounding_boxes = cuspatial.trajectory_bounding_boxes(
        len(traj_offsets),
        objects['object_id'],
        objects['x'],
        objects['y']
    )
>>> print(traj_bounding_boxes)
    x_min   y_min   x_max   y_max
0     0.0     0.0     2.0     2.0
1     1.0     1.0     3.0     3.0