CARLA
Loading...
Searching...
No Matches
MapData.h
Go to the documentation of this file.
1// Copyright (c) 2026 Computer Vision Center (CVC) at the Universitat Autonoma
2// de Barcelona (UAB).
3//
4// This work is licensed under the terms of the MIT license.
5// For a copy, see <https://opensource.org/licenses/MIT>.
6
7#pragma once
8
11#include "carla/Iterator.h"
12#include "carla/ListView.h"
13#include "carla/NonCopyable.h"
16#include "carla/road/Junction.h"
17#include "carla/road/Road.h"
19#include "carla/road/Signal.h"
20#include "carla/road/Stencil.h"
21
22#include <boost/iterator/transform_iterator.hpp>
23
24#include <unordered_map>
25
26namespace carla {
27namespace road {
28
29 class Lane;
30
31 class MapData : private MovableNonCopyable {
32 public:
33
35 return _geo_reference;
36 }
37
39 return _geo_projection;
40 }
41
42 std::unordered_map<RoadId, Road> &GetRoads();
43
44 const std::unordered_map<RoadId, Road> &GetRoads() const {
45 return _roads;
46 }
47
48 std::unordered_map<JuncId, Junction> &GetJunctions();
49
50 const std::unordered_map<JuncId, Junction> &GetJunctions() const {
51 return _junctions;
52 }
53
54 bool ContainsRoad(RoadId id) const {
55 return (_roads.find(id) != _roads.end());
56 }
57
58 Road &GetRoad(const RoadId id);
59
60 const Road &GetRoad(const RoadId id) const;
61
63
64 const Junction *GetJunction(JuncId id) const;
65
66 template <typename T>
67 auto GetRoadInfo(const RoadId id, const double s) {
68 return GetRoad(id).template GetInfo<T>(s);
69 }
70
71 template <typename T>
73 const RoadId road_id,
74 const SectionId section_id,
75 const LaneId lane_id,
76 const double s) {
77 return GetRoad(road_id).GetLaneById(section_id, lane_id).template GetInfo<T>(s);
78 }
79
80 size_t GetRoadCount() const {
81 return _roads.size();
82 }
83
84 const std::unordered_map<SignId, std::unique_ptr<Signal>> &GetSignals() const {
85 return _signals;
86 }
87
88 const std::unordered_map<ContId, std::unique_ptr<Controller>>& GetControllers() const {
89 return _controllers;
90 }
91
92 const std::unordered_map<StencilId, std::unique_ptr<Stencil>>& GetStencils() const {
93 return _stencils;
94 }
95
96 private:
97
98 friend class MapBuilder;
99
100 MapData() = default;
101
103
105
106 std::unordered_map<RoadId, Road> _roads;
107
108 std::unordered_map<JuncId, Junction> _junctions;
109
110 std::unordered_map<SignId, std::unique_ptr<Signal>> _signals;
111
112 std::unordered_map<ContId, std::unique_ptr<Controller>> _controllers;
113
114 std::unordered_map<StencilId, std::unique_ptr<Stencil>> _stencils;
115 };
116
117} // namespace road
118} // namespace carla
std::string road_id
Definition LaneGraph.cpp:39
std::map< std::string, unsigned int > road
Inherit (privately) to suppress copy construction and assignment.
geom::GeoProjection _geo_projection
Definition MapData.h:104
std::unordered_map< RoadId, Road > _roads
Definition MapData.h:106
const geom::GeoProjection & GetGeoProjection() const
Definition MapData.h:38
const geom::GeoLocation & GetGeoReference() const
Definition MapData.h:34
std::unordered_map< StencilId, std::unique_ptr< Stencil > > _stencils
Definition MapData.h:114
std::unordered_map< RoadId, Road > & GetRoads()
Definition MapData.cpp:13
const std::unordered_map< RoadId, Road > & GetRoads() const
Definition MapData.h:44
size_t GetRoadCount() const
Definition MapData.h:80
Road & GetRoad(const RoadId id)
Definition MapData.cpp:21
auto GetRoadInfo(const RoadId id, const double s)
Definition MapData.h:67
const std::unordered_map< StencilId, std::unique_ptr< Stencil > > & GetStencils() const
Definition MapData.h:92
const std::unordered_map< JuncId, Junction > & GetJunctions() const
Definition MapData.h:50
std::unordered_map< ContId, std::unique_ptr< Controller > > _controllers
Definition MapData.h:112
std::unordered_map< JuncId, Junction > _junctions
Definition MapData.h:108
geom::GeoLocation _geo_reference
Definition MapData.h:102
bool ContainsRoad(RoadId id) const
Definition MapData.h:54
std::unordered_map< JuncId, Junction > & GetJunctions()
Definition MapData.cpp:17
const std::unordered_map< SignId, std::unique_ptr< Signal > > & GetSignals() const
Definition MapData.h:84
const std::unordered_map< ContId, std::unique_ptr< Controller > > & GetControllers() const
Definition MapData.h:88
auto GetLaneInfo(const RoadId road_id, const SectionId section_id, const LaneId lane_id, const double s)
Definition MapData.h:72
Junction * GetJunction(JuncId id)
Definition MapData.cpp:29
std::unordered_map< SignId, std::unique_ptr< Signal > > _signals
Definition MapData.h:110
Lane & GetLaneById(SectionId section_id, LaneId lane_id)
int32_t JuncId
Definition RoadTypes.h:17
uint32_t RoadId
Definition RoadTypes.h:15
int32_t LaneId
Definition RoadTypes.h:19
uint32_t SectionId
Definition RoadTypes.h:21
This file contains definitions of common data structures used in traffic manager.