51 lines
2.0 KiB
Markdown
51 lines
2.0 KiB
Markdown
# Native Road Centre Lines Design
|
|
|
|
## Architecture
|
|
|
|
The native compiler adds one independent polygon layer:
|
|
|
|
```text
|
|
canonical bidirectional segment + trimmed OSM centreline
|
|
-> repeated 2m x 0.25m dash polygons
|
|
-> native-road/layers/center_lines.geojson
|
|
-> Workbench / native Blender adapter / Cesium
|
|
```
|
|
|
|
It does not read osm2streets `center_lines.geojson`. The legacy layer is a
|
|
visual baseline only.
|
|
|
|
## Placement
|
|
|
|
- A candidate must have exactly forward and backward native roads for the same
|
|
`segmentId`, neither be `highway=service`, and have a valid trimmed OSM
|
|
centreline.
|
|
- Dashes use the legacy observed dimensions: 2m length, 0.25m width, with a
|
|
deterministic 2m gap. The first dash starts at a fixed segment-local offset
|
|
so rebuilds do not drift.
|
|
- The line is trimmed with the same `junctionPlans` cutback used by native lane
|
|
centreline generation. Any dash intersecting a crosswalk or stop line is
|
|
omitted, preserving the control-marking priority already established.
|
|
- One-way and service segments have no generated feature. A degenerate source
|
|
line produces a diagnostic rather than malformed geometry.
|
|
|
|
## Contracts
|
|
|
|
`layers/center_lines.geojson` is a Polygon FeatureCollection. Every feature
|
|
has `native_id`, `segment_id`, `directional_road_ids`, `osm_way_ids`,
|
|
`dash_index`, `dash_length_m`, `dash_gap_m`, `placement_rule`, and
|
|
`provenance="native-road-center-line/v1"`.
|
|
|
|
`compiled.json.layers.centerLines`, comparison count
|
|
`nativeCenterLineFeatures`, and `build-area.js` required native records use the
|
|
same filename. `catalog.NATIVE_ROAD_LAYERS` maps source `center_lines` to the
|
|
existing `center_lines` material layer.
|
|
|
|
The Workbench loads this source into the marking overlay, exposes a Chinese
|
|
toggle, and identifies it as `道路中心虚线` on selection.
|
|
|
|
## Compatibility
|
|
|
|
The change is additive within `native-road/`; `--road-provider osm2streets`
|
|
remains unaffected and is rollback. A native Blender build treats a missing
|
|
layer as an input error rather than silently omitting it.
|