Use edge_id as index in ebg_node_data_container

This commit is contained in:
Michael Krasnyk
2017-05-03 11:48:43 +02:00
committed by Patrick Niklaus
parent f1e4349c82
commit be1acae20c
3 changed files with 65 additions and 71 deletions
+7 -12
View File
@@ -150,19 +150,14 @@ class EdgeBasedGraphFactory
unsigned RenumberEdges();
std::vector<NBGToEBG> GenerateEdgeExpandedNodes();
std::vector<NBGToEBG> GenerateEdgeExpandedNodes(const std::string &node_data_filename);
std::unordered_map<EdgeID, NodeID>
GenerateEdgeExpandedNodesData(const std::string &node_data_filename) const;
void
GenerateEdgeExpandedEdges(ScriptingEnvironment &scripting_environment,
const std::unordered_map<EdgeID, NodeID> &index_nbg_edgeid_ebg_nodeid,
const std::string &original_edge_data_filename,
const std::string &turn_lane_data_filename,
const std::string &turn_weight_penalties_filename,
const std::string &turn_duration_penalties_filename,
const std::string &turn_penalties_index_filename);
void GenerateEdgeExpandedEdges(ScriptingEnvironment &scripting_environment,
const std::string &original_edge_data_filename,
const std::string &turn_lane_data_filename,
const std::string &turn_weight_penalties_filename,
const std::string &turn_duration_penalties_filename,
const std::string &turn_penalties_index_filename);
NBGToEBG InsertEdgeBasedNode(const NodeID u, const NodeID v);
+15 -9
View File
@@ -32,31 +32,37 @@ namespace detail
template <storage::Ownership Ownership> class EdgeBasedNodeDataContainerImpl
{
template <typename T> using Vector = util::ViewOrVector<T, Ownership>;
using TravelMode = extractor::TravelMode;
public:
EdgeBasedNodeDataContainerImpl() = default;
EdgeBasedNodeDataContainerImpl(std::size_t size)
: geometry_ids(size), name_ids(size), travel_modes(size)
{
}
EdgeBasedNodeDataContainerImpl(Vector<GeometryID> geometry_ids,
Vector<NameID> name_ids,
Vector<extractor::TravelMode> travel_modes)
Vector<TravelMode> travel_modes)
: geometry_ids(std::move(geometry_ids)), name_ids(std::move(name_ids)),
travel_modes(std::move(travel_modes))
{
}
GeometryID GetGeometryID(const NodeID id) const { return geometry_ids[id]; }
GeometryID GetGeometryID(const NodeID node_id) const { return geometry_ids[node_id]; }
extractor::TravelMode GetTravelMode(const NodeID id) const { return travel_modes[id]; }
TravelMode GetTravelMode(const NodeID node_id) const { return travel_modes[node_id]; }
NameID GetNameID(const NodeID id) const { return name_ids[id]; }
NameID GetNameID(const NodeID node_id) const { return name_ids[node_id]; }
// Used by EdgeBasedGraphFactory to fill data structure
template <typename = std::enable_if<Ownership == storage::Ownership::Container>>
void push_back(GeometryID geometry_id, NameID name_id, extractor::TravelMode travel_mode)
void SetData(NodeID node_id, GeometryID geometry_id, NameID name_id, TravelMode travel_mode)
{
geometry_ids.push_back(geometry_id);
name_ids.push_back(name_id);
travel_modes.push_back(travel_mode);
geometry_ids[node_id] = geometry_id;
name_ids[node_id] = name_id;
travel_modes[node_id] = travel_mode;
}
friend void serialization::read<Ownership>(storage::io::FileReader &reader,
@@ -68,7 +74,7 @@ template <storage::Ownership Ownership> class EdgeBasedNodeDataContainerImpl
private:
Vector<GeometryID> geometry_ids;
Vector<NameID> name_ids;
Vector<extractor::TravelMode> travel_modes;
Vector<TravelMode> travel_modes;
};
}