| 822 | } |
| 823 | |
| 824 | void 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"; |
nothing calls this directly
no test coverage detected