3.7 KiB
3.7 KiB
Add OSM turn lane arrows
Goal
让 OSM turn:lanes:forward / turn:lanes:backward 在现有 QGIS -> Blender -> Cesium
道路链中生成可辨识的 lane arrow,同时保持与 osm2streets 既有道路标线相同的视觉语言。
Confirmed Facts
- 当前
osm2streets-js-node@0.1.4生成 lane arrow,但纯内存移除 way98607123、98607128、98607147的turn:lanes:*后,593 个原始箭头的 JSON 内容逐字一致; 因此该依赖不消费这些 OSM 标签。 - 当前南台子完整链已经通过:中间层落盘 580 个归一化箭头,Blender 装配 397 个,
Cesium / preview / compress manifest 均 fresh,
check:areaPASS。 - 现有
lane_arrows_webscale已是 QGIS、Blender、Cesium 共用图层,样式为浅色填充#fffff6、深色描边#2b2b28,正常外轮廓为七顶点箭头。 turn:lanes:forward=right、turn:lanes:backward=through;right等标准标签已存在于 南台子 OSM。openstreetmap/lane-icons是 OSM 官方组织发布的 CC0 SVG 图标集;其DESIGN.md以 MUTCD Standard Arrow 为基准,并规定组合转向共享箭杆、箭头数量增加时缩小箭头。 仓库只提供左侧转向示例,右转及through;right需在几何层对其镜像,不能直接作为 当前 GeoJSON polygon 图层输入。- 用户已决定将该库中首版需要的转向图标作为本仓库维护的源素材,而不是只作为视觉参考。
Requirements
- 在写入
lane_arrows_webscale.geojson前,从 OSM 标准turn:lanes:*生成自定义箭头 polygon,并沿用既有图层、材质、QGIS/Blender/Cesium 路径。 - 支持首版实际需要的
through、left、right、through;left、through;right; 同一 OSM 输入必须产生确定性结果。 - 自定义箭头必须使用现有道路标线的视觉语言,不新建一套颜色、描边或图标风格。
- 在 OSM way 进入路口的一端、按 forward/backward 和 lane index 放置;车道配置不完整或 端点不是可判定路口时给出可诊断的跳过原因。
- 首先完成并获得用户对
right和through;right轮廓样张的确认,之后才能将其接入 GeoJSON / Blender 导出。 - 未经用户确认,不提交 Git。
- 将
openstreetmap/lane-icons的全部箭头 SVG 和 CC0 许可证说明纳入本仓库维护; 右转变体由左转源图镜像生成。生成的 polygon 仍由本仓库维护,并继续使用lane_arrows_webscale的既有填充与描边样式。 - 素材清单必须逐项标记验证状态:仅
through、left、right、through;left、through;right在首版具备 OSM 映射与自动化测试;其他已收录箭头明确标为未测试, 且不得自动参与生产 GeoJSON 输出。
Acceptance Criteria
- 用户确认箭头样张的轮廓与视觉语言。
- 目标 OSM 标签导致 lane-arrow GeoJSON 与移除这些标签的对照产生可观察差异。
- 自定义 arrow properties 标识来源和 OSM way / direction / lane,便于诊断。
- 纯 Node 测试覆盖标签解析、forward/backward、lane placement、组合转向和幂等排序。
- 本地素材清单包含所有上游箭头,逐项标记 CC0 来源、支持状态和测试状态;未测试条目 不会参与生产映射。
- 仅南台子完整链和质量门验证通过。
- 无 Git 提交,直到用户明确确认。
Out Of Scope
- 修改 osm2streets 依赖、道路改为 Cesium 直渲染、增加新的道路渲染图层。
- 支持首版范围之外的 OSM maneuver 词汇、匝道标线、文字或自行车专用箭头。
Delivery Gate
在自定义箭头接入生产 GeoJSON / Blender 导出前,用户必须确认 right 与
through;right 样张的轮廓和视觉语言。