surface, tracktype, smoothness tags in car profile
This commit is contained in:
		
							parent
							
								
									5653516b32
								
							
						
					
					
						commit
						0df81c49d5
					
				
							
								
								
									
										141
									
								
								features/car/surface.feature
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										141
									
								
								features/car/surface.feature
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,141 @@ | ||||
| @routing @car @surface | ||||
| Feature: Car - Surfaces | ||||
| 
 | ||||
|     Background: | ||||
|         Given the profile "car" | ||||
| 
 | ||||
|     Scenario: Car - Routeability of tracktype tags | ||||
|         Then routability should be | ||||
|             | highway | tracktype | bothw | | ||||
|             | trunk   | grade1    | x     | | ||||
|             | trunk   | grade2    | x     | | ||||
|             | trunk   | grade3    | x     | | ||||
|             | trunk   | grade4    | x     | | ||||
|             | trunk   | grade5    | x     | | ||||
|             | trunk   | nonsense  | x     | | ||||
| 
 | ||||
|     Scenario: Car - Routability of smoothness tags | ||||
|         Then routability should be | ||||
|             | highway | smoothness    | bothw | | ||||
|             | trunk   | excellent     | x     | | ||||
|             | trunk   | good          | x     | | ||||
|             | trunk   | intermediate  | x     | | ||||
|             | trunk   | bad           | x     | | ||||
|             | trunk   | very_bad      | x     | | ||||
|             | trunk   | horrible      | x     | | ||||
|             | trunk   | very_horrible | x     | | ||||
|             | trunk   | impassable    |       | | ||||
|             | trunk   | nonsense      | x     | | ||||
|   | ||||
|     Scenario: Car - Routabiliy of surface tags | ||||
|         Then routability should be | ||||
|             | highway | surface  | bothw | | ||||
|             | trunk   | asphalt  | x     | | ||||
|             | trunk   | sett     | x     | | ||||
|             | trunk   | gravel   | x     | | ||||
|             | trunk   | nonsense | x     | | ||||
| 
 | ||||
|     Scenario: Car - Good surfaces should not grant access | ||||
|         Then routability should be | ||||
|             | highway  | access       | tracktype | smoothness | surface | forw | backw | | ||||
|             | motorway |              |           |            |         | x    |       | | ||||
|             | motorway | no           | grade1    | excellent  | asphalt |      |       | | ||||
|             | motorway | private      | grade1    | excellent  | asphalt |      |       | | ||||
|             | motorway | agricultural | grade1    | excellent  | asphalt |      |       | | ||||
|             | motorway | forestry     | grade1    | excellent  | asphalt |      |       | | ||||
|             | motorway | emergency    | grade1    | excellent  | asphalt |      |       | | ||||
|             | primary  |              |           |            |         | x    | x     | | ||||
|             | primary  | no           | grade1    | excellent  | asphalt |      |       | | ||||
|             | primary  | private      | grade1    | excellent  | asphalt |      |       | | ||||
|             | primary  | agricultural | grade1    | excellent  | asphalt |      |       | | ||||
|             | primary  | forestry     | grade1    | excellent  | asphalt |      |       | | ||||
|             | primary  | emergency    | grade1    | excellent  | asphalt |      |       | | ||||
| 
 | ||||
|     Scenario: Car - Impassable surfaces should deny access | ||||
|         Then routability should be | ||||
|             | highway  | access | smoothness | forw | backw | | ||||
|             | motorway |        | impassable |      |       | | ||||
|             | motorway | yes    |            | x    |       | | ||||
|             | motorway | yes    | impassable |      |       | | ||||
|             | primary  |        | impassable |      |       | | ||||
|             | primary  | yes    |            | x    | x     | | ||||
|             | primary  | yes    | impassable |      |       | | ||||
| 
 | ||||
|     Scenario: Car - Surface should reduce speed | ||||
|         Then routability should be | ||||
|             | highway  | oneway | surface         | forw        | backw       | | ||||
|             | motorway | no     |                 | 72 km/h +-1 | 72 km/h +-1 | | ||||
|             | motorway | no     | asphalt         | 72 km/h +-1 | 72 km/h +-1 | | ||||
|             | motorway | no     | concrete        | 72 km/h +-1 | 72 km/h +-1 | | ||||
|             | motorway | no     | concrete:plates | 72 km/h +-1 | 72 km/h +-1 | | ||||
|             | motorway | no     | concrete:lanes  | 72 km/h +-1 | 72 km/h +-1 | | ||||
|             | motorway | no     | paved           | 72 km/h +-1 | 72 km/h +-1 | | ||||
|             | motorway | no     | cement          | 65 km/h +-1 | 65 km/h +-1 | | ||||
|             | motorway | no     | compacted       | 65 km/h +-1 | 65 km/h +-1 | | ||||
|             | motorway | no     | fine_gravel     | 65 km/h +-1 | 65 km/h +-1 | | ||||
|             | motorway | no     | paving_stones   | 48 km/h +-1 | 48 km/h +-1 | | ||||
|             | motorway | no     | metal           | 48 km/h +-1 | 48 km/h +-1 | | ||||
|             | motorway | no     | bricks          | 48 km/h +-1 | 48 km/h +-1 | | ||||
|             | motorway | no     | grass           | 32 km/h +-1 | 32 km/h +-1 | | ||||
|             | motorway | no     | wood            | 32 km/h +-1 | 32 km/h +-1 | | ||||
|             | motorway | no     | sett            | 32 km/h +-1 | 32 km/h +-1 | | ||||
|             | motorway | no     | grass_paver     | 32 km/h +-1 | 32 km/h +-1 | | ||||
|             | motorway | no     | gravel          | 32 km/h +-1 | 32 km/h +-1 | | ||||
|             | motorway | no     | unpaved         | 32 km/h +-1 | 32 km/h +-1 | | ||||
|             | motorway | no     | ground          | 32 km/h +-1 | 32 km/h +-1 | | ||||
|             | motorway | no     | dirt            | 32 km/h +-1 | 32 km/h +-1 | | ||||
|             | motorway | no     | pebblestone     | 32 km/h +-1 | 32 km/h +-1 | | ||||
|             | motorway | no     | tartan          | 32 km/h +-1 | 32 km/h +-1 | | ||||
|             | motorway | no     | cobblestone     | 24 km/h +-1 | 24 km/h +-1 | | ||||
|             | motorway | no     | clay            | 24 km/h +-1 | 24 km/h +-1 | | ||||
|             | motorway | no     | earth           | 16 km/h +-1 | 16 km/h +-1 | | ||||
|             | motorway | no     | stone           | 16 km/h +-1 | 16 km/h +-1 | | ||||
|             | motorway | no     | rocky           | 16 km/h +-1 | 16 km/h +-1 | | ||||
|             | motorway | no     | sand            | 16 km/h +-1 | 16 km/h +-1 | | ||||
| 
 | ||||
|     Scenario: Car - Tracktypes should reduce speed | ||||
|         Then routability should be | ||||
|             | highway  | oneway | tracktype | forw        | backw       | | ||||
|             | motorway | no     |           | 72 km/h +-1 | 72 km/h +-1 | | ||||
|             | motorway | no     | grade1    | 48 km/h +-1 | 48 km/h +-1 | | ||||
|             | motorway | no     | grade2    | 32 km/h +-1 | 32 km/h +-1 | | ||||
|             | motorway | no     | grade3    | 24 km/h +-1 | 24 km/h +-1 | | ||||
|             | motorway | no     | grade4    | 20 km/h +-1 | 20 km/h +-1 | | ||||
|             | motorway | no     | grade5    | 16 km/h +-1 | 16 km/h +-1 | | ||||
| 
 | ||||
|     Scenario: Car - Smoothness should reduce speed | ||||
|         Then routability should be | ||||
|             | highway  | oneway | smoothness    | forw        | backw       | | ||||
|             | motorway | no     |               | 72 km/h +-1 | 72 km/h +-1 | | ||||
|             | motorway | no     | intermediate  | 65 km/h +-1 | 65 km/h +-1 | | ||||
|             | motorway | no     | bad           | 32 km/h +-1 | 32 km/h +-1 | | ||||
|             | motorway | no     | very_bad      | 16 km/h +-1 | 16 km/h +-1 | | ||||
|             | motorway | no     | horrible      | 8 km/h +-1  | 8 km/h +-1  | | ||||
|             | motorway | no     | very_horrible | 4 km/h +-1  | 4 km/h +-1  | | ||||
| 
 | ||||
|     Scenario: Car - Combination of surface tags should use lowest speed | ||||
|         Then routability should be | ||||
|             | highway  | oneway | tracktype | surface | smoothness    | backw   | forw    | | ||||
|             | motorway | no     |           |         |               | 72 km/h | 72 km/h | | ||||
|             | service  | no     | grade1    | asphalt | excellent     | 12 km/h | 12 km/h | | ||||
|             | motorway | no     | grade5    | asphalt | excellent     | 16 km/h | 16 km/h | | ||||
|             | motorway | no     | grade1    | mud     | excellent     | 8 km/h  | 8 km/h  | | ||||
|             | motorway | no     | grade1    | asphalt | very_horrible | 4 km/h  | 4 km/h  | | ||||
|             | service  | no     | grade5    | mud     | very_horrible | 4 km/h  | 4 km/h  | | ||||
| 
 | ||||
|     Scenario: Car - Surfaces should not affect oneway direction | ||||
|         Then routability should be | ||||
|             | highway | oneway | tracktype | smoothness | surface  | forw | backw | | ||||
|             | primary |        | grade1    | excellent  | asphalt  | x    | x     | | ||||
|             | primary |        | grade5    | very_bad   | mud      | x    | x     | | ||||
|             | primary |        | nonsense  | nonsense   | nonsense | x    | x     | | ||||
|             | primary | no     | grade1    | excellent  | asphalt  | x    | x     | | ||||
|             | primary | no     | grade5    | very_bad   | mud      | x    | x     | | ||||
|             | primary | no     | nonsense  | nonsense   | nonsense | x    | x     | | ||||
|             | primary | yes    | grade1    | excellent  | asphalt  | x    |       | | ||||
|             | primary | yes    | grade5    | very_bad   | mud      | x    |       | | ||||
|             | primary | yes    | nonsense  | nonsense   | nonsense | x    |       | | ||||
|             | primary | -1     | grade1    | excellent  | asphalt  |      | x     | | ||||
|             | primary | -1     | grade5    | very_bad   | mud      |      | x     | | ||||
|             | primary | -1     | nonsense  | nonsense   | nonsense |      | x     | | ||||
|      | ||||
| @ -32,6 +32,63 @@ speed_profile = { | ||||
|   ["default"] = 10 | ||||
| } | ||||
| 
 | ||||
| -- surface/trackype/smoothness speeds was estimated from | ||||
| -- looking the the photos at the relevant wiki pages | ||||
| surface_speeds = { | ||||
|   ["asphalt"] = 400, | ||||
| 
 | ||||
|   ["concrete"] = 200, | ||||
|   ["concrete:plates"] = 200, | ||||
|   ["concrete:lanes"] = 200, | ||||
|   ["paved"] = 200, | ||||
| 
 | ||||
|   ["cement"] = 80, | ||||
|   ["compacted"] = 80, | ||||
|   ["fine_gravel"] = 80, | ||||
|    | ||||
|   ["paving_stones"] = 60, | ||||
|   ["metal"] = 60, | ||||
|   ["bricks"] = 60, | ||||
| 
 | ||||
|   ["grass"] = 40, | ||||
|   ["wood"] = 40, | ||||
|   ["sett"] = 40, | ||||
|   ["grass_paver"] = 40, | ||||
|   ["gravel"] = 40, | ||||
|   ["unpaved"] = 40, | ||||
|   ["ground"] = 40, | ||||
|   ["dirt"] = 40, | ||||
|   ["pebblestone"] = 40, | ||||
|   ["tartan"] = 40, | ||||
| 
 | ||||
|   ["cobblestone"] = 30, | ||||
|   ["clay"] = 30, | ||||
|   ["earth"] = 20, | ||||
| 
 | ||||
|   ["stone"] = 20, | ||||
|   ["rocky"] = 20, | ||||
|   ["sand"] = 20, | ||||
| 
 | ||||
|   ["mud"] = 10 | ||||
| } | ||||
| 
 | ||||
| tracktype_speeds = { | ||||
|   ["grade1"] =  60, | ||||
|   ["grade2"] =  40, | ||||
|   ["grade3"] =  30, | ||||
|   ["grade4"] =  25, | ||||
|   ["grade5"] =  20 | ||||
| } | ||||
| 
 | ||||
| smoothness_speeds = { | ||||
|   ["intermediate"]    =  80, | ||||
|   ["bad"]             =  40, | ||||
|   ["very_bad"]        =  20, | ||||
|   ["horrible"]        =  10, | ||||
|   ["very_horrible"]   =  5, | ||||
|   ["impassable"]      =  0 | ||||
| } | ||||
| 
 | ||||
| -- http://wiki.openstreetmap.org/wiki/Speed_limits | ||||
| maxspeed_table_default = { | ||||
|   ["urban"] = 50, | ||||
| @ -64,7 +121,6 @@ maxspeed_table = { | ||||
| 
 | ||||
| traffic_signal_penalty          = 2 | ||||
| 
 | ||||
| -- End of globals | ||||
| local take_minimum_of_speeds    = false | ||||
| local obey_oneway               = true | ||||
| local obey_bollards             = true | ||||
| @ -256,6 +312,24 @@ function way_function (way) | ||||
|     return | ||||
|   end | ||||
| 
 | ||||
|   -- reduce speed on bad surfaces | ||||
|   local surface = way.tags:Find("surface") | ||||
|   local tracktype = way.tags:Find("tracktype") | ||||
|   local smoothness = way.tags:Find("smoothness") | ||||
| 
 | ||||
|   if surface and surface_speeds[surface] then | ||||
|     way.forward_speed = math.min(surface_speeds[surface], way.forward_speed) | ||||
|     way.backward_speed = math.min(surface_speeds[surface], way.backward_speed) | ||||
|   end | ||||
|   if tracktype and tracktype_speeds[tracktype] then | ||||
|     way.forward_speed = math.min(tracktype_speeds[tracktype], way.forward_speed) | ||||
|     way.backward_speed = math.min(tracktype_speeds[tracktype], way.backward_speed) | ||||
|   end | ||||
|   if smoothness and smoothness_speeds[smoothness] then | ||||
|     way.forward_speed = math.min(smoothness_speeds[smoothness], way.forward_speed) | ||||
|     way.backward_speed = math.min(smoothness_speeds[smoothness], way.backward_speed) | ||||
|   end | ||||
| 
 | ||||
|   -- parse the remaining tags | ||||
|   local name = way.tags:Find("name") | ||||
|   local ref = way.tags:Find("ref") | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user