Merge PR #970 'experimental/cuke_import_format' into develop
This commit is contained in:
		
						commit
						0ef7a72b33
					
				| @ -41,9 +41,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
| #include <boost/ref.hpp> | ||||
| 
 | ||||
| XMLParser::XMLParser(const char * filename, ExtractorCallbacks* ec, ScriptingEnvironment& se) : BaseParser(ec, se) { | ||||
| 	SimpleLogger().Write(logWARNING) << | ||||
| 		"Parsing plain .osm/.osm.bz2 is deprecated. Switch to .pbf"; | ||||
| 
 | ||||
| 	inputReader = inputReaderFactory(filename); | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -193,6 +193,11 @@ int main (int argc, char *argv[]) { | ||||
|             (get_timestamp() - parsing_start_time) << | ||||
|             " seconds"; | ||||
| 
 | ||||
|         if( externalMemory.all_edges_list.empty() ) { | ||||
|             SimpleLogger().Write(logWARNING) << "The input data is empty, exiting."; | ||||
|             return -1; | ||||
|         } | ||||
| 
 | ||||
|         externalMemory.PrepareData(output_file_name, restrictionsFileName); | ||||
| 
 | ||||
|         delete parser; | ||||
|  | ||||
| @ -2,6 +2,10 @@ Given /^the profile "([^"]*)"$/ do |profile| | ||||
|   set_profile profile | ||||
| end | ||||
| 
 | ||||
| Given(/^the import format "(.*?)"$/) do |format| | ||||
|   set_input_format format | ||||
| end | ||||
| 
 | ||||
| Given /^a grid size of (\d+) meters$/ do |meters| | ||||
|   set_grid_size meters | ||||
| end | ||||
|  | ||||
| @ -13,7 +13,7 @@ WAY_SPACING = 100 | ||||
| DEFAULT_GRID_SIZE = 100   #meters | ||||
| PROFILES_PATH = '../profiles' | ||||
| BIN_PATH = '../build' | ||||
| 
 | ||||
| DEFAULT_INPUT_FORMAT = 'osm' | ||||
| DEFAULT_ORIGIN = [1,1] | ||||
| 
 | ||||
| class Location | ||||
| @ -25,6 +25,15 @@ class Location | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| def set_input_format format | ||||
|   raise '*** Input format must be eiter "osm" or "pbf"' unless ['pbf','osm'].include? format.to_s | ||||
|   @input_format = format.to_s | ||||
| end | ||||
| 
 | ||||
| def input_format | ||||
|   @input_format || DEFAULT_INPUT_FORMAT | ||||
| end | ||||
| 
 | ||||
| def sanitized_scenario_title | ||||
|   @sanitized_scenario_title ||= @scenario_title.gsub /[^0-9A-Za-z.\-]/, '_' | ||||
| end | ||||
| @ -244,8 +253,8 @@ def write_timestamp | ||||
| end | ||||
| 
 | ||||
| def reprocess | ||||
|   use_pbf = true | ||||
|   Dir.chdir TEST_FOLDER do | ||||
|     use_pbf = (input_format=='pbf') | ||||
|     write_osm | ||||
|     write_timestamp | ||||
|     convert_osm_to_pbf if use_pbf | ||||
|  | ||||
							
								
								
									
										156
									
								
								features/testbot/protobuffer.feature
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										156
									
								
								features/testbot/protobuffer.feature
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,156 @@ | ||||
| @routing @pbf | ||||
| Feature: Importing protobuffer (.pbf) format | ||||
| # Test normally read .osm, which is faster than .pbf files, | ||||
| # since we don't need to use osmosis to first convert to .pbf | ||||
| # The scenarios in this file test the ability to import .pbf files, | ||||
| # including nodes, way, restictions, and a various special situations. | ||||
| 
 | ||||
|     Background: | ||||
|         Given the profile "testbot" | ||||
|         And the import format "pbf" | ||||
|          | ||||
|     Scenario: Testbot - Protobuffer import, nodes and ways | ||||
|         Given the node map | ||||
|             |   |   |   | d | | ||||
|             | a | b | c |   | | ||||
|             |   |   |   | e | | ||||
| 
 | ||||
|         And the ways | ||||
|             | nodes | highway | oneway | | ||||
|             | abc   | primary |        | | ||||
|             | cd    | primary | yes    | | ||||
|             | ce    | river   |        | | ||||
|             | de    | primary |        | | ||||
| 
 | ||||
|         When I route I should get | ||||
|             | from | to | route | | ||||
|             | d    | c  | de,ce | | ||||
|             | e    | d  | de    | | ||||
| 
 | ||||
| 
 | ||||
|     Scenario: Testbot - Protobuffer import, turn restiction relations | ||||
|         Given the node map | ||||
|             |   | n |   | | ||||
|             | w | j | e | | ||||
|             |   | s |   | | ||||
| 
 | ||||
|         And the ways | ||||
|             | nodes | oneway | | ||||
|             | sj    | yes    | | ||||
|             | nj    | -1     | | ||||
|             | wj    | -1     | | ||||
|             | ej    | -1     | | ||||
| 
 | ||||
|         And the relations | ||||
|             | type        | way:from | way:to | node:via | restriction  | | ||||
|             | restriction | sj       | wj     | j        | no_left_turn | | ||||
| 
 | ||||
|         When I route I should get | ||||
|             | from | to | route | | ||||
|             | s    | w  |       | | ||||
|             | s    | n  | sj,nj | | ||||
|             | s    | e  | sj,ej | | ||||
| 
 | ||||
| 
 | ||||
|     Scenario: Testbot - Protobuffer import, distances at longitude 45 | ||||
|         Given the node locations | ||||
|             | node | lat | lon | | ||||
|             | a    | 80  | 45  | | ||||
|             | b    | 0   | 45  | | ||||
| 
 | ||||
|         And the ways | ||||
|             | nodes | | ||||
|             | ab    | | ||||
| 
 | ||||
|         When I route I should get | ||||
|             | from | to | route | distance       | | ||||
|             | a    | b  | ab    | 8905559m ~0.1% | | ||||
| 
 | ||||
|     Scenario: Testbot - Protobuffer import, distances at longitude 80 | ||||
|         Given the node locations | ||||
|             | node | lat | lon | | ||||
|             | a    | 80  | 80  | | ||||
|             | b    | 0   | 80  | | ||||
| 
 | ||||
|         And the ways | ||||
|             | nodes | | ||||
|             | ab    | | ||||
| 
 | ||||
|         When I route I should get | ||||
|             | from | to | route | distance       | | ||||
|             | a    | b  | ab    | 8905559m ~0.1% | | ||||
| 
 | ||||
|     Scenario: Testbot - Protobuffer import, empty dataset | ||||
|         Given the node map | ||||
|             |  | | ||||
| 
 | ||||
|         Given the ways | ||||
|             | nodes | | ||||
| 
 | ||||
|         When I preprocess data | ||||
|         Then "osrm-extract" should return code 255 | ||||
| 
 | ||||
| 
 | ||||
|     Scenario: Testbot - Protobuffer import, streetnames with UTF characters | ||||
|         Given the node map | ||||
|             | a | b | c | d | | ||||
| 
 | ||||
|         And the ways | ||||
|             | nodes | name                   | | ||||
|             | ab    | Scandinavian København | | ||||
|             | bc    | Japanese 東京            | | ||||
|             | cd    | Cyrillic Москва        | | ||||
| 
 | ||||
|         When I route I should get | ||||
|             | from | to | route                  | | ||||
|             | a    | b  | Scandinavian København | | ||||
|             | b    | c  | Japanese 東京            | | ||||
|             | c    | d  | Cyrillic Москва        | | ||||
| 
 | ||||
|     Scenario: Testbot - Protobuffer import, bearing af 45 degree intervals | ||||
|         Given the node map | ||||
|             | b | a | h | | ||||
|             | c | x | g | | ||||
|             | d | e | f | | ||||
| 
 | ||||
|         And the ways | ||||
|             | nodes | | ||||
|             | xa    | | ||||
|             | xb    | | ||||
|             | xc    | | ||||
|             | xd    | | ||||
|             | xe    | | ||||
|             | xf    | | ||||
|             | xg    | | ||||
|             | xh    | | ||||
| 
 | ||||
|         When I route I should get | ||||
|             | from | to | route | compass | bearing | | ||||
|             | x    | a  | xa    | N       | 0       | | ||||
|             | x    | b  | xb    | NW      | 315     | | ||||
|             | x    | c  | xc    | W       | 270     | | ||||
|             | x    | d  | xd    | SW      | 225     | | ||||
|             | x    | e  | xe    | S       | 180     | | ||||
|             | x    | f  | xf    | SE      | 135     | | ||||
|             | x    | g  | xg    | E       | 90      | | ||||
|             | x    | h  | xh    | NE      | 45      | | ||||
| 
 | ||||
| 
 | ||||
|     Scenario: Testbot - Protobuffer import, rraffic signals should incur a delay | ||||
|         Given the node map | ||||
|             | a | b | c | | ||||
|             | d | e | f | | ||||
| 
 | ||||
|         And the nodes | ||||
|             | node | highway         | | ||||
|             | e    | traffic_signals | | ||||
| 
 | ||||
|         And the ways | ||||
|             | nodes | | ||||
|             | abc   | | ||||
|             | def   | | ||||
| 
 | ||||
|         When I route I should get | ||||
|             | from | to | route | time    | distance | | ||||
|             | a    | c  | abc   | 20s +-1 | 200m +-1 | | ||||
|             | d    | f  | def   | 27s +-1 | 200m +-1 | | ||||
							
								
								
									
										12
									
								
								prepare.cpp
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								prepare.cpp
									
									
									
									
									
								
							| @ -236,17 +236,17 @@ int main (int argc, char *argv[]) { | ||||
|         std::vector<ImportEdge> edgeList; | ||||
|         NodeID nodeBasedNodeNumber = readBinaryOSRMGraphFromStream(in, edgeList, bollardNodes, trafficLightNodes, &internalToExternalNodeMapping, inputRestrictions); | ||||
|         in.close(); | ||||
| 
 | ||||
|         if( edgeList.empty() ) { | ||||
|             SimpleLogger().Write(logWARNING) << "The input data is empty, exiting."; | ||||
|             return -1; | ||||
|         } | ||||
| 
 | ||||
|         SimpleLogger().Write() << | ||||
|             inputRestrictions.size() << " restrictions, " << | ||||
|             bollardNodes.size() << " bollard nodes, " << | ||||
|             trafficLightNodes.size() << " traffic lights"; | ||||
| 
 | ||||
|         if( edgeList.empty() ) { | ||||
|             SimpleLogger().Write(logWARNING) << "The input data is broken. " | ||||
|                 "It is impossible to do any turns in this graph"; | ||||
|             return -1; | ||||
|         } | ||||
| 
 | ||||
|         /***
 | ||||
|          * Building an edge-expanded graph from node-based input an turn restrictions | ||||
|          */ | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user