MCPcopy Create free account
hub / github.com/Project-OSRM/osrm-backend / ProcessGuidanceTurns

Method ProcessGuidanceTurns

src/extractor/extractor.cpp:824–904  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

822}
823
824void Extractor::ProcessGuidanceTurns(
825 const util::NodeBasedDynamicGraph &node_based_graph,
826 const extractor::EdgeBasedNodeDataContainer &edge_based_node_container,
827 const std::vector<util::Coordinate> &node_coordinates,
828 const CompressedEdgeContainer &compressed_edge_container,
829 const RestrictionGraph &restriction_graph,
830 const StringTable &string_table,
831 LaneDescriptionMap lane_description_map,
832 ScriptingEnvironment &scripting_environment)
833{
834 // Output data
835 osrm::guidance::TurnDataExternalContainer turn_data_container;
836 util::guidance::LaneDataIdMap lane_data_map;
837 osrm::guidance::BearingClassesVector bearing_class_by_node_based_node;
838 osrm::guidance::BearingClassesMap bearing_class_hash;
839 osrm::guidance::EntryClassesMap entry_class_hash;
840 std::uint32_t connectivity_checksum = 0;
841
842 TIMER_START(turn_annotations);
843
844 {
845 SuffixTable street_name_suffix_table(scripting_environment);
846 const auto &turn_lanes_data = transformTurnLaneMapIntoArrays(lane_description_map);
847
848 RestrictionMap unconditional_node_restriction_map(restriction_graph);
849 WayRestrictionMap way_restriction_map(restriction_graph);
850
851 osrm::guidance::annotateTurns(node_based_graph,
852 edge_based_node_container,
853 node_coordinates,
854 compressed_edge_container,
855 scripting_environment.m_obstacle_map,
856 unconditional_node_restriction_map,
857 way_restriction_map,
858 string_table,
859 street_name_suffix_table,
860 turn_lanes_data,
861 lane_description_map,
862 lane_data_map,
863 turn_data_container,
864 bearing_class_by_node_based_node,
865 bearing_class_hash,
866 entry_class_hash,
867 connectivity_checksum);
868 }
869
870 TIMER_STOP(turn_annotations);
871 util::Log() << "Guidance turn annotations took " << TIMER_SEC(turn_annotations) << "s";
872
873 util::Log() << "Writing Intersection Classification Data";
874 TIMER_START(write_intersections);
875 files::writeIntersections(
876 config.GetPath(".osrm.icd").string(),
877 IntersectionBearingsContainer{bearing_class_by_node_based_node,
878 convertIDMapToVector(bearing_class_hash.data)},
879 convertIDMapToVector(entry_class_hash.data));
880 TIMER_STOP(write_intersections);
881 util::Log() << "ok, after " << TIMER_SEC(write_intersections) << "s";

Callers

nothing calls this directly

Calls 9

annotateTurnsFunction · 0.85
LogClass · 0.85
writeIntersectionsFunction · 0.85
convertIDMapToVectorFunction · 0.85
writeTurnLaneDataFunction · 0.85
writeTurnDataFunction · 0.85
GetPathMethod · 0.80

Tested by

no test coverage detected