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

Method BuildEdgeExpandedGraph

src/extractor/extractor.cpp:718–777  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

716*/
717
718EdgeID Extractor::BuildEdgeExpandedGraph(
719 // input data
720 const util::NodeBasedDynamicGraph &node_based_graph,
721 const std::vector<util::Coordinate> &coordinates,
722 const CompressedEdgeContainer &compressed_edge_container,
723 const RestrictionGraph &restriction_graph,
724 const std::unordered_set<EdgeID> &segregated_edges,
725 const StringTable &string_table,
726 const std::vector<UnresolvedManeuverOverride> &maneuver_overrides,
727 const LaneDescriptionMap &turn_lane_map,
728 // for calculating turn penalties
729 ScriptingEnvironment &scripting_environment,
730 // output data
731 EdgeBasedNodeDataContainer &edge_based_nodes_container,
732 std::vector<EdgeBasedNodeSegment> &edge_based_node_segments,
733 std::vector<EdgeWeight> &edge_based_node_weights,
734 std::vector<EdgeDuration> &edge_based_node_durations,
735 std::vector<EdgeDistance> &edge_based_node_distances,
736 util::DeallocatingVector<EdgeBasedEdge> &edge_based_edge_list,
737 std::uint32_t &connectivity_checksum)
738{
739 EdgeBasedGraphFactory edge_based_graph_factory(node_based_graph,
740 edge_based_nodes_container,
741 compressed_edge_container,
742 coordinates,
743 string_table,
744 segregated_edges,
745 turn_lane_map);
746
747 const auto create_edge_based_edges = [&]()
748 {
749 // scoped to release intermediate data structures right after the call
750 RestrictionMap unconditional_node_restriction_map(restriction_graph);
751 ConditionalRestrictionMap conditional_node_restriction_map(restriction_graph);
752 WayRestrictionMap via_way_restriction_map(restriction_graph);
753 edge_based_graph_factory.Run(scripting_environment,
754 config.GetPath(".osrm.turn_weight_penalties").string(),
755 config.GetPath(".osrm.turn_duration_penalties").string(),
756 config.GetPath(".osrm.turn_penalties_index").string(),
757 config.GetPath(".osrm.cnbg_to_ebg").string(),
758 config.GetPath(".osrm.restrictions").string(),
759 config.GetPath(".osrm.maneuver_overrides").string(),
760 unconditional_node_restriction_map,
761 conditional_node_restriction_map,
762 via_way_restriction_map,
763 maneuver_overrides);
764 return edge_based_graph_factory.GetNumberOfEdgeBasedNodes();
765 };
766
767 const auto number_of_edge_based_nodes = create_edge_based_edges();
768
769 edge_based_graph_factory.GetEdgeBasedEdges(edge_based_edge_list);
770 edge_based_graph_factory.GetEdgeBasedNodeSegments(edge_based_node_segments);
771 edge_based_graph_factory.GetEdgeBasedNodeWeights(edge_based_node_weights);
772 edge_based_graph_factory.GetEdgeBasedNodeDurations(edge_based_node_durations);
773 edge_based_graph_factory.GetEdgeBasedNodeDistances(edge_based_node_distances);
774 connectivity_checksum = edge_based_graph_factory.GetConnectivityChecksum();
775

Callers

nothing calls this directly

Calls 9

GetPathMethod · 0.80
GetEdgeBasedEdgesMethod · 0.80
RunMethod · 0.45

Tested by

no test coverage detected