Files
osmWorkflow/.trellis/tasks/08-05-vehicle-turn-routes/prd.md

50 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 车辆连续巡航与转弯
## 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`
- 没有 `restriction` relation首版不能承诺处理禁止左转等限制关系。
- 路口 `1140799725``1140799919` 各连接四条道路,另有多个三岔连接,足以形成多条
左转、右转、直行的连续候选路线。
## Requirements
1. 从 OSM 可行驶 way 构建有向道路图:单行道只能按 tag 方向通行,双向道路提供两个方向。
2. 在共享端点连接道路,依据入射和出射方向将候选动作分类为 left、through、right去程
只有动作出现在该方向 `turn:lanes:*` 的任一车道时才可通行。返程原路返回,不用反向
`turn:lanes` 二次否决路线。
3. 确定性地产生至多 5 条连续往返路线,覆盖至少一条左转、一条右转和一条直行路线。
4. 路口与路线端点均用平滑连接补充路线点;车辆位置、朝向和可见路线必须连续,不能在
way 端点跳回起点。
5. 保持现有路线 JSON 是预览的可选输入,旧 route JSON 仍可由预览加载。
## Out of Scope
- 不做实时交通仿真、避碰、红绿灯、变道或速度控制。
- 不使用 QGIS 图层或改动 Blender/GLB。
- 不支持 OSM `restriction` relation后续数据具备时再接入。
- 不承诺为每条车道生成独立精确轨迹;`turn:lanes` 首版用于许可转向过滤。
## Acceptance Criteria
- [ ] 输出最多 5 条连续往返路线,且每条均有多个跨 way 的路口连接和端点平滑调头。
- [ ] 南台子湖预览同屏可见左转、右转、直行三类路口动作,车辆不在路口或 way 端点瞬移。
- [ ] `oneway=yes` 的路段不会逆向进入;去程没有匹配 `turn:lanes` 动作的出口不会被选入路线。
- [ ] 路线生成对同一 OSM 输入稳定,自动化测试覆盖单行、动作过滤、转向分类、曲线连接和闭环。
- [ ] 旧 route JSON 的预览兼容性不回归,现有 Pause、Follow、路线开关和车辆选择仍可用。
## Open Questions
已决南台子湖可行驶道路主连通分量是树状网络23 个端点节点、19 条道路连接),没有
真实闭环;首版以端点平滑调头的往返路线替代闭环。为展示多条路线,返程不以反向
`turn:lanes` 过滤,但仍不允许逆行单行道。