2.8 KiB
2.8 KiB
车辆连续巡航与转弯
Goal
让 Cesium 预览中的车辆沿连续道路路线穿越路口,并以可见的平滑曲线完成左转、右转和直行; 同屏展示多条确定性路线以核对效果。
Confirmed Facts
- 当前
scripts/lib/vehicle-route.js将每条可行驶 OSM way 独立导为折返巡航段;车辆不会跨 way 行驶。 - Cesium 预览最多加载 5 辆车辆,已有位置插值、朝向计算、路线可见性和 Follow 控制。
- 南台子湖 OSM 使用单引号 XML 属性,含 15 处
turn:lanes:forward、15 处turn:lanes:backward和 4 条oneway=yes。 - 没有
restrictionrelation;首版不能承诺处理禁止左转等限制关系。 - 路口
1140799725与1140799919各连接四条道路,另有多个三岔连接,足以形成多条 左转、右转、直行的连续候选路线。
Requirements
- 从 OSM 可行驶 way 构建有向道路图:单行道只能按 tag 方向通行,双向道路提供两个方向。
- 在共享端点连接道路,依据入射和出射方向将候选动作分类为 left、through、right;去程
只有动作出现在该方向
turn:lanes:*的任一车道时才可通行。返程原路返回,不用反向turn:lanes二次否决路线。 - 确定性地产生至多 5 条连续往返路线,覆盖至少一条左转、一条右转和一条直行路线。
- 路口与路线端点均用平滑连接补充路线点;车辆位置、朝向和可见路线必须连续,不能在 way 端点跳回起点。
- 保持现有路线 JSON 是预览的可选输入,旧 route JSON 仍可由预览加载。
Out of Scope
- 不做实时交通仿真、避碰、红绿灯、变道或速度控制。
- 不使用 QGIS 图层或改动 Blender/GLB。
- 不支持 OSM
restrictionrelation;后续数据具备时再接入。 - 不承诺为每条车道生成独立精确轨迹;
turn:lanes首版用于许可转向过滤。
Acceptance Criteria
- 输出最多 5 条连续往返路线,且每条均有多个跨 way 的路口连接和端点平滑调头。
- 南台子湖预览同屏可见左转、右转、直行三类路口动作,车辆不在路口或 way 端点瞬移。
oneway=yes的路段不会逆向进入;去程没有匹配turn:lanes动作的出口不会被选入路线。- 路线生成对同一 OSM 输入稳定,自动化测试覆盖单行、动作过滤、转向分类、曲线连接和闭环。
- 旧 route JSON 的预览兼容性不回归,现有 Pause、Follow、路线开关和车辆选择仍可用。
Open Questions
已决:南台子湖可行驶道路主连通分量是树状网络(23 个端点节点、19 条道路连接),没有
真实闭环;首版以端点平滑调头的往返路线替代闭环。为展示多条路线,返程不以反向
turn:lanes 过滤,但仍不允许逆行单行道。