Renumber node IDs in .osrm.maneuver_overrides

This commit is contained in:
Michael Krasnyk
2018-02-22 10:49:01 +01:00
parent 5acf660f37
commit 83588fd00f
7 changed files with 87 additions and 22 deletions
+3 -5
View File
@@ -1106,11 +1106,9 @@ void EdgeBasedGraphFactory::GenerateEdgeExpandedEdges(
std::sort(storage_maneuver_overrides.begin(),
storage_maneuver_overrides.end(),
[](const auto &a, const auto &b) { return a.start_node < b.start_node; });
// write conditional turn penalties into the restrictions file
storage::io::FileWriter writer(maneuver_overrides_filename,
storage::io::FileWriter::GenerateFingerprint);
extractor::serialization::write(
writer, storage_maneuver_overrides, maneuver_override_sequences);
files::writeManeuverOverrides(
maneuver_overrides_filename, storage_maneuver_overrides, maneuver_override_sequences);
}
util::Log() << "done.";
+9
View File
@@ -145,6 +145,15 @@ int Partitioner::Run(const PartitionerConfig &config)
renumber(node_data, permutation);
extractor::files::writeNodeData(config.GetPath(".osrm.ebg_nodes"), node_data);
}
{
const auto &filename = config.GetPath(".osrm.maneuver_overrides");
std::vector<extractor::StorageManeuverOverride> maneuver_overrides;
std::vector<NodeID> node_sequences;
extractor::files::readManeuverOverrides(filename, maneuver_overrides, node_sequences);
renumber(maneuver_overrides, permutation);
renumber(node_sequences, permutation);
extractor::files::writeManeuverOverrides(filename, maneuver_overrides, node_sequences);
}
if (boost::filesystem::exists(config.GetPath(".osrm.hsgr")))
{
util::Log(logWARNING) << "Found existing .osrm.hsgr file, removing. You need to re-run "
+13 -9
View File
@@ -445,10 +445,11 @@ void Storage::PopulateLayout(DataLayout &layout)
{
io::FileReader maneuver_overrides_file(config.GetPath(".osrm.maneuver_overrides"),
io::FileReader::VerifyFingerprint);
const auto number_of_overrides = maneuver_overrides_file.ReadElementCount64();
const auto number_of_overrides =
maneuver_overrides_file.ReadVectorSize<extractor::StorageManeuverOverride>();
layout.SetBlockSize<extractor::StorageManeuverOverride>(DataLayout::MANEUVER_OVERRIDES,
number_of_overrides);
const auto number_of_nodes = maneuver_overrides_file.ReadElementCount64();
const auto number_of_nodes = maneuver_overrides_file.ReadVectorSize<NodeID>();
layout.SetBlockSize<NodeID>(DataLayout::MANEUVER_OVERRIDE_NODE_SEQUENCES, number_of_nodes);
}
@@ -1089,18 +1090,21 @@ void Storage::PopulateData(const DataLayout &layout, char *memory_ptr)
// load maneuver overrides
{
io::FileReader maneuver_overrides_file(config.GetPath(".osrm.maneuver_overrides"),
io::FileReader::VerifyFingerprint);
const auto number_of_overrides = maneuver_overrides_file.ReadElementCount64();
const auto number_of_nodes = maneuver_overrides_file.ReadElementCount64();
const auto maneuver_overrides_ptr =
layout.GetBlockPtr<extractor::StorageManeuverOverride, true>(
memory_ptr, DataLayout::MANEUVER_OVERRIDES);
maneuver_overrides_file.ReadInto(maneuver_overrides_ptr, number_of_overrides);
const auto maneuver_override_node_sequences_ptr = layout.GetBlockPtr<NodeID, true>(
memory_ptr, DataLayout::MANEUVER_OVERRIDE_NODE_SEQUENCES);
maneuver_overrides_file.ReadInto(maneuver_override_node_sequences_ptr, number_of_nodes);
util::vector_view<extractor::StorageManeuverOverride> maneuver_overrides(
maneuver_overrides_ptr, layout.num_entries[DataLayout::MANEUVER_OVERRIDES]);
util::vector_view<NodeID> maneuver_override_node_sequences(
maneuver_override_node_sequences_ptr,
layout.num_entries[DataLayout::MANEUVER_OVERRIDE_NODE_SEQUENCES]);
extractor::files::readManeuverOverrides(config.GetPath(".osrm.maneuver_overrides"),
maneuver_overrides,
maneuver_override_node_sequences);
}
}
}