feat(qgis): add editable traffic signal assemblies
This commit is contained in:
@@ -144,20 +144,22 @@ OSM way 的端点不一定在原始 XML 中有三个以上相连 way;osm2stree
|
||||
|
||||
**教训**:**跨阶段契约必须随产物保存;兼容旧产物的字符串回退也要被审查**。
|
||||
|
||||
### 坑 6:部分构建复用了过期的交通信号锚点
|
||||
### 坑 6:部分构建复用了过期的交通信号运行时数据
|
||||
|
||||
`scripts/lib/traffic-signals.js` 根据当前 OSM 的 `highway=traffic_signals` 控制节点、
|
||||
`vehicle_stop_lines.geojson` 和 `intersection_surface.geojson` 派生
|
||||
`osm2streets_web_out/traffic_signals.json`。Blender 将这份文件中的每个 signal id 导出为
|
||||
三个动态灯节点和一组倒计时节点,`scripts/lib/cesium-preview.js` 再按相同 id 控制它们。
|
||||
`intermediates` 才能根据当前 OSM 的 `highway=traffic_signals` 控制节点、
|
||||
`vehicle_stop_lines.geojson` 和 `intersection_surface.geojson` 初始化可编辑的
|
||||
`traffic_signal_assemblies.geojson`。此后该 GeoJSON 是 QGIS 编辑生命周期内的事实源;
|
||||
`traffic_signals.json` 只是严格校验后派生的运行时数据。Blender 将其中每个稳定的
|
||||
`signal_uid` 导出为静态设施、三个动态灯节点和一组倒计时节点,
|
||||
`scripts/lib/cesium-preview.js` 再按相同 id 控制它们。
|
||||
|
||||
因此执行 `blender,cesium,preview` 这类部分构建时,必须在 Blender stage 入口重新写入
|
||||
交通信号文件。若沿用旧文件,GLB 可能已经包含新增 T/十字路口,但预览仍只控制旧的
|
||||
signal id,表现为灯不切换、数字叠加或路口整体异常。该刷新由
|
||||
因此执行 `blender,cesium,preview` 这类部分构建时,必须在 Blender stage 入口从当前
|
||||
`traffic_signal_assemblies.geojson` 重建运行时 JSON,但绝不能重新从 OSM 初始化位置,
|
||||
否则会覆盖 QGIS 中移动、旋转或禁用设施的编辑。该刷新由
|
||||
`scripts/build-area.js:buildBlenderScene()` 负责。
|
||||
|
||||
**教训**:**任何由输入 OSM 或归一化图层派生、又被多个后续 stage 共享的中间 JSON,
|
||||
都必须在最早消费它的 stage 重新生成,不能只在完整 `intermediates` 构建时生成。**
|
||||
**教训**:**跨阶段运行时 JSON 必须在最早消费它的 stage 从当前权威产物重建;同时要
|
||||
区分“初始化来源”和“编辑后的事实源”,不能用早期输入覆盖人工编辑。**
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user