recon/lib/offroute
Matt bc463188d5 feat(offroute): Phase O4 — multi-mode cost functions (foot/mtb/atv/vehicle)
- Add ModeProfile dataclass for data-driven mode configuration
- Implement three speed functions:
  * Tobler off-path hiking (foot)
  * Herzog wheeled-transport polynomial (mtb/atv)
  * Linear speed degradation (vehicle)
- Add WildernessReader for PAD-US Des_Tp=WA wilderness areas
- Mode-specific terrain friction overrides:
  * Forest impassable for ATV/vehicle, high friction for MTB
  * Wetland/mangrove impassable for all wheeled modes
- Trail access rules:
  * Foot trails (value 25) impassable for ATV/vehicle
- Wilderness blocking for mtb/atv/vehicle modes
- Vehicle mode allows flat grassland/cropland traversal
- Memory optimization: limit entry points, constrain bbox size
- Update router to pass mode and wilderness to cost function
- Add vehicle to API mode validation

Validated all four modes with test route:
- foot: 0.46km off-network, 12.11km network, 89% on trail
- mtb: 0.47km off-network, 13.13km network, 90% on trail
- atv: 0.47km off-network, 12.81km network, 90% on trail
- vehicle: 0.46km off-network, 12.81km network, 89% on trail

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-05-08 14:11:56 +00:00
..
__init__.py
barriers.py feat(offroute): Phase O4 — multi-mode cost functions (foot/mtb/atv/vehicle) 2026-05-08 14:11:56 +00:00
cost.py feat(offroute): Phase O4 — multi-mode cost functions (foot/mtb/atv/vehicle) 2026-05-08 14:11:56 +00:00
dem.py
friction.py
prototype.py feat(offroute): Phase O3a — trail burn-in, pathfinder seeks trail corridors 2026-05-08 07:26:25 +00:00
router.py feat(offroute): Phase O4 — multi-mode cost functions (foot/mtb/atv/vehicle) 2026-05-08 14:11:56 +00:00
trails.py feat(offroute): Phase O3a — trail burn-in, pathfinder seeks trail corridors 2026-05-08 07:26:25 +00:00