Some fixes

This commit is contained in:
Denis Koronchik 2017-10-03 17:06:39 +03:00 committed by Patrick Niklaus
parent 0dfec13c0a
commit 832cdbf566
3 changed files with 13 additions and 32 deletions

View File

@ -14,7 +14,6 @@ Feature: Profile API version 3
find_access_tag = require("lib/access").find_access_tag
limit = require("lib/maxspeed").limit
function setup()
return {
properties = {
@ -23,7 +22,8 @@ Feature: Profile API version 3
continue_straight_at_waypoint = true,
weight_name = 'test_version2',
weight_precision = 2
}
},
relation_types = Sequence { "route" }
}
end
@ -39,30 +39,15 @@ Feature: Profile API version 3
result.forward_speed = 36
result.backward_speed = 36
for _, r in ipairs(relations) do
for k, v in pairs(r) do
print('data_' .. k .. '_value_' .. v)
end
local rel_id_list = relations:get_relations(way)
for i, rel_id in ipairs(rel_id_list) do
local rel = relations:relation(rel_id)
local role = rel:get_role(way)
print('role_' .. role)
end
print ('process_way ' .. way:id() .. ' ' .. result.name)
end
function process_relation(profile, relation, result)
local t = relation:get_value_by_key("type")
if t == "route" then
for _, m in ipairs(relation:members()) do
if m:role() == "north" then
result[m]['direction'] = 'north'
print('direction_north')
end
end
print('route_relation')
end
print ('process_relation ' .. relation:id())
end
function process_turn (profile, turn)
print('process_turn', turn.angle, turn.turn_type, turn.direction_modifier, turn.has_traffic_light)
turn.weight = turn.angle == 0 and 0 or 4.2
@ -103,14 +88,11 @@ Feature: Profile API version 3
When I run "osrm-extract --profile {profile_file} {osm_file}"
Then it should exit successfully
And stdout should contain "process_relation"
And stdout should contain "route_relation"
And stdout should contain "direction_north"
And stdout should contain "data_direction_value_north"
And stdout should contain "process_node"
And stdout should contain "process_way"
And stdout should contain "process_turn"
And stdout should contain "process_segment"
And stdout should contain "role_north"
When I route I should get
| from | to | route | time |

View File

@ -404,9 +404,9 @@ function process_way(profile, way, result, relations)
local parsed_rel_list = {}
local rel_id_list = relations:get_relations(way)
for i, r in ipairs(rel_id_list) do
local rel_id = relations:relation(r)
parsed_rel_list[i] = Relations.parse_route_relation(rel_id, way)
for i, rel_id in ipairs(rel_id_list) do
local rel = relations:relation(rel_id)
parsed_rel_list[i] = Relations.parse_route_relation(rel, way)
end
-- now process relations data

View File

@ -390,7 +390,6 @@ Extractor::ParseOSMData(ScriptingEnvironment &scripting_environment,
auto relation_types = scripting_environment.GetRelations();
std::sort(relation_types.begin(), relation_types.end());
ExtractionRelationContainer relations;
std::vector<std::string> restrictions = scripting_environment.GetRestrictions();
// setup restriction parser
const RestrictionParser restriction_parser(
@ -409,6 +408,8 @@ Extractor::ParseOSMData(ScriptingEnvironment &scripting_environment,
std::vector<InputConditionalTurnRestriction> resulting_restrictions;
};
ExtractionRelationContainer relations;
const auto buffer_reader = [](osmium::io::Reader &reader) {
return tbb::filter_t<void, SharedBuffer>(
tbb::filter::serial_in_order, [&reader](tbb::flow_control &fc) {
@ -479,8 +480,6 @@ Extractor::ParseOSMData(ScriptingEnvironment &scripting_environment,
}
});
tbb::filter_t<SharedBuffer, std::shared_ptr<ExtractionRelationContainer>> buffer_relation_cache(
tbb::filter::parallel, [&](const SharedBuffer buffer) {
if (!buffer)