update lua interface to speed and mode
This commit is contained in:
parent
6cdc590db5
commit
30362cfc0c
@ -27,7 +27,7 @@ struct EdgeBasedNode
|
|||||||
packed_geometry_id(SPECIAL_EDGEID),
|
packed_geometry_id(SPECIAL_EDGEID),
|
||||||
fwd_segment_position( std::numeric_limits<unsigned short>::max() ),
|
fwd_segment_position( std::numeric_limits<unsigned short>::max() ),
|
||||||
is_in_tiny_cc(false),
|
is_in_tiny_cc(false),
|
||||||
travel_mode(TRAVEL_MODE_INACCESSIBLE),
|
forward_travel_mode(TRAVEL_MODE_INACCESSIBLE),
|
||||||
backward_travel_mode(TRAVEL_MODE_INACCESSIBLE)
|
backward_travel_mode(TRAVEL_MODE_INACCESSIBLE)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
@ -44,7 +44,7 @@ struct EdgeBasedNode
|
|||||||
unsigned packed_geometry_id,
|
unsigned packed_geometry_id,
|
||||||
unsigned short fwd_segment_position,
|
unsigned short fwd_segment_position,
|
||||||
bool belongs_to_tiny_component,
|
bool belongs_to_tiny_component,
|
||||||
TravelMode travel_mode ,
|
TravelMode forward_travel_mode,
|
||||||
TravelMode backward_travel_mode
|
TravelMode backward_travel_mode
|
||||||
) :
|
) :
|
||||||
forward_edge_based_node_id(forward_edge_based_node_id),
|
forward_edge_based_node_id(forward_edge_based_node_id),
|
||||||
@ -59,7 +59,7 @@ struct EdgeBasedNode
|
|||||||
packed_geometry_id(packed_geometry_id),
|
packed_geometry_id(packed_geometry_id),
|
||||||
fwd_segment_position(fwd_segment_position),
|
fwd_segment_position(fwd_segment_position),
|
||||||
is_in_tiny_cc(belongs_to_tiny_component),
|
is_in_tiny_cc(belongs_to_tiny_component),
|
||||||
travel_mode(travel_mode),
|
forward_travel_mode(forward_travel_mode),
|
||||||
backward_travel_mode(backward_travel_mode)
|
backward_travel_mode(backward_travel_mode)
|
||||||
{
|
{
|
||||||
BOOST_ASSERT((forward_edge_based_node_id != SPECIAL_NODEID) ||
|
BOOST_ASSERT((forward_edge_based_node_id != SPECIAL_NODEID) ||
|
||||||
@ -92,7 +92,7 @@ struct EdgeBasedNode
|
|||||||
unsigned packed_geometry_id; // if set, then the edge represents a packed geometry
|
unsigned packed_geometry_id; // if set, then the edge represents a packed geometry
|
||||||
unsigned short fwd_segment_position; // segment id in a compressed geometry
|
unsigned short fwd_segment_position; // segment id in a compressed geometry
|
||||||
bool is_in_tiny_cc;
|
bool is_in_tiny_cc;
|
||||||
TravelMode travel_mode : 4;
|
TravelMode forward_travel_mode : 4;
|
||||||
TravelMode backward_travel_mode : 4;
|
TravelMode backward_travel_mode : 4;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@ struct PhantomNode
|
|||||||
int forward_weight, int reverse_weight, int forward_offset, int reverse_offset,
|
int forward_weight, int reverse_weight, int forward_offset, int reverse_offset,
|
||||||
unsigned packed_geometry_id, FixedPointCoordinate &location,
|
unsigned packed_geometry_id, FixedPointCoordinate &location,
|
||||||
unsigned short fwd_segment_position,
|
unsigned short fwd_segment_position,
|
||||||
TravelMode travel_mode, TravelMode backward_travel_mode) :
|
TravelMode forward_travel_mode, TravelMode backward_travel_mode) :
|
||||||
forward_node_id(forward_node_id),
|
forward_node_id(forward_node_id),
|
||||||
reverse_node_id(reverse_node_id),
|
reverse_node_id(reverse_node_id),
|
||||||
name_id(name_id),
|
name_id(name_id),
|
||||||
@ -52,7 +52,7 @@ struct PhantomNode
|
|||||||
packed_geometry_id(packed_geometry_id),
|
packed_geometry_id(packed_geometry_id),
|
||||||
location(location),
|
location(location),
|
||||||
fwd_segment_position(fwd_segment_position),
|
fwd_segment_position(fwd_segment_position),
|
||||||
travel_mode(travel_mode),
|
forward_travel_mode(forward_travel_mode),
|
||||||
backward_travel_mode(backward_travel_mode)
|
backward_travel_mode(backward_travel_mode)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
@ -66,7 +66,7 @@ struct PhantomNode
|
|||||||
reverse_offset(0),
|
reverse_offset(0),
|
||||||
packed_geometry_id(SPECIAL_EDGEID),
|
packed_geometry_id(SPECIAL_EDGEID),
|
||||||
fwd_segment_position(0),
|
fwd_segment_position(0),
|
||||||
travel_mode(TRAVEL_MODE_INACCESSIBLE),
|
forward_travel_mode(TRAVEL_MODE_INACCESSIBLE),
|
||||||
backward_travel_mode(TRAVEL_MODE_INACCESSIBLE)
|
backward_travel_mode(TRAVEL_MODE_INACCESSIBLE)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
@ -80,7 +80,7 @@ struct PhantomNode
|
|||||||
unsigned packed_geometry_id;
|
unsigned packed_geometry_id;
|
||||||
FixedPointCoordinate location;
|
FixedPointCoordinate location;
|
||||||
unsigned short fwd_segment_position;
|
unsigned short fwd_segment_position;
|
||||||
TravelMode travel_mode : 4;
|
TravelMode forward_travel_mode : 4;
|
||||||
TravelMode backward_travel_mode : 4;
|
TravelMode backward_travel_mode : 4;
|
||||||
|
|
||||||
int GetForwardWeightPlusOffset() const
|
int GetForwardWeightPlusOffset() const
|
||||||
|
@ -802,7 +802,7 @@ class StaticRTree
|
|||||||
current_segment.packed_geometry_id,
|
current_segment.packed_geometry_id,
|
||||||
foot_point_coordinate_on_segment,
|
foot_point_coordinate_on_segment,
|
||||||
current_segment.fwd_segment_position,
|
current_segment.fwd_segment_position,
|
||||||
current_segment.travel_mode,
|
current_segment.forward_travel_mode,
|
||||||
current_segment.backward_travel_mode);
|
current_segment.backward_travel_mode);
|
||||||
|
|
||||||
// Hack to fix rounding errors and wandering via nodes.
|
// Hack to fix rounding errors and wandering via nodes.
|
||||||
@ -1080,7 +1080,7 @@ class StaticRTree
|
|||||||
current_edge.packed_geometry_id,
|
current_edge.packed_geometry_id,
|
||||||
nearest,
|
nearest,
|
||||||
current_edge.fwd_segment_position,
|
current_edge.fwd_segment_position,
|
||||||
current_edge.travel_mode,
|
current_edge.forward_travel_mode,
|
||||||
current_edge.backward_travel_mode};
|
current_edge.backward_travel_mode};
|
||||||
nearest_edge = current_edge;
|
nearest_edge = current_edge;
|
||||||
}
|
}
|
||||||
|
@ -46,7 +46,7 @@ void DescriptionFactory::SetStartSegment(const PhantomNode &source, const bool t
|
|||||||
const EdgeWeight segment_duration =
|
const EdgeWeight segment_duration =
|
||||||
(traversed_in_reverse ? source.reverse_weight : source.forward_weight);
|
(traversed_in_reverse ? source.reverse_weight : source.forward_weight);
|
||||||
const TravelMode travel_mode =
|
const TravelMode travel_mode =
|
||||||
(traversed_in_reverse ? source.backward_travel_mode : source.travel_mode);
|
(traversed_in_reverse ? source.backward_travel_mode : source.forward_travel_mode);
|
||||||
AppendSegment(source.location,
|
AppendSegment(source.location,
|
||||||
PathData(0, source.name_id, TurnInstruction::HeadOn, segment_duration, travel_mode));
|
PathData(0, source.name_id, TurnInstruction::HeadOn, segment_duration, travel_mode));
|
||||||
BOOST_ASSERT(path_description.back().duration == segment_duration);
|
BOOST_ASSERT(path_description.back().duration == segment_duration);
|
||||||
@ -60,7 +60,7 @@ void DescriptionFactory::SetEndSegment(const PhantomNode &target,
|
|||||||
const EdgeWeight segment_duration =
|
const EdgeWeight segment_duration =
|
||||||
(traversed_in_reverse ? target.reverse_weight : target.forward_weight);
|
(traversed_in_reverse ? target.reverse_weight : target.forward_weight);
|
||||||
const TravelMode travel_mode =
|
const TravelMode travel_mode =
|
||||||
(traversed_in_reverse ? target.backward_travel_mode : target.travel_mode);
|
(traversed_in_reverse ? target.backward_travel_mode : target.forward_travel_mode);
|
||||||
path_description.emplace_back(target.location,
|
path_description.emplace_back(target.location,
|
||||||
target.name_id,
|
target.name_id,
|
||||||
segment_duration,
|
segment_duration,
|
||||||
|
@ -45,7 +45,7 @@ struct ExtractionWay
|
|||||||
nameID = INVALID_NAMEID;
|
nameID = INVALID_NAMEID;
|
||||||
path.clear();
|
path.clear();
|
||||||
keyVals.Clear();
|
keyVals.Clear();
|
||||||
speed = -1;
|
forward_speed = -1;
|
||||||
backward_speed = -1;
|
backward_speed = -1;
|
||||||
duration = -1;
|
duration = -1;
|
||||||
type = -1;
|
type = -1;
|
||||||
@ -53,7 +53,7 @@ struct ExtractionWay
|
|||||||
roundabout = false;
|
roundabout = false;
|
||||||
isAccessRestricted = false;
|
isAccessRestricted = false;
|
||||||
ignoreInGrid = false;
|
ignoreInGrid = false;
|
||||||
travel_mode = TRAVEL_MODE_DEFAULT;
|
forward_travel_mode = TRAVEL_MODE_DEFAULT;
|
||||||
backward_travel_mode = TRAVEL_MODE_DEFAULT;
|
backward_travel_mode = TRAVEL_MODE_DEFAULT;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -67,28 +67,28 @@ struct ExtractionWay
|
|||||||
{
|
{
|
||||||
if (Directions::oneway == m )
|
if (Directions::oneway == m )
|
||||||
{
|
{
|
||||||
travel_mode = TRAVEL_MODE_DEFAULT;
|
forward_travel_mode = TRAVEL_MODE_DEFAULT;
|
||||||
backward_travel_mode = TRAVEL_MODE_INACCESSIBLE;
|
backward_travel_mode = TRAVEL_MODE_INACCESSIBLE;
|
||||||
}
|
}
|
||||||
else if (Directions::opposite == m )
|
else if (Directions::opposite == m )
|
||||||
{
|
{
|
||||||
travel_mode = TRAVEL_MODE_INACCESSIBLE;
|
forward_travel_mode = TRAVEL_MODE_INACCESSIBLE;
|
||||||
backward_travel_mode = TRAVEL_MODE_DEFAULT;
|
backward_travel_mode = TRAVEL_MODE_DEFAULT;
|
||||||
}
|
}
|
||||||
else if (Directions::bidirectional == m )
|
else if (Directions::bidirectional == m )
|
||||||
{
|
{
|
||||||
travel_mode = TRAVEL_MODE_DEFAULT;
|
forward_travel_mode = TRAVEL_MODE_DEFAULT;
|
||||||
backward_travel_mode = TRAVEL_MODE_DEFAULT;
|
backward_travel_mode = TRAVEL_MODE_DEFAULT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
inline const Directions get_direction()
|
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;
|
return Directions::bidirectional;
|
||||||
}
|
}
|
||||||
else if (TRAVEL_MODE_INACCESSIBLE != travel_mode )
|
else if (TRAVEL_MODE_INACCESSIBLE != forward_travel_mode )
|
||||||
{
|
{
|
||||||
return Directions::oneway;
|
return Directions::oneway;
|
||||||
}
|
}
|
||||||
@ -102,14 +102,14 @@ struct ExtractionWay
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void set_mode(const TravelMode m) { travel_mode = m; }
|
inline void set_forward_mode(const TravelMode m) { forward_travel_mode = m; }
|
||||||
inline const TravelMode get_mode() { return travel_mode; }
|
inline const TravelMode get_forward_mode() { return forward_travel_mode; }
|
||||||
inline void set_backward_mode(const TravelMode m) { backward_travel_mode = m; }
|
inline void set_backward_mode(const TravelMode m) { backward_travel_mode = m; }
|
||||||
inline const TravelMode get_backward_mode() { return backward_travel_mode; }
|
inline const TravelMode get_backward_mode() { return backward_travel_mode; }
|
||||||
|
|
||||||
unsigned id;
|
unsigned id;
|
||||||
unsigned nameID;
|
unsigned nameID;
|
||||||
double speed;
|
double forward_speed;
|
||||||
double backward_speed;
|
double backward_speed;
|
||||||
double duration;
|
double duration;
|
||||||
std::string name;
|
std::string name;
|
||||||
@ -120,7 +120,7 @@ struct ExtractionWay
|
|||||||
bool ignoreInGrid;
|
bool ignoreInGrid;
|
||||||
std::vector<NodeID> path;
|
std::vector<NodeID> path;
|
||||||
HashTable<std::string, std::string> keyVals;
|
HashTable<std::string, std::string> keyVals;
|
||||||
TravelMode travel_mode : 4;
|
TravelMode forward_travel_mode : 4;
|
||||||
TravelMode backward_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! */
|
/** warning: caller needs to take care of synchronization! */
|
||||||
void ExtractorCallbacks::ProcessWay(ExtractionWay &parsed_way)
|
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
|
{ // Only true if the way is specified by the speed profile
|
||||||
return;
|
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
|
// TODO: iterate all way segments and set duration corresponding to the length of each
|
||||||
// segment
|
// 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;
|
SimpleLogger().Write(logDEBUG) << "found way with bogus speed, id: " << parsed_way.id;
|
||||||
return;
|
return;
|
||||||
@ -106,20 +106,20 @@ void ExtractorCallbacks::ProcessWay(ExtractionWay &parsed_way)
|
|||||||
parsed_way.nameID = string_map_iterator->second;
|
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());
|
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;
|
parsed_way.backward_travel_mode = TRAVEL_MODE_INACCESSIBLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
const bool split_edge =
|
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.backward_speed>0) && (TRAVEL_MODE_INACCESSIBLE != parsed_way.backward_travel_mode) &&
|
||||||
((parsed_way.speed != parsed_way.backward_speed) ||
|
((parsed_way.forward_speed != parsed_way.backward_speed) ||
|
||||||
(parsed_way.travel_mode != parsed_way.backward_travel_mode));
|
(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)
|
for (unsigned n = 0; n < (parsed_way.path.size() - 1); ++n)
|
||||||
{
|
{
|
||||||
external_memory.all_edges_list.push_back(InternalExtractorEdge(
|
external_memory.all_edges_list.push_back(InternalExtractorEdge(
|
||||||
@ -128,13 +128,13 @@ void ExtractorCallbacks::ProcessWay(ExtractionWay &parsed_way)
|
|||||||
parsed_way.type,
|
parsed_way.type,
|
||||||
((split_edge || TRAVEL_MODE_INACCESSIBLE == parsed_way.backward_travel_mode) ? ExtractionWay::oneway
|
((split_edge || TRAVEL_MODE_INACCESSIBLE == parsed_way.backward_travel_mode) ? ExtractionWay::oneway
|
||||||
: ExtractionWay::bidirectional),
|
: ExtractionWay::bidirectional),
|
||||||
parsed_way.speed,
|
parsed_way.forward_speed,
|
||||||
parsed_way.nameID,
|
parsed_way.nameID,
|
||||||
parsed_way.roundabout,
|
parsed_way.roundabout,
|
||||||
parsed_way.ignoreInGrid,
|
parsed_way.ignoreInGrid,
|
||||||
(0 < parsed_way.duration),
|
(0 < parsed_way.duration),
|
||||||
parsed_way.isAccessRestricted,
|
parsed_way.isAccessRestricted,
|
||||||
parsed_way.travel_mode,
|
parsed_way.forward_travel_mode,
|
||||||
split_edge));
|
split_edge));
|
||||||
external_memory.used_node_id_list.push_back(parsed_way.path[n]);
|
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(luabind::constructor<>())
|
||||||
.def_readonly("id", &ExtractionWay::id)
|
.def_readonly("id", &ExtractionWay::id)
|
||||||
.def_readwrite("name", &ExtractionWay::name)
|
.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("backward_speed", &ExtractionWay::backward_speed)
|
||||||
.def_readwrite("duration", &ExtractionWay::duration)
|
.def_readwrite("duration", &ExtractionWay::duration)
|
||||||
.def_readwrite("type", &ExtractionWay::type)
|
.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("ignore_in_grid", &ExtractionWay::ignoreInGrid)
|
||||||
.def_readwrite("tags", &ExtractionWay::keyVals)
|
.def_readwrite("tags", &ExtractionWay::keyVals)
|
||||||
.property("direction", &ExtractionWay::get_direction, &ExtractionWay::set_direction)
|
.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)
|
.property("backward_mode", &ExtractionWay::get_backward_mode, &ExtractionWay::set_backward_mode)
|
||||||
.enum_("constants")[
|
.enum_("constants")[
|
||||||
luabind::value("notSure", 0),
|
luabind::value("notSure", 0),
|
||||||
|
@ -306,7 +306,7 @@ template <class DataFacadeT> class BasicRoutingInterface
|
|||||||
phantom_node_pair.target_phantom.name_id,
|
phantom_node_pair.target_phantom.name_id,
|
||||||
TurnInstruction::NoTurn,
|
TurnInstruction::NoTurn,
|
||||||
0,
|
0,
|
||||||
phantom_node_pair.target_phantom.travel_mode});
|
phantom_node_pair.target_phantom.forward_travel_mode});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -223,42 +223,42 @@ function way_function (way)
|
|||||||
-- speed
|
-- speed
|
||||||
if route_speeds[route] then
|
if route_speeds[route] then
|
||||||
-- ferries (doesn't cover routes tagged using relations)
|
-- ferries (doesn't cover routes tagged using relations)
|
||||||
way.mode = mode_ferry
|
way.forward_mode = mode_ferry
|
||||||
way.backward_mode = mode_ferry
|
way.backward_mode = mode_ferry
|
||||||
way.ignore_in_grid = true
|
way.ignore_in_grid = true
|
||||||
if durationIsValid(duration) then
|
if durationIsValid(duration) then
|
||||||
way.duration = math.max( 1, parseDuration(duration) )
|
way.duration = math.max( 1, parseDuration(duration) )
|
||||||
else
|
else
|
||||||
way.speed = route_speeds[route]
|
way.forward_speed = route_speeds[route]
|
||||||
way.backward_speed = route_speeds[route]
|
way.backward_speed = route_speeds[route]
|
||||||
end
|
end
|
||||||
elseif railway and platform_speeds[railway] then
|
elseif railway and platform_speeds[railway] then
|
||||||
-- railway platforms (old tagging scheme)
|
-- railway platforms (old tagging scheme)
|
||||||
way.speed = platform_speeds[railway]
|
way.forward_speed = platform_speeds[railway]
|
||||||
way.backward_speed = platform_speeds[railway]
|
way.backward_speed = platform_speeds[railway]
|
||||||
elseif platform_speeds[public_transport] then
|
elseif platform_speeds[public_transport] then
|
||||||
-- public_transport platforms (new tagging platform)
|
-- public_transport platforms (new tagging platform)
|
||||||
way.speed = platform_speeds[public_transport]
|
way.forward_speed = platform_speeds[public_transport]
|
||||||
way.backward_speed = platform_speeds[public_transport]
|
way.backward_speed = platform_speeds[public_transport]
|
||||||
elseif railway and railway_speeds[railway] then
|
elseif railway and railway_speeds[railway] then
|
||||||
way.mode = mode_train
|
way.forward_mode = mode_train
|
||||||
way.backward_mode = mode_train
|
way.backward_mode = mode_train
|
||||||
-- railways
|
-- railways
|
||||||
if access and access_tag_whitelist[access] then
|
if access and access_tag_whitelist[access] then
|
||||||
way.speed = railway_speeds[railway]
|
way.forward_speed = railway_speeds[railway]
|
||||||
way.backward_speed = railway_speeds[railway]
|
way.backward_speed = railway_speeds[railway]
|
||||||
end
|
end
|
||||||
elseif amenity and amenity_speeds[amenity] then
|
elseif amenity and amenity_speeds[amenity] then
|
||||||
-- parking areas
|
-- parking areas
|
||||||
way.speed = amenity_speeds[amenity]
|
way.forward_speed = amenity_speeds[amenity]
|
||||||
way.backward_speed = amenity_speeds[amenity]
|
way.backward_speed = amenity_speeds[amenity]
|
||||||
elseif bicycle_speeds[highway] then
|
elseif bicycle_speeds[highway] then
|
||||||
-- regular ways
|
-- regular ways
|
||||||
way.speed = bicycle_speeds[highway]
|
way.forward_speed = bicycle_speeds[highway]
|
||||||
way.backward_speed = bicycle_speeds[highway]
|
way.backward_speed = bicycle_speeds[highway]
|
||||||
elseif access and access_tag_whitelist[access] then
|
elseif access and access_tag_whitelist[access] then
|
||||||
-- unknown way, but valid access tag
|
-- unknown way, but valid access tag
|
||||||
way.speed = default_speed
|
way.forward_speed = default_speed
|
||||||
way.backward_speed = default_speed
|
way.backward_speed = default_speed
|
||||||
else
|
else
|
||||||
-- biking not allowed, maybe we can push our bike?
|
-- biking not allowed, maybe we can push our bike?
|
||||||
@ -266,25 +266,25 @@ function way_function (way)
|
|||||||
if foot ~= 'no' and junction ~= "roundabout" then
|
if foot ~= 'no' and junction ~= "roundabout" then
|
||||||
if pedestrian_speeds[highway] then
|
if pedestrian_speeds[highway] then
|
||||||
-- pedestrian-only ways and areas
|
-- pedestrian-only ways and areas
|
||||||
way.speed = pedestrian_speeds[highway]
|
way.forward_speed = pedestrian_speeds[highway]
|
||||||
way.mode = mode_pushing
|
way.forward_mode = mode_pushing
|
||||||
way.backward_mode = mode_pushing
|
way.backward_mode = mode_pushing
|
||||||
elseif man_made and man_made_speeds[man_made] then
|
elseif man_made and man_made_speeds[man_made] then
|
||||||
-- man made structures
|
-- man made structures
|
||||||
way.speed = man_made_speeds[man_made]
|
way.forward_speed = man_made_speeds[man_made]
|
||||||
way.mode = mode_pushing
|
way.forward_mode = mode_pushing
|
||||||
way.backward_mode = mode_pushing
|
way.backward_mode = mode_pushing
|
||||||
elseif foot == 'yes' then
|
elseif foot == 'yes' then
|
||||||
way.speed = walking_speed
|
way.forward_speed = walking_speed
|
||||||
way.mode = mode_pushing
|
way.forward_mode = mode_pushing
|
||||||
way.backward_mode = mode_pushing
|
way.backward_mode = mode_pushing
|
||||||
elseif foot_forward == 'yes' then
|
elseif foot_forward == 'yes' then
|
||||||
way.speed = walking_speed
|
way.forward_speed = walking_speed
|
||||||
way.mode = mode_pushing
|
way.forward_mode = mode_pushing
|
||||||
way.backward_mode = 0
|
way.backward_mode = 0
|
||||||
elseif foot_backward == 'yes' then
|
elseif foot_backward == 'yes' then
|
||||||
way.speed = walking_speed
|
way.forward_speed = walking_speed
|
||||||
way.mode = 0
|
way.forward_mode = 0
|
||||||
way.backward_mode = mode_pushing
|
way.backward_mode = mode_pushing
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -301,28 +301,28 @@ function way_function (way)
|
|||||||
elseif onewayClass == "no" or onewayClass == "0" or onewayClass == "false" then
|
elseif onewayClass == "no" or onewayClass == "0" or onewayClass == "false" then
|
||||||
-- prevent implied oneway
|
-- prevent implied oneway
|
||||||
elseif onewayClass == "-1" then
|
elseif onewayClass == "-1" then
|
||||||
way.mode = 0
|
way.forward_mode = 0
|
||||||
elseif oneway == "no" or oneway == "0" or oneway == "false" then
|
elseif oneway == "no" or oneway == "0" or oneway == "false" then
|
||||||
-- prevent implied oneway
|
-- prevent implied oneway
|
||||||
elseif cycleway and string.find(cycleway, "opposite") == 1 then
|
elseif cycleway and string.find(cycleway, "opposite") == 1 then
|
||||||
if impliedOneway then
|
if impliedOneway then
|
||||||
way.mode = 0
|
way.forward_mode = 0
|
||||||
way.backward_mode = mode_normal
|
way.backward_mode = mode_normal
|
||||||
end
|
end
|
||||||
elseif cycleway_left and cycleway_tags[cycleway_left] and cycleway_right and cycleway_tags[cycleway_right] then
|
elseif cycleway_left and cycleway_tags[cycleway_left] and cycleway_right and cycleway_tags[cycleway_right] then
|
||||||
-- prevent implied
|
-- prevent implied
|
||||||
elseif cycleway_left and cycleway_tags[cycleway_left] then
|
elseif cycleway_left and cycleway_tags[cycleway_left] then
|
||||||
if impliedOneway then
|
if impliedOneway then
|
||||||
way.mode = 0
|
way.forward_mode = 0
|
||||||
way.backward_mode = mode_normal
|
way.backward_mode = mode_normal
|
||||||
end
|
end
|
||||||
elseif cycleway_right and cycleway_tags[cycleway_right] then
|
elseif cycleway_right and cycleway_tags[cycleway_right] then
|
||||||
if impliedOneway then
|
if impliedOneway then
|
||||||
way.mode = mode_normal
|
way.forward_mode = mode_normal
|
||||||
way.backward_mode = 0
|
way.backward_mode = 0
|
||||||
end
|
end
|
||||||
elseif oneway == "-1" then
|
elseif oneway == "-1" then
|
||||||
way.mode = 0
|
way.forward_mode = 0
|
||||||
elseif oneway == "yes" or oneway == "1" or oneway == "true" or impliedOneway then
|
elseif oneway == "yes" or oneway == "1" or oneway == "true" or impliedOneway then
|
||||||
way.backward_mode = 0
|
way.backward_mode = 0
|
||||||
end
|
end
|
||||||
@ -333,27 +333,27 @@ function way_function (way)
|
|||||||
if way.backward_mode == 0 then
|
if way.backward_mode == 0 then
|
||||||
way.backward_speed = walking_speed
|
way.backward_speed = walking_speed
|
||||||
way.backward_mode = mode_pushing
|
way.backward_mode = mode_pushing
|
||||||
elseif way.mode == 0 then
|
elseif way.forward_mode == 0 then
|
||||||
way.speed = walking_speed
|
way.forward_speed = walking_speed
|
||||||
way.mode = mode_pushing
|
way.forward_mode = mode_pushing
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- cycleways
|
-- cycleways
|
||||||
if cycleway and cycleway_tags[cycleway] then
|
if cycleway and cycleway_tags[cycleway] then
|
||||||
way.speed = bicycle_speeds["cycleway"]
|
way.forward_speed = bicycle_speeds["cycleway"]
|
||||||
elseif cycleway_left and cycleway_tags[cycleway_left] then
|
elseif cycleway_left and cycleway_tags[cycleway_left] then
|
||||||
way.speed = bicycle_speeds["cycleway"]
|
way.forward_speed = bicycle_speeds["cycleway"]
|
||||||
elseif cycleway_right and cycleway_tags[cycleway_right] then
|
elseif cycleway_right and cycleway_tags[cycleway_right] then
|
||||||
way.speed = bicycle_speeds["cycleway"]
|
way.forward_speed = bicycle_speeds["cycleway"]
|
||||||
end
|
end
|
||||||
|
|
||||||
-- dismount
|
-- dismount
|
||||||
if bicycle == "dismount" then
|
if bicycle == "dismount" then
|
||||||
way.mode = mode_pushing
|
way.forward_mode = mode_pushing
|
||||||
way.backward_mode = mode_pushing
|
way.backward_mode = mode_pushing
|
||||||
way.speed = walking_speed
|
way.forward_speed = walking_speed
|
||||||
way.backward_speed = walking_speed
|
way.backward_speed = walking_speed
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -361,8 +361,8 @@ function way_function (way)
|
|||||||
if surface then
|
if surface then
|
||||||
surface_speed = surface_speeds[surface]
|
surface_speed = surface_speeds[surface]
|
||||||
if surface_speed then
|
if surface_speed then
|
||||||
if way.speed > 0 then
|
if way.forward_speed > 0 then
|
||||||
way.speed = surface_speed
|
way.forward_speed = surface_speed
|
||||||
end
|
end
|
||||||
if way.backward_speed > 0 then
|
if way.backward_speed > 0 then
|
||||||
way.backward_speed = surface_speed
|
way.backward_speed = surface_speed
|
||||||
|
20
profiles/car.lua
Normal file → Executable file
20
profiles/car.lua
Normal file → Executable file
@ -170,7 +170,7 @@ function way_function (way)
|
|||||||
way.duration = max( parseDuration(duration), 1 );
|
way.duration = max( parseDuration(duration), 1 );
|
||||||
end
|
end
|
||||||
way.direction = Way.bidirectional
|
way.direction = Way.bidirectional
|
||||||
way.speed = route_speed
|
way.forward_speed = route_speed
|
||||||
end
|
end
|
||||||
|
|
||||||
-- leave early of this way is not accessible
|
-- leave early of this way is not accessible
|
||||||
@ -178,30 +178,30 @@ function way_function (way)
|
|||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
if way.speed == -1 then
|
if way.forward_speed == -1 then
|
||||||
local highway_speed = speed_profile[highway]
|
local highway_speed = speed_profile[highway]
|
||||||
local max_speed = parse_maxspeed( way.tags:Find("maxspeed") )
|
local max_speed = parse_maxspeed( way.tags:Find("maxspeed") )
|
||||||
-- Set the avg speed on the way if it is accessible by road class
|
-- Set the avg speed on the way if it is accessible by road class
|
||||||
if highway_speed then
|
if highway_speed then
|
||||||
if max_speed > highway_speed then
|
if max_speed > highway_speed then
|
||||||
way.speed = max_speed
|
way.forward_speed = max_speed
|
||||||
-- max_speed = math.huge
|
-- max_speed = math.huge
|
||||||
else
|
else
|
||||||
way.speed = highway_speed
|
way.forward_speed = highway_speed
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
-- Set the avg speed on ways that are marked accessible
|
-- Set the avg speed on ways that are marked accessible
|
||||||
if access_tag_whitelist[access] then
|
if access_tag_whitelist[access] then
|
||||||
way.speed = speed_profile["default"]
|
way.forward_speed = speed_profile["default"]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if 0 == max_speed then
|
if 0 == max_speed then
|
||||||
max_speed = math.huge
|
max_speed = math.huge
|
||||||
end
|
end
|
||||||
way.speed = min(way.speed, max_speed)
|
way.forward_speed = min(way.forward_speed, max_speed)
|
||||||
end
|
end
|
||||||
|
|
||||||
if -1 == way.speed then
|
if -1 == way.forward_speed then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -256,9 +256,9 @@ function way_function (way)
|
|||||||
local maxspeed_backward = parse_maxspeed(way.tags:Find( "maxspeed:backward"))
|
local maxspeed_backward = parse_maxspeed(way.tags:Find( "maxspeed:backward"))
|
||||||
if maxspeed_forward > 0 then
|
if maxspeed_forward > 0 then
|
||||||
if Way.bidirectional == way.direction then
|
if Way.bidirectional == way.direction then
|
||||||
way.backward_speed = way.speed
|
way.backward_speed = way.forward_speed
|
||||||
end
|
end
|
||||||
way.speed = maxspeed_forward
|
way.forward_speed = maxspeed_forward
|
||||||
end
|
end
|
||||||
if maxspeed_backward > 0 then
|
if maxspeed_backward > 0 then
|
||||||
way.backward_speed = maxspeed_backward
|
way.backward_speed = maxspeed_backward
|
||||||
@ -271,7 +271,7 @@ function way_function (way)
|
|||||||
way.type = 1
|
way.type = 1
|
||||||
|
|
||||||
-- scale speeds to get better avg driving times
|
-- scale speeds to get better avg driving times
|
||||||
way.speed = way.speed * speed_reduction
|
way.forward_speed = way.forward_speed * speed_reduction
|
||||||
if maxspeed_backward > 0 then
|
if maxspeed_backward > 0 then
|
||||||
way.backward_speed = way.backward_speed*speed_reduction
|
way.backward_speed = way.backward_speed*speed_reduction
|
||||||
end
|
end
|
||||||
|
@ -65,11 +65,11 @@ function way_function (way)
|
|||||||
|
|
||||||
local cursor = assert( sql_con:execute(sql_query) ) -- execute querty
|
local cursor = assert( sql_con:execute(sql_query) ) -- execute querty
|
||||||
local row = cursor:fetch( {}, "a" ) -- fetch first (and only) row
|
local row = cursor:fetch( {}, "a" ) -- fetch first (and only) row
|
||||||
way.speed = 20.0 -- default speed
|
way.forward_speed = 20.0 -- default speed
|
||||||
if row then
|
if row then
|
||||||
local val = tonumber(row.val) -- read 'val' from row
|
local val = tonumber(row.val) -- read 'val' from row
|
||||||
if val > 10 then
|
if val > 10 then
|
||||||
way.speed = way.speed / math.log10( val ) -- reduce speed by amount of industry close by
|
way.forward_speed = way.forward_speed / math.log10( val ) -- reduce speed by amount of industry close by
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
cursor:close() -- done with this query
|
cursor:close() -- done with this query
|
||||||
|
@ -161,23 +161,23 @@ function way_function (way)
|
|||||||
if durationIsValid(duration) then
|
if durationIsValid(duration) then
|
||||||
way.duration = math.max( 1, parseDuration(duration) )
|
way.duration = math.max( 1, parseDuration(duration) )
|
||||||
else
|
else
|
||||||
way.speed = route_speeds[route]
|
way.forward_speed = route_speeds[route]
|
||||||
end
|
end
|
||||||
elseif railway and platform_speeds[railway] then
|
elseif railway and platform_speeds[railway] then
|
||||||
-- railway platforms (old tagging scheme)
|
-- railway platforms (old tagging scheme)
|
||||||
way.speed = platform_speeds[railway]
|
way.forward_speed = platform_speeds[railway]
|
||||||
elseif platform_speeds[public_transport] then
|
elseif platform_speeds[public_transport] then
|
||||||
-- public_transport platforms (new tagging platform)
|
-- public_transport platforms (new tagging platform)
|
||||||
way.speed = platform_speeds[public_transport]
|
way.forward_speed = platform_speeds[public_transport]
|
||||||
elseif amenity and amenity_speeds[amenity] then
|
elseif amenity and amenity_speeds[amenity] then
|
||||||
-- parking areas
|
-- parking areas
|
||||||
way.speed = amenity_speeds[amenity]
|
way.forward_speed = amenity_speeds[amenity]
|
||||||
elseif speeds[highway] then
|
elseif speeds[highway] then
|
||||||
-- regular ways
|
-- regular ways
|
||||||
way.speed = speeds[highway]
|
way.forward_speed = speeds[highway]
|
||||||
elseif access and access_tag_whitelist[access] then
|
elseif access and access_tag_whitelist[access] then
|
||||||
-- unknown way, but valid access tag
|
-- unknown way, but valid access tag
|
||||||
way.speed = walking_speed
|
way.forward_speed = walking_speed
|
||||||
end
|
end
|
||||||
|
|
||||||
-- oneway
|
-- oneway
|
||||||
@ -195,7 +195,7 @@ function way_function (way)
|
|||||||
if surface then
|
if surface then
|
||||||
surface_speed = surface_speeds[surface]
|
surface_speed = surface_speeds[surface]
|
||||||
if surface_speed then
|
if surface_speed then
|
||||||
way.speed = math.min(way.speed, surface_speed)
|
way.forward_speed = math.min(way.forward_speed, surface_speed)
|
||||||
way.backward_speed = math.min(way.backward_speed, surface_speed)
|
way.backward_speed = math.min(way.backward_speed, surface_speed)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -4,9 +4,9 @@ module "MaxSpeed"
|
|||||||
|
|
||||||
function limit(way,max,maxf,maxb)
|
function limit(way,max,maxf,maxb)
|
||||||
if maxf and maxf>0 then
|
if maxf and maxf>0 then
|
||||||
way.speed = math.min(way.speed, maxf)
|
way.forward_speed = math.min(way.forward_speed, maxf)
|
||||||
elseif max and max>0 then
|
elseif max and max>0 then
|
||||||
way.speed = math.min(way.speed, max)
|
way.forward_speed = math.min(way.forward_speed, max)
|
||||||
end
|
end
|
||||||
|
|
||||||
if maxb and maxb>0 then
|
if maxb and maxb>0 then
|
||||||
|
@ -70,22 +70,22 @@ function way_function (way)
|
|||||||
|
|
||||||
if route ~= nil and durationIsValid(duration) then
|
if route ~= nil and durationIsValid(duration) then
|
||||||
way.duration = math.max( 1, parseDuration(duration) )
|
way.duration = math.max( 1, parseDuration(duration) )
|
||||||
way.mode = 2
|
way.forward_mode = 2
|
||||||
way.backward_mode = 2
|
way.backward_mode = 2
|
||||||
else
|
else
|
||||||
local speed_forw = speed_profile[highway] or speed_profile['default']
|
local speed_forw = speed_profile[highway] or speed_profile['default']
|
||||||
local speed_back = speed_forw
|
local speed_back = speed_forw
|
||||||
|
|
||||||
if highway == "river" then
|
if highway == "river" then
|
||||||
local temp_speed = speed_forw;
|
local temp_speed = speed_forw;
|
||||||
way.mode = 3
|
way.forward_mode = 3
|
||||||
way.backward_mode = 4
|
way.backward_mode = 4
|
||||||
speed_forw = temp_speed*1.5
|
speed_forw = temp_speed*1.5
|
||||||
speed_back = temp_speed/1.5
|
speed_back = temp_speed/1.5
|
||||||
elseif highway == "steps" then
|
elseif highway == "steps" then
|
||||||
way.mode = 5
|
way.forward_mode = 5
|
||||||
way.backward_mode = 6
|
way.backward_mode = 6
|
||||||
end
|
end
|
||||||
|
|
||||||
if maxspeed_forward ~= nil and maxspeed_forward > 0 then
|
if maxspeed_forward ~= nil and maxspeed_forward > 0 then
|
||||||
speed_forw = maxspeed_forward
|
speed_forw = maxspeed_forward
|
||||||
@ -103,14 +103,14 @@ function way_function (way)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
way.speed = speed_forw
|
way.forward_speed = speed_forw
|
||||||
way.backward_speed = speed_back
|
way.backward_speed = speed_back
|
||||||
end
|
end
|
||||||
|
|
||||||
if oneway == "no" or oneway == "0" or oneway == "false" then
|
if oneway == "no" or oneway == "0" or oneway == "false" then
|
||||||
-- nothing to do
|
-- nothing to do
|
||||||
elseif oneway == "-1" then
|
elseif oneway == "-1" then
|
||||||
way.mode = 0
|
way.forward_mode = 0
|
||||||
elseif oneway == "yes" or oneway == "1" or oneway == "true" or junction == "roundabout" then
|
elseif oneway == "yes" or oneway == "1" or oneway == "true" or junction == "roundabout" then
|
||||||
way.backward_mode = 0
|
way.backward_mode = 0
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user