update lua interface to speed and mode
This commit is contained in:
+11
-11
@@ -45,7 +45,7 @@ struct ExtractionWay
|
||||
nameID = INVALID_NAMEID;
|
||||
path.clear();
|
||||
keyVals.Clear();
|
||||
speed = -1;
|
||||
forward_speed = -1;
|
||||
backward_speed = -1;
|
||||
duration = -1;
|
||||
type = -1;
|
||||
@@ -53,7 +53,7 @@ struct ExtractionWay
|
||||
roundabout = false;
|
||||
isAccessRestricted = false;
|
||||
ignoreInGrid = false;
|
||||
travel_mode = TRAVEL_MODE_DEFAULT;
|
||||
forward_travel_mode = TRAVEL_MODE_DEFAULT;
|
||||
backward_travel_mode = TRAVEL_MODE_DEFAULT;
|
||||
}
|
||||
|
||||
@@ -67,28 +67,28 @@ struct ExtractionWay
|
||||
{
|
||||
if (Directions::oneway == m )
|
||||
{
|
||||
travel_mode = TRAVEL_MODE_DEFAULT;
|
||||
forward_travel_mode = TRAVEL_MODE_DEFAULT;
|
||||
backward_travel_mode = TRAVEL_MODE_INACCESSIBLE;
|
||||
}
|
||||
else if (Directions::opposite == m )
|
||||
{
|
||||
travel_mode = TRAVEL_MODE_INACCESSIBLE;
|
||||
forward_travel_mode = TRAVEL_MODE_INACCESSIBLE;
|
||||
backward_travel_mode = TRAVEL_MODE_DEFAULT;
|
||||
}
|
||||
else if (Directions::bidirectional == m )
|
||||
{
|
||||
travel_mode = TRAVEL_MODE_DEFAULT;
|
||||
forward_travel_mode = TRAVEL_MODE_DEFAULT;
|
||||
backward_travel_mode = TRAVEL_MODE_DEFAULT;
|
||||
}
|
||||
}
|
||||
|
||||
inline const Directions get_direction()
|
||||
{
|
||||
if (TRAVEL_MODE_INACCESSIBLE != travel_mode && TRAVEL_MODE_INACCESSIBLE != backward_travel_mode )
|
||||
if (TRAVEL_MODE_INACCESSIBLE != forward_travel_mode && TRAVEL_MODE_INACCESSIBLE != backward_travel_mode )
|
||||
{
|
||||
return Directions::bidirectional;
|
||||
}
|
||||
else if (TRAVEL_MODE_INACCESSIBLE != travel_mode )
|
||||
else if (TRAVEL_MODE_INACCESSIBLE != forward_travel_mode )
|
||||
{
|
||||
return Directions::oneway;
|
||||
}
|
||||
@@ -102,14 +102,14 @@ struct ExtractionWay
|
||||
}
|
||||
}
|
||||
|
||||
inline void set_mode(const TravelMode m) { travel_mode = m; }
|
||||
inline const TravelMode get_mode() { return travel_mode; }
|
||||
inline void set_forward_mode(const TravelMode m) { forward_travel_mode = m; }
|
||||
inline const TravelMode get_forward_mode() { return forward_travel_mode; }
|
||||
inline void set_backward_mode(const TravelMode m) { backward_travel_mode = m; }
|
||||
inline const TravelMode get_backward_mode() { return backward_travel_mode; }
|
||||
|
||||
unsigned id;
|
||||
unsigned nameID;
|
||||
double speed;
|
||||
double forward_speed;
|
||||
double backward_speed;
|
||||
double duration;
|
||||
std::string name;
|
||||
@@ -120,7 +120,7 @@ struct ExtractionWay
|
||||
bool ignoreInGrid;
|
||||
std::vector<NodeID> path;
|
||||
HashTable<std::string, std::string> keyVals;
|
||||
TravelMode travel_mode : 4;
|
||||
TravelMode forward_travel_mode : 4;
|
||||
TravelMode backward_travel_mode : 4;
|
||||
};
|
||||
|
||||
|
||||
@@ -63,7 +63,7 @@ bool ExtractorCallbacks::ProcessRestriction(const InputRestrictionContainer &res
|
||||
/** warning: caller needs to take care of synchronization! */
|
||||
void ExtractorCallbacks::ProcessWay(ExtractionWay &parsed_way)
|
||||
{
|
||||
if ((0 >= parsed_way.speed) && (0 >= parsed_way.duration))
|
||||
if ((0 >= parsed_way.forward_speed) && (0 >= parsed_way.duration))
|
||||
{ // Only true if the way is specified by the speed profile
|
||||
return;
|
||||
}
|
||||
@@ -84,10 +84,10 @@ void ExtractorCallbacks::ProcessWay(ExtractionWay &parsed_way)
|
||||
{
|
||||
// TODO: iterate all way segments and set duration corresponding to the length of each
|
||||
// segment
|
||||
parsed_way.speed = parsed_way.duration / (parsed_way.path.size() - 1);
|
||||
parsed_way.forward_speed = parsed_way.duration / (parsed_way.path.size() - 1);
|
||||
}
|
||||
|
||||
if (std::numeric_limits<double>::epsilon() >= std::abs(-1. - parsed_way.speed))
|
||||
if (std::numeric_limits<double>::epsilon() >= std::abs(-1. - parsed_way.forward_speed))
|
||||
{
|
||||
SimpleLogger().Write(logDEBUG) << "found way with bogus speed, id: " << parsed_way.id;
|
||||
return;
|
||||
@@ -106,20 +106,20 @@ void ExtractorCallbacks::ProcessWay(ExtractionWay &parsed_way)
|
||||
parsed_way.nameID = string_map_iterator->second;
|
||||
}
|
||||
|
||||
if (TRAVEL_MODE_INACCESSIBLE == parsed_way.travel_mode)
|
||||
if (TRAVEL_MODE_INACCESSIBLE == parsed_way.forward_travel_mode)
|
||||
{
|
||||
std::reverse(parsed_way.path.begin(), parsed_way.path.end());
|
||||
parsed_way.travel_mode = parsed_way.backward_travel_mode;
|
||||
parsed_way.forward_travel_mode = parsed_way.backward_travel_mode;
|
||||
parsed_way.backward_travel_mode = TRAVEL_MODE_INACCESSIBLE;
|
||||
}
|
||||
|
||||
const bool split_edge =
|
||||
(parsed_way.speed>0) && (TRAVEL_MODE_INACCESSIBLE != parsed_way.travel_mode) &&
|
||||
(parsed_way.forward_speed>0) && (TRAVEL_MODE_INACCESSIBLE != parsed_way.forward_travel_mode) &&
|
||||
(parsed_way.backward_speed>0) && (TRAVEL_MODE_INACCESSIBLE != parsed_way.backward_travel_mode) &&
|
||||
((parsed_way.speed != parsed_way.backward_speed) ||
|
||||
(parsed_way.travel_mode != parsed_way.backward_travel_mode));
|
||||
((parsed_way.forward_speed != parsed_way.backward_speed) ||
|
||||
(parsed_way.forward_travel_mode != parsed_way.backward_travel_mode));
|
||||
|
||||
BOOST_ASSERT(parsed_way.travel_mode>0);
|
||||
BOOST_ASSERT(parsed_way.forward_travel_mode>0);
|
||||
for (unsigned n = 0; n < (parsed_way.path.size() - 1); ++n)
|
||||
{
|
||||
external_memory.all_edges_list.push_back(InternalExtractorEdge(
|
||||
@@ -128,13 +128,13 @@ void ExtractorCallbacks::ProcessWay(ExtractionWay &parsed_way)
|
||||
parsed_way.type,
|
||||
((split_edge || TRAVEL_MODE_INACCESSIBLE == parsed_way.backward_travel_mode) ? ExtractionWay::oneway
|
||||
: ExtractionWay::bidirectional),
|
||||
parsed_way.speed,
|
||||
parsed_way.forward_speed,
|
||||
parsed_way.nameID,
|
||||
parsed_way.roundabout,
|
||||
parsed_way.ignoreInGrid,
|
||||
(0 < parsed_way.duration),
|
||||
parsed_way.isAccessRestricted,
|
||||
parsed_way.travel_mode,
|
||||
parsed_way.forward_travel_mode,
|
||||
split_edge));
|
||||
external_memory.used_node_id_list.push_back(parsed_way.path[n]);
|
||||
}
|
||||
|
||||
@@ -76,7 +76,7 @@ void ScriptingEnvironment::initLuaState(lua_State* lua_state)
|
||||
// .def(luabind::constructor<>())
|
||||
.def_readonly("id", &ExtractionWay::id)
|
||||
.def_readwrite("name", &ExtractionWay::name)
|
||||
.def_readwrite("speed", &ExtractionWay::speed)
|
||||
.def_readwrite("forward_speed", &ExtractionWay::forward_speed)
|
||||
.def_readwrite("backward_speed", &ExtractionWay::backward_speed)
|
||||
.def_readwrite("duration", &ExtractionWay::duration)
|
||||
.def_readwrite("type", &ExtractionWay::type)
|
||||
@@ -86,7 +86,7 @@ void ScriptingEnvironment::initLuaState(lua_State* lua_state)
|
||||
.def_readwrite("ignore_in_grid", &ExtractionWay::ignoreInGrid)
|
||||
.def_readwrite("tags", &ExtractionWay::keyVals)
|
||||
.property("direction", &ExtractionWay::get_direction, &ExtractionWay::set_direction)
|
||||
.property("mode", &ExtractionWay::get_mode, &ExtractionWay::set_mode)
|
||||
.property("forward_mode", &ExtractionWay::get_forward_mode, &ExtractionWay::set_forward_mode)
|
||||
.property("backward_mode", &ExtractionWay::get_backward_mode, &ExtractionWay::set_backward_mode)
|
||||
.enum_("constants")[
|
||||
luabind::value("notSure", 0),
|
||||
|
||||
Reference in New Issue
Block a user