feat: parameterize complex junction geometry with Gaode reference
- 高德 GeoJSON 参考流程: `scripts/lib/gaode-junction-reference.js` 与 `scripts/inspect-junction-reference.js` 将 GCJ-02 参考转换为 WGS84, 按 node id/最近距离关联 OSM, 支持普通路口面和 `complex-cluster` 两种匹配。 - 复合路口模板 `complex-junction-v1`: `scripts/lib/complex-junction.js` 用参考 几何校准 core 半径, 生成路口面、进口路面、斑马线、停止线、角部圆角与安全岛; 拓扑/信号/连接全部沿用 OSM/native。 - 车道中心线控制要素避让: `compileLaneCenterlines` 现接收模板已产出的斑马线/停止线, 新增 `trimLaneOutsideControls` 按到路口中心的半径定向裁剪; 标线源几何同步裁剪, 不再 越过斑马线继续画到核心区。拓扑几何不变, connector 集合前后一致。 - 复合路口人行道转角: `buildComplexJunctionGeometry` 沿已定义的路缘生成 2m 宽转角带, 复用圆角曲线, 通过 `islands` 通道并入 `sidewalk_surface`; 自交或坐标非有限时报 `complex-junction-sidewalk-corner-fallback` 并跳过。 - 新增诊断: `complex-junction-configured-radius-ignored`、 `lane-centerline-fully-inside-control`、`complex-junction-sidewalk-corner-fallback`。 - 死码清理: 移除未被调用的 `clusterApproachRing`。 - spec 更新: `.trellis/spec/pipeline/cli-and-stages.md` 复合路口小节补充控制要素 避让顺序、人行道转角契约、Validation 矩阵三行; 索引新增导航。 - 任务产物 `08-19-gaode-junction-reference`: 8 条验收标准全部实测记录, Scope Drift / Verification Log / Known Gaps 三节沉淀本次工作。 Regression: test:native-road / test:road-workbench / test:preflight / test:native-preview-traffic / test:package-contract / test:traffic-signals / test:gaode-junction-reference 全绿; road:check ok=true, errors=[]。
This commit is contained in:
57
.trellis/tasks/08-19-gaode-junction-reference/design.md
Normal file
57
.trellis/tasks/08-19-gaode-junction-reference/design.md
Normal file
@@ -0,0 +1,57 @@
|
||||
# Technical Design
|
||||
|
||||
## Boundary
|
||||
|
||||
The native compiler remains authoritative for OSM road identity, directed lanes,
|
||||
connections, traffic signals, stop lines, and preview routes. A reference layer is
|
||||
an optional geometry-calibration input consumed before junction surface publication.
|
||||
|
||||
## Proposed Flow
|
||||
|
||||
```text
|
||||
optional reference GeoJSON (GCJ-02)
|
||||
-> validate schema and coordinate bounds
|
||||
-> GCJ-02 to WGS84 conversion
|
||||
-> associate reference footprint with an OSM junction node
|
||||
-> classify geometry by observable shape, not opaque vendor type alone
|
||||
-> derive bounded junction-shape parameters
|
||||
-> native compiler creates surface/connectors as usual
|
||||
-> diagnostics compare generated geometry with reference
|
||||
```
|
||||
|
||||
The first production validation keeps the reference overlay/diagnostic, then enables a
|
||||
bounded `cross` junction template for explicitly configured references. Connector
|
||||
endpoints and movement enumeration still come from the native model. T and complex
|
||||
junctions remain on the existing algorithm until their templates are separately validated.
|
||||
|
||||
## Input Contract
|
||||
|
||||
Use an optional area-level reference configuration rather than a hard-coded filename.
|
||||
The sample points to `inputs/osm/珠山湖大道(枫树二路)口.geojson`, declares `GCJ-02`,
|
||||
and identifies the target through OSM node `8005332807` or a stable spatial/name match.
|
||||
The file is not assumed to contain a CRS member; the configured source CRS is required.
|
||||
|
||||
## Geometry Safety
|
||||
|
||||
- Convert all reference coordinates to WGS84 before distance/overlap tests.
|
||||
- Reject malformed or non-finite coordinates and references outside the OSM bounds plus a
|
||||
bounded tolerance.
|
||||
- Never let a reference polygon create a movement, lane, signal, or stop-line record.
|
||||
- Keep a fallback path to the current `compileGeometry()` junction algorithm.
|
||||
|
||||
## Compatibility And Rollback
|
||||
|
||||
No-reference configs and existing output schemas remain unchanged. The experiment can be
|
||||
disabled by omitting the reference section or setting it disabled. Generated diagnostics
|
||||
must record source file hash, conversion mode, matched OSM node, and whether fallback was used.
|
||||
No source reference file is rewritten.
|
||||
|
||||
## Open Technical Work
|
||||
|
||||
1. Select the smallest reusable geometry parameter set from the sample (approach cutback,
|
||||
corner radius/rounding, island/marking envelopes, and tolerances).
|
||||
2. Implement and test GCJ-02 conversion independently from compiler logic.
|
||||
3. Compare the sample against all native junctions near the converted footprint before any
|
||||
production surface override is enabled.
|
||||
4. Add topology classification and template dispatch; only cross is enabled in this validation.
|
||||
5. Preserve native connectors and controls while replacing only the bounded junction surface geometry.
|
||||
Reference in New Issue
Block a user