osrm-backend/include/extractor/guidance/turn_lane_matcher.hpp

58 lines
2.1 KiB
C++
Raw Normal View History

2016-05-13 13:18:00 -04:00
#ifndef OSRM_EXTRACTOR_GUIDANCE_TURN_LANE_MATCHER_HPP_
#define OSRM_EXTRACTOR_GUIDANCE_TURN_LANE_MATCHER_HPP_
#include "extractor/guidance/intersection.hpp"
2016-06-15 08:38:24 -04:00
#include "extractor/guidance/toolkit.hpp"
2016-05-13 13:18:00 -04:00
#include "extractor/guidance/turn_instruction.hpp"
#include "extractor/guidance/turn_lane_data.hpp"
#include "util/attributes.hpp"
2016-05-13 13:18:00 -04:00
#include "util/guidance/turn_lanes.hpp"
#include "util/node_based_graph.hpp"
2016-06-15 08:38:24 -04:00
#include <unordered_map>
2016-05-13 13:18:00 -04:00
namespace osrm
{
namespace extractor
{
namespace guidance
{
namespace lanes
{
// Translate Turn Lane Tags into a matching modifier
DirectionModifier::Enum getMatchingModifier(const TurnLaneType::Mask tag);
2016-05-13 13:18:00 -04:00
// check whether a match of a given tag and a turn instruction can be seen as valid
bool isValidMatch(const TurnLaneType::Mask tag, const TurnInstruction instruction);
2016-05-13 13:18:00 -04:00
// localisation of the best possible match for a tag
typename Intersection::const_iterator findBestMatch(const TurnLaneType::Mask tag,
2016-05-13 13:18:00 -04:00
const Intersection &intersection);
// the quality of a matching to decide between first/second possibility on segregated intersections
double getMatchingQuality( const TurnLaneType::Mask tag, const ConnectedRoad &road );
typename Intersection::const_iterator
findBestMatchForReverse(const TurnLaneType::Mask leftmost_tag, const Intersection &intersection);
2016-05-13 13:18:00 -04:00
// a match is trivial if all turns can be associated with their best match in a valid way and the
// matches occur in order
bool canMatchTrivially(const Intersection &intersection, const LaneDataVector &lane_data);
// perform a trivial match on the turn lanes
OSRM_ATTR_WARN_UNUSED
2016-05-13 13:18:00 -04:00
Intersection triviallyMatchLanesToTurns(Intersection intersection,
const LaneDataVector &lane_data,
2016-06-15 08:38:24 -04:00
const util::NodeBasedDynamicGraph &node_based_graph,
const LaneDescriptionID lane_string_id,
2016-06-15 08:38:24 -04:00
LaneDataIdMap &lane_data_to_id);
2016-05-13 13:18:00 -04:00
} // namespace lanes
} // namespace guidance
} // namespace extractor
} // namespace osrm
#endif /*OSRM_EXTRACTOR_GUIDANCE_TURN_LANE_MATCHER_HPP_*/