Address PR comments
This commit is contained in:
parent
4986f5ea2d
commit
94e2a8598d
@ -60,7 +60,7 @@ class CompressedEdgeContainer
|
|||||||
NodeID GetLastEdgeSourceID(const EdgeID edge_id) const;
|
NodeID GetLastEdgeSourceID(const EdgeID edge_id) const;
|
||||||
|
|
||||||
// Invalidates the internal storage
|
// Invalidates the internal storage
|
||||||
SegmentDataContainer ToSegmentData();
|
std::unique_ptr<SegmentDataContainer> ToSegmentData();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int free_list_maximum = 0;
|
int free_list_maximum = 0;
|
||||||
@ -71,7 +71,7 @@ class CompressedEdgeContainer
|
|||||||
std::unordered_map<EdgeID, unsigned> m_edge_id_to_list_index_map;
|
std::unordered_map<EdgeID, unsigned> m_edge_id_to_list_index_map;
|
||||||
std::unordered_map<EdgeID, unsigned> m_forward_edge_id_to_zipped_index_map;
|
std::unordered_map<EdgeID, unsigned> m_forward_edge_id_to_zipped_index_map;
|
||||||
std::unordered_map<EdgeID, unsigned> m_reverse_edge_id_to_zipped_index_map;
|
std::unordered_map<EdgeID, unsigned> m_reverse_edge_id_to_zipped_index_map;
|
||||||
SegmentDataContainer segment_data;
|
std::unique_ptr<SegmentDataContainer> segment_data;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,7 @@ namespace updater
|
|||||||
class Updater
|
class Updater
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Updater(const UpdaterConfig &config) :config(config) {}
|
Updater(UpdaterConfig config_) :config(std::move(config_)) {}
|
||||||
|
|
||||||
EdgeID LoadAndUpdateEdgeExpandedGraph(
|
EdgeID LoadAndUpdateEdgeExpandedGraph(
|
||||||
std::vector<extractor::EdgeBasedEdge> &edge_based_edge_list,
|
std::vector<extractor::EdgeBasedEdge> &edge_based_edge_list,
|
||||||
|
@ -61,7 +61,7 @@ unsigned CompressedEdgeContainer::GetZippedPositionForForwardID(const EdgeID edg
|
|||||||
{
|
{
|
||||||
auto map_iterator = m_forward_edge_id_to_zipped_index_map.find(edge_id);
|
auto map_iterator = m_forward_edge_id_to_zipped_index_map.find(edge_id);
|
||||||
BOOST_ASSERT(map_iterator != m_forward_edge_id_to_zipped_index_map.end());
|
BOOST_ASSERT(map_iterator != m_forward_edge_id_to_zipped_index_map.end());
|
||||||
BOOST_ASSERT(map_iterator->second < segment_data.nodes.size());
|
BOOST_ASSERT(map_iterator->second < segment_data->nodes.size());
|
||||||
return map_iterator->second;
|
return map_iterator->second;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -69,7 +69,7 @@ unsigned CompressedEdgeContainer::GetZippedPositionForReverseID(const EdgeID edg
|
|||||||
{
|
{
|
||||||
auto map_iterator = m_reverse_edge_id_to_zipped_index_map.find(edge_id);
|
auto map_iterator = m_reverse_edge_id_to_zipped_index_map.find(edge_id);
|
||||||
BOOST_ASSERT(map_iterator != m_reverse_edge_id_to_zipped_index_map.end());
|
BOOST_ASSERT(map_iterator != m_reverse_edge_id_to_zipped_index_map.end());
|
||||||
BOOST_ASSERT(map_iterator->second < segment_data.nodes.size());
|
BOOST_ASSERT(map_iterator->second < segment_data->nodes.size());
|
||||||
return map_iterator->second;
|
return map_iterator->second;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -214,12 +214,13 @@ void CompressedEdgeContainer::AddUncompressedEdge(const EdgeID edge_id,
|
|||||||
|
|
||||||
void CompressedEdgeContainer::InitializeBothwayVector()
|
void CompressedEdgeContainer::InitializeBothwayVector()
|
||||||
{
|
{
|
||||||
segment_data.index.reserve(m_compressed_oneway_geometries.size());
|
segment_data = std::make_unique<SegmentDataContainer>();
|
||||||
segment_data.nodes.reserve(m_compressed_oneway_geometries.size());
|
segment_data->index.reserve(m_compressed_oneway_geometries.size());
|
||||||
segment_data.fwd_weights.reserve(m_compressed_oneway_geometries.size());
|
segment_data->nodes.reserve(m_compressed_oneway_geometries.size());
|
||||||
segment_data.rev_weights.reserve(m_compressed_oneway_geometries.size());
|
segment_data->fwd_weights.reserve(m_compressed_oneway_geometries.size());
|
||||||
segment_data.fwd_durations.reserve(m_compressed_oneway_geometries.size());
|
segment_data->rev_weights.reserve(m_compressed_oneway_geometries.size());
|
||||||
segment_data.rev_durations.reserve(m_compressed_oneway_geometries.size());
|
segment_data->fwd_durations.reserve(m_compressed_oneway_geometries.size());
|
||||||
|
segment_data->rev_durations.reserve(m_compressed_oneway_geometries.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned CompressedEdgeContainer::ZipEdges(const EdgeID f_edge_id, const EdgeID r_edge_id)
|
unsigned CompressedEdgeContainer::ZipEdges(const EdgeID f_edge_id, const EdgeID r_edge_id)
|
||||||
@ -229,19 +230,19 @@ unsigned CompressedEdgeContainer::ZipEdges(const EdgeID f_edge_id, const EdgeID
|
|||||||
|
|
||||||
BOOST_ASSERT(forward_bucket.size() == reverse_bucket.size());
|
BOOST_ASSERT(forward_bucket.size() == reverse_bucket.size());
|
||||||
|
|
||||||
const unsigned zipped_geometry_id = segment_data.index.size();
|
const unsigned zipped_geometry_id = segment_data->index.size();
|
||||||
m_forward_edge_id_to_zipped_index_map[f_edge_id] = zipped_geometry_id;
|
m_forward_edge_id_to_zipped_index_map[f_edge_id] = zipped_geometry_id;
|
||||||
m_reverse_edge_id_to_zipped_index_map[r_edge_id] = zipped_geometry_id;
|
m_reverse_edge_id_to_zipped_index_map[r_edge_id] = zipped_geometry_id;
|
||||||
|
|
||||||
segment_data.index.emplace_back(segment_data.nodes.size());
|
segment_data->index.emplace_back(segment_data->nodes.size());
|
||||||
|
|
||||||
const auto &first_node = reverse_bucket.back();
|
const auto &first_node = reverse_bucket.back();
|
||||||
|
|
||||||
segment_data.nodes.emplace_back(first_node.node_id);
|
segment_data->nodes.emplace_back(first_node.node_id);
|
||||||
segment_data.fwd_weights.emplace_back(INVALID_EDGE_WEIGHT);
|
segment_data->fwd_weights.emplace_back(INVALID_EDGE_WEIGHT);
|
||||||
segment_data.rev_weights.emplace_back(first_node.weight);
|
segment_data->rev_weights.emplace_back(first_node.weight);
|
||||||
segment_data.fwd_durations.emplace_back(INVALID_EDGE_WEIGHT);
|
segment_data->fwd_durations.emplace_back(INVALID_EDGE_WEIGHT);
|
||||||
segment_data.rev_durations.emplace_back(first_node.duration);
|
segment_data->rev_durations.emplace_back(first_node.duration);
|
||||||
|
|
||||||
for (std::size_t i = 0; i < forward_bucket.size() - 1; ++i)
|
for (std::size_t i = 0; i < forward_bucket.size() - 1; ++i)
|
||||||
{
|
{
|
||||||
@ -250,20 +251,20 @@ unsigned CompressedEdgeContainer::ZipEdges(const EdgeID f_edge_id, const EdgeID
|
|||||||
|
|
||||||
BOOST_ASSERT(fwd_node.node_id == rev_node.node_id);
|
BOOST_ASSERT(fwd_node.node_id == rev_node.node_id);
|
||||||
|
|
||||||
segment_data.nodes.emplace_back(fwd_node.node_id);
|
segment_data->nodes.emplace_back(fwd_node.node_id);
|
||||||
segment_data.fwd_weights.emplace_back(fwd_node.weight);
|
segment_data->fwd_weights.emplace_back(fwd_node.weight);
|
||||||
segment_data.rev_weights.emplace_back(rev_node.weight);
|
segment_data->rev_weights.emplace_back(rev_node.weight);
|
||||||
segment_data.fwd_durations.emplace_back(fwd_node.duration);
|
segment_data->fwd_durations.emplace_back(fwd_node.duration);
|
||||||
segment_data.rev_durations.emplace_back(rev_node.duration);
|
segment_data->rev_durations.emplace_back(rev_node.duration);
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto &last_node = forward_bucket.back();
|
const auto &last_node = forward_bucket.back();
|
||||||
|
|
||||||
segment_data.nodes.emplace_back(last_node.node_id);
|
segment_data->nodes.emplace_back(last_node.node_id);
|
||||||
segment_data.fwd_weights.emplace_back(last_node.weight);
|
segment_data->fwd_weights.emplace_back(last_node.weight);
|
||||||
segment_data.rev_weights.emplace_back(INVALID_EDGE_WEIGHT);
|
segment_data->rev_weights.emplace_back(INVALID_EDGE_WEIGHT);
|
||||||
segment_data.fwd_durations.emplace_back(last_node.duration);
|
segment_data->fwd_durations.emplace_back(last_node.duration);
|
||||||
segment_data.rev_durations.emplace_back(INVALID_EDGE_WEIGHT);
|
segment_data->rev_durations.emplace_back(INVALID_EDGE_WEIGHT);
|
||||||
|
|
||||||
return zipped_geometry_id;
|
return zipped_geometry_id;
|
||||||
}
|
}
|
||||||
@ -327,7 +328,7 @@ NodeID CompressedEdgeContainer::GetLastEdgeSourceID(const EdgeID edge_id) const
|
|||||||
return bucket[bucket.size() - 2].node_id;
|
return bucket[bucket.size() - 2].node_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
SegmentDataContainer CompressedEdgeContainer::ToSegmentData()
|
std::unique_ptr<SegmentDataContainer> CompressedEdgeContainer::ToSegmentData()
|
||||||
{
|
{
|
||||||
return std::move(segment_data);
|
return std::move(segment_data);
|
||||||
}
|
}
|
||||||
|
@ -514,7 +514,7 @@ Extractor::BuildEdgeExpandedGraph(ScriptingEnvironment &scripting_environment,
|
|||||||
});
|
});
|
||||||
|
|
||||||
WriteTurnLaneData(config.turn_lane_descriptions_file_name);
|
WriteTurnLaneData(config.turn_lane_descriptions_file_name);
|
||||||
io::write(config.geometry_output_path, compressed_edge_container.ToSegmentData());
|
io::write(config.geometry_output_path, *compressed_edge_container.ToSegmentData());
|
||||||
|
|
||||||
edge_based_graph_factory.GetEdgeBasedEdges(edge_based_edge_list);
|
edge_based_graph_factory.GetEdgeBasedEdges(edge_based_edge_list);
|
||||||
edge_based_graph_factory.GetEdgeBasedNodes(node_based_edge_list);
|
edge_based_graph_factory.GetEdgeBasedNodes(node_based_edge_list);
|
||||||
|
@ -43,8 +43,6 @@ StorageConfig::StorageConfig(const boost::filesystem::path &base)
|
|||||||
|
|
||||||
bool StorageConfig::IsValid() const
|
bool StorageConfig::IsValid() const
|
||||||
{
|
{
|
||||||
const constexpr auto num_files = 15;
|
|
||||||
|
|
||||||
// Common files
|
// Common files
|
||||||
if (!CheckFileList({ram_index_path,
|
if (!CheckFileList({ram_index_path,
|
||||||
file_index_path,
|
file_index_path,
|
||||||
|
@ -5,19 +5,21 @@
|
|||||||
#include <boost/fusion/adapted/std_pair.hpp>
|
#include <boost/fusion/adapted/std_pair.hpp>
|
||||||
#include <boost/fusion/include/adapt_adt.hpp>
|
#include <boost/fusion/include/adapt_adt.hpp>
|
||||||
|
|
||||||
|
// clang-format off
|
||||||
BOOST_FUSION_ADAPT_STRUCT(osrm::updater::Segment,
|
BOOST_FUSION_ADAPT_STRUCT(osrm::updater::Segment,
|
||||||
(decltype(osrm::updater::Segment::from),
|
(decltype(osrm::updater::Segment::from), from)
|
||||||
from)(decltype(osrm::updater::Segment::to), to))
|
(decltype(osrm::updater::Segment::to), to))
|
||||||
BOOST_FUSION_ADAPT_STRUCT(osrm::updater::SpeedSource,
|
BOOST_FUSION_ADAPT_STRUCT(osrm::updater::SpeedSource,
|
||||||
(decltype(osrm::updater::SpeedSource::speed),
|
(decltype(osrm::updater::SpeedSource::speed), speed)
|
||||||
speed)(decltype(osrm::updater::SpeedSource::weight), weight))
|
(decltype(osrm::updater::SpeedSource::weight), weight))
|
||||||
BOOST_FUSION_ADAPT_STRUCT(osrm::updater::Turn,
|
BOOST_FUSION_ADAPT_STRUCT(osrm::updater::Turn,
|
||||||
(decltype(osrm::updater::Turn::from),
|
(decltype(osrm::updater::Turn::from), from)
|
||||||
from)(decltype(osrm::updater::Turn::via),
|
(decltype(osrm::updater::Turn::via), via)
|
||||||
via)(decltype(osrm::updater::Turn::to), to))
|
(decltype(osrm::updater::Turn::to), to))
|
||||||
BOOST_FUSION_ADAPT_STRUCT(osrm::updater::PenaltySource,
|
BOOST_FUSION_ADAPT_STRUCT(osrm::updater::PenaltySource,
|
||||||
(decltype(osrm::updater::PenaltySource::duration),
|
(decltype(osrm::updater::PenaltySource::duration), duration)
|
||||||
duration)(decltype(osrm::updater::PenaltySource::weight), weight))
|
(decltype(osrm::updater::PenaltySource::weight), weight))
|
||||||
|
// clang-format on
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
namespace qi = boost::spirit::qi;
|
namespace qi = boost::spirit::qi;
|
||||||
@ -31,16 +33,19 @@ namespace csv
|
|||||||
{
|
{
|
||||||
SegmentLookupTable readSegmentValues(const std::vector<std::string> &paths)
|
SegmentLookupTable readSegmentValues(const std::vector<std::string> &paths)
|
||||||
{
|
{
|
||||||
return CSVFilesParser<Segment, SpeedSource>(
|
CSVFilesParser<Segment, SpeedSource> parser(
|
||||||
1, qi::ulong_long >> ',' >> qi::ulong_long, qi::uint_ >> -(',' >> qi::double_))(paths);
|
1, qi::ulong_long >> ',' >> qi::ulong_long, qi::uint_ >> -(',' >> qi::double_));
|
||||||
|
|
||||||
|
return parser(paths);
|
||||||
}
|
}
|
||||||
|
|
||||||
TurnLookupTable readTurnValues(const std::vector<std::string> &paths)
|
TurnLookupTable readTurnValues(const std::vector<std::string> &paths)
|
||||||
{
|
{
|
||||||
return CSVFilesParser<Turn, PenaltySource>(1,
|
CSVFilesParser<Turn, PenaltySource> parser(1,
|
||||||
qi::ulong_long >> ',' >> qi::ulong_long >> ',' >>
|
qi::ulong_long >> ',' >> qi::ulong_long >> ',' >>
|
||||||
qi::ulong_long,
|
qi::ulong_long,
|
||||||
qi::double_ >> -(',' >> qi::double_))(paths);
|
qi::double_ >> -(',' >> qi::double_));
|
||||||
|
return parser(paths);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user