Fix the propfile properties reading/writing

This commit is contained in:
Patrick Niklaus 2017-06-16 09:30:37 +00:00 committed by Patrick Niklaus
parent 383640caaf
commit 4f13208ce8
5 changed files with 34 additions and 15 deletions

View File

@ -70,8 +70,6 @@ class Extractor
util::DeallocatingVector<EdgeBasedEdge> &edge_based_edge_list, util::DeallocatingVector<EdgeBasedEdge> &edge_based_edge_list,
const std::string &intersection_class_output_file, const std::string &intersection_class_output_file,
std::vector<TurnRestriction> &turn_restrictions); std::vector<TurnRestriction> &turn_restrictions);
void WriteProfileProperties(const std::string &output_path,
const ProfileProperties &properties) const;
void FindComponents(unsigned max_edge_id, void FindComponents(unsigned max_edge_id,
const util::DeallocatingVector<EdgeBasedEdge> &input_edge_list, const util::DeallocatingVector<EdgeBasedEdge> &input_edge_list,
const std::vector<EdgeBasedNodeSegment> &input_node_segments, const std::vector<EdgeBasedNodeSegment> &input_node_segments,

View File

@ -6,6 +6,7 @@
#include "extractor/node_data_container.hpp" #include "extractor/node_data_container.hpp"
#include "extractor/serialization.hpp" #include "extractor/serialization.hpp"
#include "extractor/turn_data_container.hpp" #include "extractor/turn_data_container.hpp"
#include "extractor/profile_properties.hpp"
#include "util/coordinate.hpp" #include "util/coordinate.hpp"
#include "util/packed_vector.hpp" #include "util/packed_vector.hpp"
@ -20,6 +21,25 @@ namespace extractor
namespace files namespace files
{ {
// reads .osrm.properties
inline void readProfileProperties(const boost::filesystem::path &path, ProfileProperties &properties)
{
const auto fingerprint = storage::io::FileReader::VerifyFingerprint;
storage::io::FileReader reader{path, fingerprint};
serialization::read(reader, properties);
}
// writes .osrm.properties
inline void writeProfileProperties(const boost::filesystem::path &path,
const ProfileProperties &properties)
{
const auto fingerprint = storage::io::FileWriter::GenerateFingerprint;
storage::io::FileWriter writer{path, fingerprint};
serialization::write(writer, properties);
}
template <typename EdgeBasedEdgeVector> template <typename EdgeBasedEdgeVector>
void writeEdgeBasedGraph(const boost::filesystem::path &path, void writeEdgeBasedGraph(const boost::filesystem::path &path,
EdgeID const max_edge_id, EdgeID const max_edge_id,

View File

@ -7,6 +7,7 @@
#include "extractor/restriction.hpp" #include "extractor/restriction.hpp"
#include "extractor/segment_data_container.hpp" #include "extractor/segment_data_container.hpp"
#include "extractor/turn_data_container.hpp" #include "extractor/turn_data_container.hpp"
#include "extractor/profile_properties.hpp"
#include "storage/io.hpp" #include "storage/io.hpp"
#include "storage/serialization.hpp" #include "storage/serialization.hpp"
@ -20,6 +21,17 @@ namespace extractor
namespace serialization namespace serialization
{ {
// read/write for properties file
inline void read(storage::io::FileReader &reader, ProfileProperties &properties)
{
reader.ReadInto(properties);
}
inline void write(storage::io::FileWriter &writer, const ProfileProperties &properties)
{
writer.WriteFrom(properties);
}
// read/write for datasources file // read/write for datasources file
inline void read(storage::io::FileReader &reader, Datasources &sources) inline void read(storage::io::FileReader &reader, Datasources &sources)
{ {

View File

@ -347,7 +347,7 @@ std::vector<TurnRestriction> Extractor::ParseOSMData(ScriptingEnvironment &scrip
config.restriction_file_name, config.restriction_file_name,
config.names_file_name); config.names_file_name);
WriteProfileProperties(config.profile_properties_output_path, files::writeProfileProperties(config.profile_properties_output_path,
scripting_environment.GetProfileProperties()); scripting_environment.GetProfileProperties());
TIMER_STOP(extracting); TIMER_STOP(extracting);
@ -356,14 +356,6 @@ std::vector<TurnRestriction> Extractor::ParseOSMData(ScriptingEnvironment &scrip
return extraction_containers.unconditional_turn_restrictions; return extraction_containers.unconditional_turn_restrictions;
} }
void Extractor::WriteProfileProperties(const std::string &output_path,
const ProfileProperties &properties) const
{
storage::io::FileWriter file(output_path, storage::io::FileWriter::GenerateFingerprint);
file.WriteOne(properties);
}
void Extractor::FindComponents(unsigned max_edge_id, void Extractor::FindComponents(unsigned max_edge_id,
const util::DeallocatingVector<EdgeBasedEdge> &input_edge_list, const util::DeallocatingVector<EdgeBasedEdge> &input_edge_list,
const std::vector<EdgeBasedNodeSegment> &input_node_segments, const std::vector<EdgeBasedNodeSegment> &input_node_segments,

View File

@ -819,12 +819,9 @@ void Storage::PopulateData(const DataLayout &layout, char *memory_ptr)
// load profile properties // load profile properties
{ {
io::FileReader profile_properties_file(config.properties_path,
io::FileReader::VerifyFingerprint);
const auto profile_properties_ptr = layout.GetBlockPtr<extractor::ProfileProperties, true>( const auto profile_properties_ptr = layout.GetBlockPtr<extractor::ProfileProperties, true>(
memory_ptr, DataLayout::PROPERTIES); memory_ptr, DataLayout::PROPERTIES);
profile_properties_file.ReadInto(profile_properties_ptr, extractor::files::readProfileProperties(config.properties_path, *profile_properties_ptr);
layout.num_entries[DataLayout::PROPERTIES]);
} }
// Load intersection data // Load intersection data