Fix some problems
This commit is contained in:
		
							parent
							
								
									a2b8698bca
								
							
						
					
					
						commit
						0dfec13c0a
					
				| @ -316,48 +316,6 @@ function process_node(profile, node, result, relations) | |||||||
|   end |   end | ||||||
| end | end | ||||||
| 
 | 
 | ||||||
| function parse_relation(relation, obj) |  | ||||||
|   local t = relation:get_value_by_key("type") |  | ||||||
|   local role = relation:get_role(obj) |  | ||||||
|   local result = {} |  | ||||||
| 
 |  | ||||||
|   function add_extra_data(m) |  | ||||||
|     local name = relation:get_value_by_key("name") |  | ||||||
|     if name then |  | ||||||
|       result['route_name'] = name |  | ||||||
|     end |  | ||||||
| 
 |  | ||||||
|     local ref = relation:get_value_by_key("ref") |  | ||||||
|     if ref then |  | ||||||
|       result['route_ref'] = ref |  | ||||||
|     end |  | ||||||
|   end |  | ||||||
| 
 |  | ||||||
|   if t == 'route' then |  | ||||||
|     local route = relation:get_value_by_key("route") |  | ||||||
|     if route == 'road' then |  | ||||||
|       -- process case, where directions set as role |  | ||||||
|       if role == 'north' or role == 'south' or role == 'west' or role == 'east' then |  | ||||||
|         result['route_direction'] = role |  | ||||||
|         add_extra_data(m) |  | ||||||
|       end |  | ||||||
|     end |  | ||||||
| 
 |  | ||||||
|     local direction = relation:get_value_by_key('direction') |  | ||||||
|     if direction then |  | ||||||
|       direction = string.lower(direction) |  | ||||||
|       if direction == 'north' or direction == 'south' or direction == 'west' or direction == 'east' then |  | ||||||
|         if role == 'forward' then |  | ||||||
|           result['route_direction'] = direction |  | ||||||
|           add_extra_data(m) |  | ||||||
|         end |  | ||||||
|       end |  | ||||||
|     end |  | ||||||
|   end |  | ||||||
| 
 |  | ||||||
|   return result |  | ||||||
| end |  | ||||||
| 
 |  | ||||||
| function process_way(profile, way, result, relations) | function process_way(profile, way, result, relations) | ||||||
|   -- the intial filtering of ways based on presence of tags |   -- the intial filtering of ways based on presence of tags | ||||||
|   -- affects processing times significantly, because all ways |   -- affects processing times significantly, because all ways | ||||||
| @ -448,7 +406,7 @@ function process_way(profile, way, result, relations) | |||||||
|   local rel_id_list = relations:get_relations(way) |   local rel_id_list = relations:get_relations(way) | ||||||
|   for i, r in ipairs(rel_id_list) do |   for i, r in ipairs(rel_id_list) do | ||||||
|     local rel_id = relations:relation(r) |     local rel_id = relations:relation(r) | ||||||
|     parsed_rel_list[i] =  parse_relation(rel_id, way) |     parsed_rel_list[i] = Relations.parse_route_relation(rel_id, way) | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   -- now process relations data |   -- now process relations data | ||||||
|  | |||||||
| @ -91,4 +91,46 @@ function Relations.match_to_ref(relations, ref) | |||||||
|   return result |   return result | ||||||
| end | end | ||||||
| 
 | 
 | ||||||
|  | function Relations.parse_route_relation(relation, obj) | ||||||
|  |   local t = relation:get_value_by_key("type") | ||||||
|  |   local role = relation:get_role(obj) | ||||||
|  |   local result = {} | ||||||
|  | 
 | ||||||
|  |   function add_extra_data(m) | ||||||
|  |     local name = relation:get_value_by_key("name") | ||||||
|  |     if name then | ||||||
|  |       result['route_name'] = name | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     local ref = relation:get_value_by_key("ref") | ||||||
|  |     if ref then | ||||||
|  |       result['route_ref'] = ref | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   if t == 'route' then | ||||||
|  |     local route = relation:get_value_by_key("route") | ||||||
|  |     if route == 'road' then | ||||||
|  |       -- process case, where directions set as role | ||||||
|  |       if role == 'north' or role == 'south' or role == 'west' or role == 'east' then | ||||||
|  |         result['route_direction'] = role | ||||||
|  |         add_extra_data(m) | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     local direction = relation:get_value_by_key('direction') | ||||||
|  |     if direction then | ||||||
|  |       direction = string.lower(direction) | ||||||
|  |       if direction == 'north' or direction == 'south' or direction == 'west' or direction == 'east' then | ||||||
|  |         if role == 'forward' then | ||||||
|  |           result['route_direction'] = direction | ||||||
|  |           add_extra_data(m) | ||||||
|  |         end | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   return result | ||||||
|  | end | ||||||
|  | 
 | ||||||
| return Relations | return Relations | ||||||
| @ -29,6 +29,7 @@ class MockScriptingEnvironment : public extractor::ScriptingEnvironment | |||||||
|     std::vector<std::string> GetNameSuffixList() override final { return {}; } |     std::vector<std::string> GetNameSuffixList() override final { return {}; } | ||||||
|     std::vector<std::vector<std::string>> GetExcludableClasses() override final { return {}; }; |     std::vector<std::vector<std::string>> GetExcludableClasses() override final { return {}; }; | ||||||
|     std::vector<std::string> GetClassNames() override { return {}; }; |     std::vector<std::string> GetClassNames() override { return {}; }; | ||||||
|  |     std::vector<std::string> GetRelations() override { return {}; }; | ||||||
| 
 | 
 | ||||||
|     std::vector<std::string> GetRestrictions() override final { return {}; } |     std::vector<std::string> GetRestrictions() override final { return {}; } | ||||||
|     void ProcessTurn(extractor::ExtractionTurn &) override final {} |     void ProcessTurn(extractor::ExtractionTurn &) override final {} | ||||||
| @ -40,7 +41,6 @@ class MockScriptingEnvironment : public extractor::ScriptingEnvironment | |||||||
|         const extractor::ExtractionRelationContainer &, |         const extractor::ExtractionRelationContainer &, | ||||||
|         std::vector<std::pair<const osmium::Node &, extractor::ExtractionNode>> &, |         std::vector<std::pair<const osmium::Node &, extractor::ExtractionNode>> &, | ||||||
|         std::vector<std::pair<const osmium::Way &, extractor::ExtractionWay>> &, |         std::vector<std::pair<const osmium::Way &, extractor::ExtractionWay>> &, | ||||||
|         std::vector<std::pair<const osmium::Relation &, extractor::ExtractionRelation>> &, |  | ||||||
|         std::vector<extractor::InputConditionalTurnRestriction> &) override final |         std::vector<extractor::InputConditionalTurnRestriction> &) override final | ||||||
|     { |     { | ||||||
|     } |     } | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user