Skip to content

Commit f7478ba

Browse files
authored
Process maxspeed tag before surface, smoothness, and tracktype tags (#6002)
* Handle maxspeed tags before surface and smoothness tags Let's say we have a tertiary road with the following tags: highway=tertiary maxspeed=60 surface=gravel smoothness=intermediate While the maxspeed tag tells us the legal speed limit, the surface and smoothness tags have much more effect on the real-world speed of a car. We should process the maxspeed tags first, and then update the road's forwards/backwards speeds according to any surface and smoothness tags. For our hypothetical road the process in the car.lua profile now goes like this: 1. Get default speed from profile (tertiary = 40 on line 150 of car.lua) 2. Change speed to 60 using maxspeed tag (WayHandlers.maxspeed function in way_handlers.lua, lines 434-447) 3. Change speed to 40 using surface tag (WayHandlers.surface function in way_handlers.lua, lines 360-363) 4. Check speed according to smoothness tag --- but because it's higher than the speed according to the surface tag, leave the speed unchanged (WayHandlers.surface function again, lines 368-371) <https://github.com/Project-OSRM/osrm-backend/blob/ec36319232f6b6558080c5586d21fc0bd150de44/profiles/car.lua#L150> <https://github.com/Project-OSRM/osrm-backend/blob/ec36319232f6b6558080c5586d21fc0bd150de44/profiles/lib/way_handlers.lua#L354-L372> Note in step 3 above the speed's only changed from 60kph to 40kph because it's a lower value. If the surface speed was higher than than the previous value, the speed would remain unchanged. Another example: highway=tertiary maxspeed=60 surface=compacted smoothness=intermediate Here, although the profile's speed for compacted is 80, it would stay at the lower value of 60 (see way_handlers.lua, lines 360-363). <https://github.com/Project-OSRM/osrm-backend/blob/ec36319232f6b6558080c5586d21fc0bd150de44/profiles/lib/way_handlers.lua#L360-L363>
1 parent ec36319 commit f7478ba

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

profiles/car.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -432,8 +432,8 @@ function process_way(profile, way, result, relations)
432432

433433
-- compute speed taking into account way type, maxspeed tags, etc.
434434
WayHandlers.speed,
435-
WayHandlers.surface,
436435
WayHandlers.maxspeed,
436+
WayHandlers.surface,
437437
WayHandlers.penalties,
438438

439439
-- compute class labels

0 commit comments

Comments
 (0)