Support trunk access for some countries
This commit is contained in:
		
							parent
							
								
									becfd8a56d
								
							
						
					
					
						commit
						4b24713d76
					
				
							
								
								
									
										7
									
								
								data/notrunk.geojson
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								data/notrunk.geojson
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @ -4,7 +4,7 @@ Feature: Bike - Accessability of different way types | |||||||
|     Background: |     Background: | ||||||
|         Given the profile "bicycle" |         Given the profile "bicycle" | ||||||
| 
 | 
 | ||||||
|     Scenario: Bike - Routability of way types |     Scenario: Bike - Routability of way types trunk not supported | ||||||
|     # Bikes are allowed on footways etc because you can pull your bike at a lower speed. |     # Bikes are allowed on footways etc because you can pull your bike at a lower speed. | ||||||
|     # Pier is not allowed, since it's tagged using man_made=pier. |     # Pier is not allowed, since it's tagged using man_made=pier. | ||||||
| 
 | 
 | ||||||
| @ -40,3 +40,40 @@ Feature: Bike - Accessability of different way types | |||||||
|             | highway | man_made | bothw | |             | highway | man_made | bothw | | ||||||
|             | (nil)   | (nil)    |       | |             | (nil)   | (nil)    |       | | ||||||
|             | (nil)   | pier     | x     | |             | (nil)   | pier     | x     | | ||||||
|  | 
 | ||||||
|  |     Scenario: Bike - Routability of way types trunk supported | ||||||
|  |     # Bikes are allowed on footways etc because you can pull your bike at a lower speed. | ||||||
|  |     # Pier is not allowed, since it's tagged using man_made=pier. | ||||||
|  | 
 | ||||||
|  |        Given the profile file "bicycle" initialized with | ||||||
|  |         """ | ||||||
|  |         profile.uselocationtags.trunk = true | ||||||
|  |         """ | ||||||
|  | 
 | ||||||
|  |         Then routability should be | ||||||
|  |             | highway        | bothw | | ||||||
|  |             | (nil)          |       | | ||||||
|  |             | motorway       |       | | ||||||
|  |             | motorway_link  |       | | ||||||
|  |             | trunk          | x     | | ||||||
|  |             | trunk_link     | x     | | ||||||
|  |             | primary        | x     | | ||||||
|  |             | primary_link   | x     | | ||||||
|  |             | secondary      | x     | | ||||||
|  |             | secondary_link | x     | | ||||||
|  |             | tertiary       | x     | | ||||||
|  |             | tertiary_link  | x     | | ||||||
|  |             | residential    | x     | | ||||||
|  |             | service        | x     | | ||||||
|  |             | unclassified   | x     | | ||||||
|  |             | living_street  | x     | | ||||||
|  |             | road           | x     | | ||||||
|  |             | track          | x     | | ||||||
|  |             | path           | x     | | ||||||
|  |             | footway        | x     | | ||||||
|  |             | pedestrian     | x     | | ||||||
|  |             | steps          | x     | | ||||||
|  |             | cycleway       | x     | | ||||||
|  |             | bridleway      |       | | ||||||
|  |             | pier           |       | | ||||||
|  | 
 | ||||||
|  | |||||||
							
								
								
									
										183
									
								
								features/bicycle/way_notrunk.feature
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										183
									
								
								features/bicycle/way_notrunk.feature
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,183 @@ | |||||||
|  | @testbot @way @notrunk | ||||||
|  | Feature: Testbot - notrunk allowed  | ||||||
|  | 
 | ||||||
|  |     # Check that Nodes need to be in the geojson file to support trunk access. | ||||||
|  |     # Use the default geopoint around 0.0. | ||||||
|  |     # This covers both trunk allowed notrunk allowed and no motorroad | ||||||
|  |      | ||||||
|  |      Scenario: bicycle trunk allowed - notrunk failure original behavior | ||||||
|  | 
 | ||||||
|  |         Given the profile "bicycle" | ||||||
|  |         And the extract extra arguments "--threads 1" | ||||||
|  |         And the partition extra arguments "--threads 1" | ||||||
|  |         And the customize extra arguments "--threads 1" | ||||||
|  | 
 | ||||||
|  |         And the node locations | ||||||
|  |         # f through o should all fail  | ||||||
|  |          | ||||||
|  |             | node | lat        | lon      | | ||||||
|  |             | a    | 48.65729   | 22.26471 | | ||||||
|  |             | b    | 48.65648   | 22.26486 | | ||||||
|  |             | c    | 48.65503   | 22.26521 | | ||||||
|  |             | d    | 48.65489   | 22.26520 | | ||||||
|  |             | e    | 48.65426   | 22.26533 | | ||||||
|  |             | f    | 48.65277   | 22.26556 | | ||||||
|  |             | g    | 48.65026   | 22.26606 | | ||||||
|  |             | h    | 48.64937   | 22.26618 | | ||||||
|  |             | i    | 48.64858   | 22.26634 | | ||||||
|  |             | j    | 48.64763   | 22.26652 | | ||||||
|  |             | k    | 48.64730   | 22.26658 | | ||||||
|  |             | l    | 48.64616   | 22.26681 | | ||||||
|  |             | m    | 48.64599   | 22.26685 | | ||||||
|  |             | n    | 48.64568   | 22.26690 | | ||||||
|  |              | ||||||
|  |              | ||||||
|  |         And the ways | ||||||
|  |             | nodes | highway | motorroad | | ||||||
|  |             | ab    | primary |           |  | ||||||
|  |             | bc    | primary |           | | ||||||
|  |             | cd    | primary | yes       | | ||||||
|  |             | de    | primary |           | | ||||||
|  |             | ef    | primary |           | | ||||||
|  |             | fg    | trunk   |           | | ||||||
|  |             | gh    | trunk   |           | | ||||||
|  |             | hi    | trunk   |           | | ||||||
|  |             | ij    | trunk   |           | | ||||||
|  |             | jk    | trunk   |           | | ||||||
|  |             | kl    | trunk   |           | | ||||||
|  |             | lm    | trunk   | yes       | | ||||||
|  |             | mn    | primary |           | | ||||||
|  | 
 | ||||||
|  |         When I route I should get | ||||||
|  |             | from | to | route       | status| message                          | # | | ||||||
|  |             | a    | c  | ab,bc,bc    | 200   |                                  |   | | ||||||
|  |             | a    | f  |             | 400   | Impossible route between points  |   | | ||||||
|  |             | d    | f  | de,ef,ef    | 200   |                                  |   | | ||||||
|  |             | d    | g  | de,ef,ef    | 200   |                                  |   | | ||||||
|  |             | d    | n  |             | 400   | Impossible route between points  |   | | ||||||
|  |    | ||||||
|  |      Scenario: bicycle trunk allowed - trunk ok with no geojson | ||||||
|  | 
 | ||||||
|  |         Given the extract extra arguments "--threads 1" | ||||||
|  |         And the partition extra arguments "--threads 1" | ||||||
|  |         And the customize extra arguments "--threads 1" | ||||||
|  | 
 | ||||||
|  |         And the profile file "bicycle" initialized with | ||||||
|  |         """ | ||||||
|  |         profile.uselocationtags.trunk = true | ||||||
|  |         """ | ||||||
|  | 
 | ||||||
|  |         And the node locations | ||||||
|  |         # a through g are in Slovakia - in the no trunk allowed set | ||||||
|  |         # h is on the edge (i.e. in Ukraine) | ||||||
|  |         # i through n are in Ukraine | ||||||
|  |          | ||||||
|  |             | node | lat        | lon      | | ||||||
|  |             | a    | 48.65729   | 22.26471 | | ||||||
|  |             | b    | 48.65648   | 22.26486 | | ||||||
|  |             | c    | 48.65503   | 22.26521 | | ||||||
|  |             | d    | 48.65489   | 22.26520 | | ||||||
|  |             | e    | 48.65426   | 22.26533 | | ||||||
|  |             | f    | 48.65277   | 22.26556 | | ||||||
|  |             | g    | 48.65026   | 22.26606 | | ||||||
|  |             | h    | 48.64937   | 22.26618 | | ||||||
|  |             | i    | 48.64858   | 22.26634 | | ||||||
|  |             | j    | 48.64763   | 22.26652 | | ||||||
|  |             | k    | 48.64730   | 22.26658 | | ||||||
|  |             | l    | 48.64616   | 22.26681 | | ||||||
|  |             | m    | 48.64599   | 22.26685 | | ||||||
|  |             | n    | 48.64568   | 22.26690 | | ||||||
|  |              | ||||||
|  |              | ||||||
|  |         And the ways | ||||||
|  |             | nodes | highway | motorroad | | ||||||
|  |             | ab    | primary |           |  | ||||||
|  |             | bc    | primary |           | | ||||||
|  |             | cd    | primary | yes       | | ||||||
|  |             | de    | primary |           | | ||||||
|  |             | ef    | primary |           | | ||||||
|  |             | fg    | trunk   |           | | ||||||
|  |             | gh    | trunk   |           | | ||||||
|  |             | hi    | trunk   |           | | ||||||
|  |             | ij    | trunk   |           | | ||||||
|  |             | jk    | trunk   |           | | ||||||
|  |             | kl    | trunk   |           | | ||||||
|  |             | lm    | trunk   | yes       | | ||||||
|  |             | mn    | primary |           | | ||||||
|  | 
 | ||||||
|  |         When I route I should get | ||||||
|  |             | from | to | route       | status| message                          | # | | ||||||
|  |             | a    | c  | ab,bc,bc    | 200   |                                  |   | | ||||||
|  |             | a    | d  |             | 400   | Impossible route between points  |   | | ||||||
|  |             | d    | f  | de,ef,ef    | 200   |                                  |   | | ||||||
|  |             | d    | g  | de,ef,fg,fg | 200   |                                  |   | | ||||||
|  |             | e    | n  |             | 400   | Impossible route between points  |   | | ||||||
|  |             | f    | h  | fg,gh       | 200   |                                  |   | | ||||||
|  |             | g    | l  | gh,ij,kl,kl | 200   |                                  |   | | ||||||
|  |             | h    | l  | hi,ij,kl,kl | 200   |                                  |   | | ||||||
|  |             | i    | l  | ij,kl,kl    | 200   |                                  |   | | ||||||
|  |             | i    | m  |             | 400   | Impossible route between points  |   | | ||||||
|  |    | ||||||
|  |      Scenario: bicycle trunk allowed - notrunk failure with geojson | ||||||
|  | 
 | ||||||
|  |         Given the extract extra arguments "--threads 1 --location-dependent-data data/notrunk.geojson" | ||||||
|  |         And the partition extra arguments "--threads 1" | ||||||
|  |         And the customize extra arguments "--threads 1" | ||||||
|  | 
 | ||||||
|  |         And the profile file "bicycle" initialized with | ||||||
|  |         """ | ||||||
|  |         profile.uselocationtags.trunk = true | ||||||
|  |         """ | ||||||
|  |          | ||||||
|  |         And the node locations | ||||||
|  |         # a through g are in Slovakia - in the no trunk allowed set | ||||||
|  |         # h is on the edge (i.e. in Ukraine) | ||||||
|  |         # i through n are in Ukraine | ||||||
|  |          | ||||||
|  |             | node | lat        | lon      | | ||||||
|  |             | a    | 48.65729   | 22.26471 | | ||||||
|  |             | b    | 48.65648   | 22.26486 | | ||||||
|  |             | c    | 48.65503   | 22.26521 | | ||||||
|  |             | d    | 48.65489   | 22.26520 | | ||||||
|  |             | e    | 48.65426   | 22.26533 | | ||||||
|  |             | f    | 48.65277   | 22.26556 | | ||||||
|  |             | g    | 48.65026   | 22.26606 | | ||||||
|  |             | h    | 48.64937   | 22.26618 | | ||||||
|  |             | i    | 48.64858   | 22.26634 | | ||||||
|  |             | j    | 48.64763   | 22.26652 | | ||||||
|  |             | k    | 48.64730   | 22.26658 | | ||||||
|  |             | l    | 48.64616   | 22.26681 | | ||||||
|  |             | m    | 48.64599   | 22.26685 | | ||||||
|  |             | n    | 48.64568   | 22.26690 | | ||||||
|  |              | ||||||
|  |              | ||||||
|  |         And the ways | ||||||
|  |             | nodes | highway | motorroad | | ||||||
|  |             | ab    | primary |           |  | ||||||
|  |             | bc    | primary |           | | ||||||
|  |             | cd    | primary | yes       | | ||||||
|  |             | de    | primary |           | | ||||||
|  |             | ef    | primary |           | | ||||||
|  |             | fg    | trunk   |           | | ||||||
|  |             | gh    | trunk   |           | | ||||||
|  |             | hi    | trunk   |           | | ||||||
|  |             | ij    | trunk   |           | | ||||||
|  |             | jk    | trunk   |           | | ||||||
|  |             | kl    | trunk   |           | | ||||||
|  |             | lm    | trunk   | yes       | | ||||||
|  |             | mn    | primary |           | | ||||||
|  | 
 | ||||||
|  |         When I route I should get | ||||||
|  |             | from | to | route       | status| message                          | # | | ||||||
|  |             | a    | c  | ab,bc,bc    | 200   |                                  |   | | ||||||
|  |             | a    | d  |             | 400   | Impossible route between points  |   | | ||||||
|  |             | a    | f  |             | 400   | Impossible route between points  |   | | ||||||
|  |             | d    | f  | de,ef,ef    | 200   |                                  |   | | ||||||
|  |             | d    | g  |             | 400   | Impossible route between points  |   | | ||||||
|  |             | e    | n  |             | 400   | Impossible route between points  |   | | ||||||
|  |             | f    | h  |             | 400   | Impossible route between points  |   | | ||||||
|  |             | g    | l  | hi,ij,kl,kl | 200   |                                  |   | | ||||||
|  |             | h    | l  | hi,ij,kl,kl | 200   |                                  |   | | ||||||
|  |             | i    | l  | ij,kl,kl    | 200   |                                  |   | | ||||||
|  |             | i    | m  |             | 400   | Impossible route between points  |   | | ||||||
|  |    | ||||||
| @ -42,3 +42,37 @@ Feature: Foot - Accessability of different way types | |||||||
|             | footway  |       |          | x    | |             | footway  |       |          | x    | | ||||||
|             | proposed |       |          |      | |             | proposed |       |          |      | | ||||||
|             | proposed | yes   | yes      |      | |             | proposed | yes   | yes      |      | | ||||||
|  | 
 | ||||||
|  |     Scenario: Foot - Basic access with profile.uselocationtags.trunk = true | ||||||
|  | 
 | ||||||
|  |         Given the profile file "foot" initialized with | ||||||
|  |         """ | ||||||
|  |         profile.uselocationtags.trunk = true | ||||||
|  |         """ | ||||||
|  | 
 | ||||||
|  |         Then routability should be | ||||||
|  |             | highway        | forw | | ||||||
|  |             | motorway       |      | | ||||||
|  |             | motorway_link  |      | | ||||||
|  |             | trunk          | x    | | ||||||
|  |             | trunk_link     | x    | | ||||||
|  |             | primary        | x    | | ||||||
|  |             | primary_link   | x    | | ||||||
|  |             | secondary      | x    | | ||||||
|  |             | secondary_link | x    | | ||||||
|  |             | tertiary       | x    | | ||||||
|  |             | tertiary_link  | x    | | ||||||
|  |             | residential    | x    | | ||||||
|  |             | service        | x    | | ||||||
|  |             | unclassified   | x    | | ||||||
|  |             | living_street  | x    | | ||||||
|  |             | road           | x    | | ||||||
|  |             | track          | x    | | ||||||
|  |             | path           | x    | | ||||||
|  |             | footway        | x    | | ||||||
|  |             | pedestrian     | x    | | ||||||
|  |             | steps          | x    | | ||||||
|  |             | pier           | x    | | ||||||
|  |             | cycleway       |      | | ||||||
|  |             | bridleway      |      | | ||||||
|  | 
 | ||||||
|  | |||||||
							
								
								
									
										186
									
								
								features/foot/way_notrunk.feature
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										186
									
								
								features/foot/way_notrunk.feature
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,186 @@ | |||||||
|  | @testbot @way @notrunk | ||||||
|  | Feature: Testbot - notrunk allowed  | ||||||
|  | 
 | ||||||
|  |     # Check that Nodes need to be in the geojson file to support trunk access. | ||||||
|  |     # Use the default geopoint around 0.0. | ||||||
|  |     # This covers both trunk allowed notrunk allowed and no motorroad | ||||||
|  |      | ||||||
|  |      Scenario: foot trunk allowed - notrunk failure original behavior | ||||||
|  | 
 | ||||||
|  |         Given the profile "foot" | ||||||
|  |         And the extract extra arguments "--threads 1" | ||||||
|  |         And the partition extra arguments "--threads 1" | ||||||
|  |         And the customize extra arguments "--threads 1" | ||||||
|  | 
 | ||||||
|  |         And the node locations | ||||||
|  |         # f through o should all fail  | ||||||
|  |          | ||||||
|  |             | node | lat        | lon      | | ||||||
|  |             | a    | 48.65729   | 22.26471 | | ||||||
|  |             | b    | 48.65648   | 22.26486 | | ||||||
|  |             | c    | 48.65503   | 22.26521 | | ||||||
|  |             | d    | 48.65489   | 22.26520 | | ||||||
|  |             | e    | 48.65426   | 22.26533 | | ||||||
|  |             | f    | 48.65277   | 22.26556 | | ||||||
|  |             | g    | 48.65026   | 22.26606 | | ||||||
|  |             | h    | 48.64937   | 22.26618 | | ||||||
|  |             | i    | 48.64858   | 22.26634 | | ||||||
|  |             | j    | 48.64763   | 22.26652 | | ||||||
|  |             | k    | 48.64730   | 22.26658 | | ||||||
|  |             | l    | 48.64616   | 22.26681 | | ||||||
|  |             | m    | 48.64599   | 22.26685 | | ||||||
|  |             | n    | 48.64568   | 22.26690 | | ||||||
|  |              | ||||||
|  |              | ||||||
|  |         And the ways | ||||||
|  |             | nodes | highway | motorroad | | ||||||
|  |             | ab    | primary |           |  | ||||||
|  |             | bc    | primary |           | | ||||||
|  |             | cd    | primary | yes       | | ||||||
|  |             | de    | primary |           | | ||||||
|  |             | ef    | primary |           | | ||||||
|  |             | fg    | trunk   |           | | ||||||
|  |             | gh    | trunk   |           | | ||||||
|  |             | hi    | trunk   |           | | ||||||
|  |             | ij    | trunk   |           | | ||||||
|  |             | jk    | trunk   |           | | ||||||
|  |             | kl    | trunk   |           | | ||||||
|  |             | lm    | trunk   | yes       | | ||||||
|  |             | mn    | primary |           | | ||||||
|  | 
 | ||||||
|  |         When I route I should get | ||||||
|  |             | from | to | route       | status| message                          | # | | ||||||
|  |             | a    | c  | ab,bc,bc    | 200   |                                  |   | | ||||||
|  |             | a    | f  |             | 400   | Impossible route between points  |   | | ||||||
|  |             | a    | f  |             | 400   | Impossible route between points  |   | | ||||||
|  |             | d    | f  | de,ef,ef    | 200   |                                  |   | | ||||||
|  |             | d    | g  | de,ef,ef    | 200   |                                  |   | | ||||||
|  |             | d    | n  |             | 400   | Impossible route between points  |   | | ||||||
|  |    | ||||||
|  |      # | ||||||
|  |    | ||||||
|  |      Scenario: foot trunk allowed - trunk ok with no geojson | ||||||
|  | 
 | ||||||
|  |         Given the extract extra arguments "--threads 1" | ||||||
|  |         And the partition extra arguments "--threads 1" | ||||||
|  |         And the customize extra arguments "--threads 1" | ||||||
|  | 
 | ||||||
|  |         And the profile file "foot" initialized with | ||||||
|  |         """ | ||||||
|  |         profile.uselocationtags.trunk = true | ||||||
|  |         """ | ||||||
|  | 
 | ||||||
|  |         And the node locations | ||||||
|  |         # a through g are in Slovakia - in the no trunk allowed set | ||||||
|  |         # h is on the edge (i.e. in Ukraine) | ||||||
|  |         # i through n are in Ukraine | ||||||
|  |          | ||||||
|  |             | node | lat        | lon      | | ||||||
|  |             | a    | 48.65729   | 22.26471 | | ||||||
|  |             | b    | 48.65648   | 22.26486 | | ||||||
|  |             | c    | 48.65503   | 22.26521 | | ||||||
|  |             | d    | 48.65489   | 22.26520 | | ||||||
|  |             | e    | 48.65426   | 22.26533 | | ||||||
|  |             | f    | 48.65277   | 22.26556 | | ||||||
|  |             | g    | 48.65026   | 22.26606 | | ||||||
|  |             | h    | 48.64937   | 22.26618 | | ||||||
|  |             | i    | 48.64858   | 22.26634 | | ||||||
|  |             | j    | 48.64763   | 22.26652 | | ||||||
|  |             | k    | 48.64730   | 22.26658 | | ||||||
|  |             | l    | 48.64616   | 22.26681 | | ||||||
|  |             | m    | 48.64599   | 22.26685 | | ||||||
|  |             | n    | 48.64568   | 22.26690 | | ||||||
|  |              | ||||||
|  |              | ||||||
|  |         And the ways | ||||||
|  |             | nodes | highway | motorroad | | ||||||
|  |             | ab    | primary |           |  | ||||||
|  |             | bc    | primary |           | | ||||||
|  |             | cd    | primary | yes       | | ||||||
|  |             | de    | primary |           | | ||||||
|  |             | ef    | primary |           | | ||||||
|  |             | fg    | trunk   |           | | ||||||
|  |             | gh    | trunk   |           | | ||||||
|  |             | hi    | trunk   |           | | ||||||
|  |             | ij    | trunk   |           | | ||||||
|  |             | jk    | trunk   |           | | ||||||
|  |             | kl    | trunk   |           | | ||||||
|  |             | lm    | trunk   | yes       | | ||||||
|  |             | mn    | primary |           | | ||||||
|  | 
 | ||||||
|  |         When I route I should get | ||||||
|  |             | from | to | route       | status| message                          | # | | ||||||
|  |             | a    | c  | ab,bc,bc    | 200   |                                  |   | | ||||||
|  |             | a    | f  |             | 400   | Impossible route between points  |   | | ||||||
|  |             | d    | f  | de,ef,ef    | 200   |                                  |   | | ||||||
|  |             | d    | g  | de,ef,fg,fg | 200   |                                  |   | | ||||||
|  |             | e    | n  |             | 400   | Impossible route between points  |   | | ||||||
|  |             | f    | h  | fg,gh       | 200   |                                  |   | | ||||||
|  |             | g    | l  | gh,ij,kl,kl | 200   |                                  |   | | ||||||
|  |             | h    | l  | hi,ij,kl,kl | 200   |                                  |   | | ||||||
|  |             | i    | l  | ij,kl,kl    | 200   |                                  |   | | ||||||
|  |             | i    | m  |             | 400   | Impossible route between points  |   | | ||||||
|  |    | ||||||
|  |      Scenario: foot trunk allowed - notrunk failure with geojson | ||||||
|  | 
 | ||||||
|  |         Given the extract extra arguments "--threads 1 --location-dependent-data data/notrunk.geojson" | ||||||
|  |         And the partition extra arguments "--threads 1" | ||||||
|  |         And the customize extra arguments "--threads 1" | ||||||
|  | 
 | ||||||
|  |         And the profile file "foot" initialized with | ||||||
|  |         """ | ||||||
|  |         profile.uselocationtags.trunk = true | ||||||
|  |         """ | ||||||
|  |          | ||||||
|  |         And the node locations | ||||||
|  |         # a through g are in Slovakia - in the no trunk allowed set | ||||||
|  |         # h is on the edge (i.e. in Ukraine) | ||||||
|  |         # i through n are in Ukraine | ||||||
|  |          | ||||||
|  |             | node | lat        | lon      | | ||||||
|  |             | a    | 48.65729   | 22.26471 | | ||||||
|  |             | b    | 48.65648   | 22.26486 | | ||||||
|  |             | c    | 48.65503   | 22.26521 | | ||||||
|  |             | d    | 48.65489   | 22.26520 | | ||||||
|  |             | e    | 48.65426   | 22.26533 | | ||||||
|  |             | f    | 48.65277   | 22.26556 | | ||||||
|  |             | g    | 48.65026   | 22.26606 | | ||||||
|  |             | h    | 48.64937   | 22.26618 | | ||||||
|  |             | i    | 48.64858   | 22.26634 | | ||||||
|  |             | j    | 48.64763   | 22.26652 | | ||||||
|  |             | k    | 48.64730   | 22.26658 | | ||||||
|  |             | l    | 48.64616   | 22.26681 | | ||||||
|  |             | m    | 48.64599   | 22.26685 | | ||||||
|  |             | n    | 48.64568   | 22.26690 | | ||||||
|  |              | ||||||
|  |              | ||||||
|  |         And the ways | ||||||
|  |             | nodes | highway | motorroad | | ||||||
|  |             | ab    | primary |           |  | ||||||
|  |             | bc    | primary |           | | ||||||
|  |             | cd    | primary | yes       | | ||||||
|  |             | de    | primary |           | | ||||||
|  |             | ef    | primary |           | | ||||||
|  |             | fg    | trunk   |           | | ||||||
|  |             | gh    | trunk   |           | | ||||||
|  |             | hi    | trunk   |           | | ||||||
|  |             | ij    | trunk   |           | | ||||||
|  |             | jk    | trunk   |           | | ||||||
|  |             | kl    | trunk   |           | | ||||||
|  |             | lm    | trunk   | yes       | | ||||||
|  |             | mn    | primary |           | | ||||||
|  | 
 | ||||||
|  |         When I route I should get | ||||||
|  |             | from | to | route       | status| message                          | # | | ||||||
|  |             | a    | c  | ab,bc,bc    | 200   |                                  |   | | ||||||
|  |             | a    | f  |             | 400   | Impossible route between points  |   | | ||||||
|  |             | a    | f  |             | 400   | Impossible route between points  |   | | ||||||
|  |             | d    | f  | de,ef,ef    | 200   |                                  |   | | ||||||
|  |             | d    | g  |             | 400   | Impossible route between points  |   | | ||||||
|  |             | e    | n  |             | 400   | Impossible route between points  |   | | ||||||
|  |             | f    | h  |             | 400   | Impossible route between points  |   | | ||||||
|  |             | g    | l  | hi,ij,kl,kl | 200   |                                  |   | | ||||||
|  |             | h    | l  | hi,ij,kl,kl | 200   |                                  |   | | ||||||
|  |             | i    | l  | ij,kl,kl    | 200   |                                  |   | | ||||||
|  |             | i    | m  |             | 400   | Impossible route between points  |   | | ||||||
|  |    | ||||||
| @ -27,6 +27,7 @@ function setup() | |||||||
|       mode_change_penalty           = 30, |       mode_change_penalty           = 30, | ||||||
|     }, |     }, | ||||||
| 
 | 
 | ||||||
|  |     profile                   = 'bicycle', | ||||||
|     default_mode              = mode.cycling, |     default_mode              = mode.cycling, | ||||||
|     default_speed             = default_speed, |     default_speed             = default_speed, | ||||||
|     walking_speed             = walking_speed, |     walking_speed             = walking_speed, | ||||||
| @ -35,10 +36,6 @@ function setup() | |||||||
|     turn_bias                 = 1.4, |     turn_bias                 = 1.4, | ||||||
|     use_public_transport      = true, |     use_public_transport      = true, | ||||||
| 
 | 
 | ||||||
|     -- Exclude narrow ways, in particular to route with cargo bike |  | ||||||
|     width                     = nil, -- Cargo bike could 0.5 width, in meters |  | ||||||
|     exclude_cargo_bike        = false, |  | ||||||
| 
 |  | ||||||
|     allowed_start_modes = Set { |     allowed_start_modes = Set { | ||||||
|       mode.cycling, |       mode.cycling, | ||||||
|       mode.pushing_bike |       mode.pushing_bike | ||||||
| @ -140,6 +137,11 @@ function setup() | |||||||
|       path = 13 |       path = 13 | ||||||
|     }, |     }, | ||||||
| 
 | 
 | ||||||
|  |     trunk_speeds = { | ||||||
|  |       trunk = default_speed, | ||||||
|  |       trunk_link = default_speed, | ||||||
|  |     }, | ||||||
|  | 
 | ||||||
|     pedestrian_speeds = { |     pedestrian_speeds = { | ||||||
|       footway = walking_speed, |       footway = walking_speed, | ||||||
|       pedestrian = walking_speed, |       pedestrian = walking_speed, | ||||||
| @ -220,9 +222,15 @@ function setup() | |||||||
| 
 | 
 | ||||||
|     avoid = Set { |     avoid = Set { | ||||||
|       'impassable', |       'impassable', | ||||||
|  |       'motorroad', | ||||||
|       'construction', |       'construction', | ||||||
|       'proposed' |       'proposed' | ||||||
|  |     }, | ||||||
|  | 
 | ||||||
|  |     uselocationtags = Set { | ||||||
|  |     --  'trunk' | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|   } |   } | ||||||
| end | end | ||||||
| 
 | 
 | ||||||
| @ -247,27 +255,6 @@ function process_node(profile, node, result) | |||||||
|     end |     end | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   if profile.exclude_cargo_bike then |  | ||||||
|     local cargo_bike = node:get_value_by_key("cargo_bike") |  | ||||||
|     if cargo_bike and cargo_bike == "no" then |  | ||||||
|       result.barrier = true |  | ||||||
|     end |  | ||||||
|   end |  | ||||||
| 
 |  | ||||||
|   -- width |  | ||||||
|   if profile.width then |  | ||||||
|     -- From barrier=cycle_barrier or other barriers |  | ||||||
|     local maxwidth_physical = node:get_value_by_key("maxwidth:physical") |  | ||||||
|     local maxwidth_physical_meter = maxwidth_physical and Measure.parse_value_meters(maxwidth_physical) or 99 |  | ||||||
|     local opening = node:get_value_by_key("opening") |  | ||||||
|     local opening_meter = opening and Measure.parse_value_meters(opening) or 99 |  | ||||||
|     local width_meter = math.min(maxwidth_physical_meter, opening_meter) |  | ||||||
| 
 |  | ||||||
|     if width_meter and width_meter < profile.width then |  | ||||||
|       result.barrier = true |  | ||||||
|     end |  | ||||||
|   end |  | ||||||
| 
 |  | ||||||
|   -- check if node is a traffic light |   -- check if node is a traffic light | ||||||
|   result.traffic_lights = TrafficSignal.get_value(node) |   result.traffic_lights = TrafficSignal.get_value(node) | ||||||
| end | end | ||||||
| @ -324,8 +311,6 @@ function handle_bicycle_tags(profile,way,result,data) | |||||||
| 
 | 
 | ||||||
|   bike_push_handler(profile,way,result,data) |   bike_push_handler(profile,way,result,data) | ||||||
| 
 | 
 | ||||||
|   -- width should be after bike_push |  | ||||||
|   width_handler(profile,way,result,data) |  | ||||||
| 
 | 
 | ||||||
|   -- maxspeed |   -- maxspeed | ||||||
|   limit( result, data.maxspeed, data.maxspeed_forward, data.maxspeed_backward ) |   limit( result, data.maxspeed, data.maxspeed_forward, data.maxspeed_backward ) | ||||||
| @ -391,9 +376,16 @@ function speed_handler(profile,way,result,data) | |||||||
|     data.way_type_allows_pushing = true |     data.way_type_allows_pushing = true | ||||||
|   elseif profile.bicycle_speeds[data.highway] then |   elseif profile.bicycle_speeds[data.highway] then | ||||||
|     -- regular ways |     -- regular ways | ||||||
|  |     -- check trunk | ||||||
|     result.forward_speed = profile.bicycle_speeds[data.highway] |     result.forward_speed = profile.bicycle_speeds[data.highway] | ||||||
|     result.backward_speed = profile.bicycle_speeds[data.highway] |     result.backward_speed = profile.bicycle_speeds[data.highway] | ||||||
|     data.way_type_allows_pushing = true |     data.way_type_allows_pushing = true | ||||||
|  |   elseif profile.trunk_speeds[data.highway] and profile.uselocationtags and profile.uselocationtags.trunk then | ||||||
|  |     if not way:get_location_tag(data.highway) or way:get_location_tag(data.highway) ~= "no" then | ||||||
|  |       result.forward_speed = profile.trunk_speeds[data.highway] | ||||||
|  |       result.backward_speed = profile.trunk_speeds[data.highway] | ||||||
|  |       data.way_type_allows_pushing = true | ||||||
|  |     end | ||||||
|   elseif data.access and profile.access_tag_whitelist[data.access]  then |   elseif data.access and profile.access_tag_whitelist[data.access]  then | ||||||
|     -- unknown way, but valid access tag |     -- unknown way, but valid access tag | ||||||
|     result.forward_speed = profile.default_speed |     result.forward_speed = profile.default_speed | ||||||
| @ -480,27 +472,6 @@ function cycleway_handler(profile,way,result,data) | |||||||
|   end |   end | ||||||
| end | end | ||||||
| 
 | 
 | ||||||
| function width_handler(profile,way,result,data) |  | ||||||
|   if profile.exclude_cargo_bike then |  | ||||||
|     local cargo_bike = way:get_value_by_key("cargo_bike") |  | ||||||
|     if cargo_bike and cargo_bike == "no" then |  | ||||||
|       result.forward_mode = mode.inaccessible |  | ||||||
|       result.backward_mode = mode.inaccessible |  | ||||||
|     end |  | ||||||
|   end |  | ||||||
| 
 |  | ||||||
|   if profile.width then |  | ||||||
|     local width = way:get_value_by_key("width") |  | ||||||
|     if width then |  | ||||||
|       local width_meter = Measure.parse_value_meters(width) |  | ||||||
|       if width_meter and width_meter < profile.width then |  | ||||||
|         result.forward_mode = mode.inaccessible |  | ||||||
|         result.backward_mode = mode.inaccessible |  | ||||||
|       end |  | ||||||
|     end |  | ||||||
|   end |  | ||||||
| end |  | ||||||
| 
 |  | ||||||
| function bike_push_handler(profile,way,result,data) | function bike_push_handler(profile,way,result,data) | ||||||
|   -- pushing bikes - if no other mode found |   -- pushing bikes - if no other mode found | ||||||
|   if result.forward_mode == mode.inaccessible or result.backward_mode == mode.inaccessible or |   if result.forward_mode == mode.inaccessible or result.backward_mode == mode.inaccessible or | ||||||
|  | |||||||
| @ -20,6 +20,7 @@ function setup() | |||||||
|       use_turn_restrictions         = false, |       use_turn_restrictions         = false, | ||||||
|     }, |     }, | ||||||
| 
 | 
 | ||||||
|  |     profile                 = 'foot', | ||||||
|     default_mode            = mode.walking, |     default_mode            = mode.walking, | ||||||
|     default_speed           = walking_speed, |     default_speed           = walking_speed, | ||||||
|     oneway_handling         = 'specific',     -- respect 'oneway:foot' but not 'oneway' |     oneway_handling         = 'specific',     -- respect 'oneway:foot' but not 'oneway' | ||||||
| @ -70,7 +71,13 @@ function setup() | |||||||
| 
 | 
 | ||||||
|     avoid = Set { |     avoid = Set { | ||||||
|       'impassable', |       'impassable', | ||||||
|       'proposed' |       'proposed', | ||||||
|  |       'motorroad' | ||||||
|  |     }, | ||||||
|  | 
 | ||||||
|  |     trunk_speeds = { | ||||||
|  |       trunk           = walking_speed, | ||||||
|  |       trunk_link      = walking_speed | ||||||
|      }, |      }, | ||||||
| 
 | 
 | ||||||
|     speeds = Sequence { |     speeds = Sequence { | ||||||
| @ -132,6 +139,10 @@ function setup() | |||||||
|     }, |     }, | ||||||
| 
 | 
 | ||||||
|     smoothness_speeds = { |     smoothness_speeds = { | ||||||
|  |     }, | ||||||
|  | 
 | ||||||
|  |     uselocationtags = Set { | ||||||
|  |      -- 'trunk' | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| end | end | ||||||
| @ -190,7 +201,6 @@ function process_way(profile, way, result) | |||||||
|     amenity = way:get_value_by_key('amenity'), |     amenity = way:get_value_by_key('amenity'), | ||||||
|     public_transport = way:get_value_by_key('public_transport') |     public_transport = way:get_value_by_key('public_transport') | ||||||
|   } |   } | ||||||
| 
 |  | ||||||
|   -- perform an quick initial check and abort if the way is |   -- perform an quick initial check and abort if the way is | ||||||
|   -- obviously not routable. here we require at least one |   -- obviously not routable. here we require at least one | ||||||
|   -- of the prefetched tags to be present, ie. the data table |   -- of the prefetched tags to be present, ie. the data table | ||||||
|  | |||||||
| @ -276,6 +276,16 @@ function WayHandlers.speed(profile,way,result,data) | |||||||
| 
 | 
 | ||||||
|   local key,value,speed = Tags.get_constant_by_key_value(way,profile.speeds) |   local key,value,speed = Tags.get_constant_by_key_value(way,profile.speeds) | ||||||
| 
 | 
 | ||||||
|  |   -- if the highway is trunk or trunk_link and locationtag disables it | ||||||
|  |   -- then noroute available | ||||||
|  | 
 | ||||||
|  |   if not speed and data.highway and profile.uselocationtags and profile.uselocationtags.trunk then | ||||||
|  |     if profile.trunk_speeds[data.highway] and | ||||||
|  |        (not way:get_location_tag(data.highway) or way:get_location_tag(data.highway) ~= "no") then | ||||||
|  |       speed = profile.trunk_speeds[data.highway] | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|   if speed then |   if speed then | ||||||
|     -- set speed by way type |     -- set speed by way type | ||||||
|     result.forward_speed = speed |     result.forward_speed = speed | ||||||
| @ -634,6 +644,11 @@ function WayHandlers.blocked_ways(profile,way,result,data) | |||||||
|     return false |     return false | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|  |   -- motorroad | ||||||
|  |   if profile.avoid.motorroad and way:get_value_by_key("motorroad") == "yes" then | ||||||
|  |     return false | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|   -- In addition to the highway=construction tag above handle the construction=* tag |   -- In addition to the highway=construction tag above handle the construction=* tag | ||||||
|   -- http://wiki.openstreetmap.org/wiki/Key:construction |   -- http://wiki.openstreetmap.org/wiki/Key:construction | ||||||
|   -- https://taginfo.openstreetmap.org/keys/construction#values |   -- https://taginfo.openstreetmap.org/keys/construction#values | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user