绘制gdf格式的轨迹数据:对进行绘图,我们只是有很多紧密地点放在一起的绘图
ax = gdf.plot(**plot_defaults)ax.set_title('A trajectory consisting of points')ax.set_xticks([])ax.set_yticks([])plt.show()
绘制mdf格式的轨迹数据:内置了对绘图的支持,绘制新构建的轨迹,许多点已经被转化为轨迹
# 绘制轨迹集合ax = mdf.plot(**plot_defaults)ax.set_title('Trajectory')ax.set_xticks([])ax.set_yticks([])plt.show()
如果想访问一个特定的轨迹,可以通过使用轨迹的索引来实现
# 选择轨迹one_traj = mdf.trajectories[4]print(f'轨迹信息:\n{one_traj}\n')# 获取轨迹长度print(f'轨迹长度{one_traj.get_length()}')# 绘制单个轨迹ax = one_traj.plot(color='purple', **plot_defaults)ax.set_title('A single trajectory')ax.set_xticks([])ax.set_yticks([])plt.show()
可以根据参数绘制轨迹
ax = one_traj.plot(column='speed', vmax=40, **plot_defaults)# 根据速度绘制轨迹ax.set_title('Travel speed')ax.set_xticks([])# 设置坐标轴刻度ax.set_yticks([])# 设置坐标轴刻度divider = make_axes_locatable(ax)# 创建坐标轴对象cax = divider.append_axes('bottom', size='5%', pad=0.5)# 在底部添加新的坐标轴对象cbar = plt.colorbar(ax.collections[0], cax=cax, orientation='horizontal')# 添加颜色条cbar.set_label('Speed(km/h)')# 设置颜色条标签plt.show()
根据给定的时间或时间范围内的位置,或根据与另一个几何体的交集,提取轨迹的一个元素
1、时间:
# 给定时间time1 = datetime(2007,2,20,7,35,0)time2 = datetime(2007,2,20,10,25,10)# 获取给定时间最近的位置p1 = one_traj.get_position_at(time1, method="nearest")p2 = one_traj.get_position_at(time2, method="nearest")print(f'{time1}最近点位置:{p1}\n{time2}最近点位置:{p2}\n')# 获取时间范围内的位置segment = one_traj.get_segment_between(time1, time2)print(f'给定时间段内的轨迹\n{segment}')# 绘制轨迹ax = one_traj.plot(color='orange', **plot_defaults, legend=True)segment.plot(ax=ax, color='red', linewidth=5, legend=True)ax.set_title('A trajectory segment——time')ax.set_xticks([])# 设置坐标轴刻度ax.set_yticks([])# 设置坐标轴刻度ax.legend(['Trajectory', 'Segment'])plt.show()
2、几何体相交的部分:
# 如果剪裁产生的轨迹不止一条,该方法将返回一个轨迹集合xmin, xmax, ymin, ymax = one_traj.get_bbox()# 获取轨迹的边界dist = 1000# 设置距离poly = Polygon([(xmin+dist, ymin+dist), (xmin+dist, ymax-dist), (xmax-dist, ymax-dist), (xmax-dist, ymin+dist), (xmin+dist, ymin+dist)])# 创建多边形intersections = one_traj.clip(poly)# 剪裁轨迹# 绘制轨迹ax = one_traj.plot(color='orange', **plot_defaults, legend=True)intersections.plot(ax=ax, color='red', linewidth=5, legend=True)ax.set_title('A trajectory segment——Plolygon')ax.set_xticks([])# 设置坐标轴刻度ax.set_yticks([])# 设置坐标轴刻度ax.legend(['Trajectory', 'Segment'])plt.show()
分割轨迹:如果观察有时间间隔,且物体以很低的速度运动,或者物体有一段时间没有离开同一地点,轨迹就会被分割
1、在观察有时间间隔的情况下,分割轨迹:
# 分割'''ObservationGapSplitter是一个用于轨迹观测间隔分割的类 。它可以将轨迹分割成多个子轨迹,其中每个子轨迹表示连续观测之间的时间间隔 。'''split = mpd.ObservationGapSplitter(one_traj).split(gap=timedelta(minutes=4))# 设置时间间隔# 绘制轨迹fig, axes = plt.subplots(nrows=1, ncols=len(split), figsize=(20,5))for i, traj in enumerate(split):traj.plot(ax=axes[i], linewidth=5.0, capstyle='round', column='speed', vmax=20)fig.suptitle("Trajectory split by stops(4 minutes)")plt.show()
- 迭代学习控制算法在自动驾驶车辆轨迹跟踪中的应用
- cesium 路径漫游
- 最简单的 UE 4 C++ 教程 —— Actor 线轨迹(line trace
- 支付宝记录的近几年城市轨迹
- UWB智慧工厂人员定位系统源码,人员在岗监控、车辆实时轨迹监控源码
- Carla中实现车辆轨迹获得
- 关于ilegenes黑耀的轨迹的介绍 ilegenes黑耀的轨迹
- 玉溪函授
- 10本好看的科幻小说,时空穿梭,进化变异,星际文明,书荒不用愁 世界十大变异动物
- 天文台时间