52 lines
2.3 KiB
Markdown
52 lines
2.3 KiB
Markdown
# Design
|
|
|
|
## Provider Boundary
|
|
|
|
`build-area.js` will resolve a native provider by default. Native stages consume only OSM, native
|
|
road overrides, and `native-road/` outputs. Legacy `intermediates`, `reimport`, and osm2streets
|
|
Blender input remain behind explicit legacy selection and keep their existing output contract.
|
|
|
|
## Native Data Flow
|
|
|
|
```text
|
|
OSM + native-road-overrides.json
|
|
-> compile-native-roads.js
|
|
-> native-road/layers/*.geojson + compiled.json + traffic-signals.json
|
|
-> Blender generate_scene.py --native-road --traffic-signals
|
|
-> .blend
|
|
-> Cesium/package GLB + manifest + runtime/traffic-signals.json
|
|
-> preview HTML + optional native vehicle route
|
|
```
|
|
|
|
The native compiler is the sole authority for road geometry, lane semantics, intersection surfaces,
|
|
stop lines, and signal runtime. No native stage reads `geojsonDir` or legacy assembly files.
|
|
|
|
## Preview Route
|
|
|
|
Add a native route adapter that derives route segments from `compiled.json` model roads/endpoints and
|
|
native lane/connector geometry. If the native route cannot be built for a valid area, preview remains
|
|
usable without vehicles and records a warning; missing legacy osm2streets lane polygons is never a
|
|
hard failure on the native path.
|
|
|
|
## Package Runtime
|
|
|
|
The package stage will copy the native-road signal runtime into its staging runtime directory and
|
|
declare it in the package manifest. Preview receives the package-relative runtime URI. Legacy signal
|
|
runtime publication remains conditional on the legacy provider.
|
|
|
|
## Configuration And Compatibility
|
|
|
|
`roadProvider` defaults to `native`; native stages are the default stage set. QGIS config fields and
|
|
legacy stage aliases remain accepted for explicit migration/debug commands, but native manifests and
|
|
docs do not claim them as inputs.
|
|
|
|
The Workbench may continue to read an existing `geojsonDir` only for an explicitly labeled reference
|
|
layer and comparison counters. Those reads are optional, isolated from native compile state, and must
|
|
never become required inputs for `/api/state`, native editing, package publication, or preview.
|
|
|
|
## Rollback
|
|
|
|
The original QGIS/osm2streets branch baseline is tagged
|
|
`qgis-original-baseline-20260818` on `main`. Reverting the native-only work can therefore use the tag
|
|
or switch to `main`; no destructive cleanup of legacy scripts is required.
|