MCPcopy Create free account
hub / github.com/comaps/comaps / IndexGraph

Class IndexGraph

libs/routing/index_graph.hpp:35–215  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

33enum class WorldGraphMode;
34
35class IndexGraph final
36{
37public:
38 // AStarAlgorithm types aliases:
39 using Vertex = Segment;
40 using Edge = SegmentEdge;
41 using Weight = RouteWeight;
42
43 template <typename VertexType>
44 using Parents = typename AStarGraph<VertexType, void, void>::Parents;
45
46 using Restrictions = ankerl::unordered_dense::map<uint32_t, std::vector<std::vector<uint32_t>>>;
47
48 using SegmentEdgeListT = SmallList<SegmentEdge>;
49 using JointEdgeListT = SmallList<JointEdge>;
50 using WeightListT = SmallList<RouteWeight>;
51 using SegmentListT = SmallList<Segment>;
52 using PointIdListT = SmallList<uint32_t>;
53
54 IndexGraph() = default;
55 IndexGraph(std::shared_ptr<Geometry> geometry, std::shared_ptr<EdgeEstimator> estimator,
56 RoutingOptions routingOptions = RoutingOptions(), feature::RegionData const * regionData = nullptr);
57
58 // Put outgoing (or ingoing) egdes for segment to the 'edges' vector.
59 void GetEdgeList(astar::VertexData<Segment, RouteWeight> const & vertexData, bool isOutgoing, bool useRoutingOptions,
60 SegmentEdgeListT & edges, Parents<Segment> const & parents = {}) const;
61 void GetEdgeList(Segment const & segment, bool isOutgoing, bool useRoutingOptions, SegmentEdgeListT & edges,
62 Parents<Segment> const & parents = {}) const;
63
64 void GetEdgeList(astar::VertexData<JointSegment, RouteWeight> const & parentVertexData, Segment const & parent,
65 bool isOutgoing, JointEdgeListT & edges, WeightListT & parentWeights,
66 Parents<JointSegment> const & parents) const;
67 void GetEdgeList(JointSegment const & parentJoint, Segment const & parent, bool isOutgoing, JointEdgeListT & edges,
68 WeightListT & parentWeights, Parents<JointSegment> const & parents) const;
69
70 std::optional<JointEdge> GetJointEdgeByLastPoint(Segment const & parent, Segment const & firstChild, bool isOutgoing,
71 uint32_t lastPoint) const;
72
73 Joint::Id GetJointId(RoadPoint const & rp) const { return m_roadIndex.GetJointId(rp); }
74
75 bool IsRoad(uint32_t featureId) const { return m_roadIndex.IsRoad(featureId); }
76 RoadJointIds const & GetRoad(uint32_t featureId) const { return m_roadIndex.GetRoad(featureId); }
77 RoadGeometry const & GetRoadGeometry(uint32_t featureId) const { return m_geometry->GetRoad(featureId); }
78
79 Geometry & GetGeometry() const { return *m_geometry; }
80
81 RoadAccess::Type GetAccessType(Segment const & segment) const
82 {
83 return m_roadAccess.GetAccessWithoutConditional(segment.GetFeatureId()).first;
84 }
85
86 uint32_t GetNumRoads() const { return m_roadIndex.GetSize(); }
87 uint32_t GetNumJoints() const { return m_jointIndex.GetNumJoints(); }
88 uint32_t GetNumPoints() const { return m_jointIndex.GetNumPoints(); }
89
90 void Build(uint32_t numJoints);
91 void Import(std::vector<Joint> const & joints);
92

Callers

nothing calls this directly

Calls 5

GetCurrentTimestampFunction · 0.85
RoutingOptionsClass · 0.70
GetPointMethod · 0.45
GetFeatureIdMethod · 0.45
GetPointIdMethod · 0.45

Tested by

no test coverage detected