Making the turn function more flexible (#4789)

* set and store highway and access classification for the turn function
* expose highway turn classification and access turn classification and speed to the lua profile turn function
* expose whether connection road at turn is incoming or outgoing
* add lua tests for exposed information to turn function
* update docs about attributes in process_turn
* add turn_classification info to docs
* adding warning if uturn and intersection dont match
* handle u turns that do not turn into intersection[0]
* split OSM link generation in an accessible coordinate function
This commit is contained in:
Huyen Chau Nguyen
2018-01-24 15:39:55 -05:00
committed by GitHub
parent 13bb997525
commit 61e06fcaba
17 changed files with 719 additions and 146 deletions
+83 -24
View File
@@ -346,7 +346,13 @@ void Sol2ScriptingEnvironment::InitContext(LuaScriptingContext &context)
[](ExtractionWay &way, bool flag) { way.backward_restricted = flag; }),
"is_left_hand_driving",
sol::property([](const ExtractionWay &way) { return way.is_left_hand_driving; },
[](ExtractionWay &way, bool flag) { way.is_left_hand_driving = flag; }));
[](ExtractionWay &way, bool flag) { way.is_left_hand_driving = flag; }),
"highway_turn_classification",
sol::property([](const ExtractionWay &way) { return way.highway_turn_classification; },
[](ExtractionWay &way, int flag) { way.highway_turn_classification = flag; }),
"access_turn_classification",
sol::property([](const ExtractionWay &way) { return way.access_turn_classification; },
[](ExtractionWay &way, int flag) { way.access_turn_classification = flag; }));
auto getTypedRefBySol = [](const sol::object &obj) -> ExtractionRelation::OsmIDTyped {
if (obj.is<osmium::Way>())
@@ -670,29 +676,82 @@ void Sol2ScriptingEnvironment::InitContext(LuaScriptingContext &context)
{
case 4:
{
context.state.new_usertype<ExtractionTurn>("ExtractionTurn",
"angle",
&ExtractionTurn::angle,
"number_of_roads",
&ExtractionTurn::number_of_roads,
"is_u_turn",
&ExtractionTurn::is_u_turn,
"has_traffic_light",
&ExtractionTurn::has_traffic_light,
"weight",
&ExtractionTurn::weight,
"duration",
&ExtractionTurn::duration,
"source_restricted",
&ExtractionTurn::source_restricted,
"target_restricted",
&ExtractionTurn::target_restricted,
"is_left_hand_driving",
&ExtractionTurn::is_left_hand_driving,
"source_mode",
&ExtractionTurn::source_mode,
"target_mode",
&ExtractionTurn::target_mode);
context.state.new_usertype<ExtractionTurnLeg>(
"ExtractionTurnLeg",
"is_restricted",
&ExtractionTurnLeg::is_restricted,
"is_motorway",
&ExtractionTurnLeg::is_motorway,
"is_link",
&ExtractionTurnLeg::is_link,
"number_of_lanes",
&ExtractionTurnLeg::number_of_lanes,
"highway_turn_classification",
&ExtractionTurnLeg::highway_turn_classification,
"access_turn_classification",
&ExtractionTurnLeg::access_turn_classification,
"speed",
&ExtractionTurnLeg::speed,
"is_incoming",
&ExtractionTurnLeg::is_incoming,
"is_outgoing",
&ExtractionTurnLeg::is_outgoing);
context.state.new_usertype<ExtractionTurn>(
"ExtractionTurn",
"angle",
&ExtractionTurn::angle,
"number_of_roads",
&ExtractionTurn::number_of_roads,
"is_u_turn",
&ExtractionTurn::is_u_turn,
"has_traffic_light",
&ExtractionTurn::has_traffic_light,
"is_left_hand_driving",
&ExtractionTurn::is_left_hand_driving,
"source_restricted",
&ExtractionTurn::source_restricted,
"source_mode",
&ExtractionTurn::source_mode,
"source_is_motorway",
&ExtractionTurn::source_is_motorway,
"source_is_link",
&ExtractionTurn::source_is_link,
"source_number_of_lanes",
&ExtractionTurn::source_number_of_lanes,
"source_highway_turn_classification",
&ExtractionTurn::source_highway_turn_classification,
"source_access_turn_classification",
&ExtractionTurn::source_access_turn_classification,
"source_speed",
&ExtractionTurn::source_speed,
"target_restricted",
&ExtractionTurn::target_restricted,
"target_mode",
&ExtractionTurn::target_mode,
"target_is_motorway",
&ExtractionTurn::target_is_motorway,
"target_is_link",
&ExtractionTurn::target_is_link,
"target_number_of_lanes",
&ExtractionTurn::target_number_of_lanes,
"target_highway_turn_classification",
&ExtractionTurn::target_highway_turn_classification,
"target_access_turn_classification",
&ExtractionTurn::target_access_turn_classification,
"target_speed",
&ExtractionTurn::target_speed,
"roads_on_the_right",
&ExtractionTurn::roads_on_the_right,
"roads_on_the_left",
&ExtractionTurn::roads_on_the_left,
"weight",
&ExtractionTurn::weight,
"duration",
&ExtractionTurn::duration);
initV2Context();
break;
}