Allow multiple GeoJSON files
This commit is contained in:
parent
fb02a4c674
commit
fc39e0ce1a
@ -79,7 +79,7 @@ struct ExtractorConfig final : storage::IOConfig
|
||||
|
||||
boost::filesystem::path input_path;
|
||||
boost::filesystem::path profile_path;
|
||||
boost::filesystem::path location_dependent_data_path;
|
||||
std::vector<boost::filesystem::path> location_dependent_data_paths;
|
||||
|
||||
unsigned requested_num_threads;
|
||||
unsigned small_component_size;
|
||||
|
@ -30,11 +30,13 @@ struct LocationDependentData
|
||||
using property_t = boost::variant<boost::blank, double, std::string, bool>;
|
||||
using properties_t = std::unordered_map<std::string, property_t>;
|
||||
|
||||
LocationDependentData(const boost::filesystem::path &file_path);
|
||||
LocationDependentData(const std::vector<boost::filesystem::path> &file_paths);
|
||||
|
||||
sol::table operator()(sol::state &state, const osmium::Way &way) const;
|
||||
|
||||
private:
|
||||
void loadLocationDependentData(const boost::filesystem::path &file_path);
|
||||
|
||||
rtree_t rtree;
|
||||
std::vector<std::pair<polygon_t, properties_t>> polygons;
|
||||
};
|
||||
|
@ -68,8 +68,9 @@ class Sol2ScriptingEnvironment final : public ScriptingEnvironment
|
||||
static const constexpr int SUPPORTED_MIN_API_VERSION = 0;
|
||||
static const constexpr int SUPPORTED_MAX_API_VERSION = 3;
|
||||
|
||||
explicit Sol2ScriptingEnvironment(const std::string &file_name,
|
||||
const boost::filesystem::path &location_dependent_data_path);
|
||||
explicit Sol2ScriptingEnvironment(
|
||||
const std::string &file_name,
|
||||
const std::vector<boost::filesystem::path> &location_dependent_data_paths);
|
||||
~Sol2ScriptingEnvironment() override = default;
|
||||
|
||||
const ProfileProperties &GetProfileProperties() override;
|
||||
|
@ -18,7 +18,15 @@ namespace osrm
|
||||
namespace extractor
|
||||
{
|
||||
|
||||
LocationDependentData::LocationDependentData(const boost::filesystem::path &file_path)
|
||||
LocationDependentData::LocationDependentData(const std::vector<boost::filesystem::path> &file_paths)
|
||||
{
|
||||
for (const auto &path : file_paths)
|
||||
{
|
||||
loadLocationDependentData(path);
|
||||
}
|
||||
}
|
||||
|
||||
void LocationDependentData::loadLocationDependentData(const boost::filesystem::path &file_path)
|
||||
{
|
||||
if (file_path.empty())
|
||||
return;
|
||||
|
@ -81,8 +81,9 @@ template <class T> double lonToDouble(T const &object)
|
||||
}
|
||||
|
||||
Sol2ScriptingEnvironment::Sol2ScriptingEnvironment(
|
||||
const std::string &file_name, const boost::filesystem::path &location_dependent_data_path)
|
||||
: file_name(file_name), location_dependent_data(location_dependent_data_path)
|
||||
const std::string &file_name,
|
||||
const std::vector<boost::filesystem::path> &location_dependent_data_paths)
|
||||
: file_name(file_name), location_dependent_data(location_dependent_data_paths)
|
||||
{
|
||||
util::Log() << "Using script " << file_name;
|
||||
}
|
||||
|
@ -11,7 +11,7 @@ namespace osrm
|
||||
void extract(const extractor::ExtractorConfig &config)
|
||||
{
|
||||
extractor::Sol2ScriptingEnvironment scripting_environment(config.profile_path.string(),
|
||||
config.location_dependent_data_path);
|
||||
config.location_dependent_data_paths);
|
||||
extractor::Extractor(config).run(scripting_environment);
|
||||
}
|
||||
|
||||
|
@ -63,8 +63,8 @@ return_code parseArguments(int argc,
|
||||
->default_value(false),
|
||||
"Save conditional restrictions found during extraction to disk for use "
|
||||
"during contraction")("location-dependent-data",
|
||||
boost::program_options::value<boost::filesystem::path>(
|
||||
&extractor_config.location_dependent_data_path)
|
||||
boost::program_options::value<std::vector<boost::filesystem::path>>(
|
||||
&extractor_config.location_dependent_data_paths)
|
||||
->composing(),
|
||||
"GeoJSON files with location-dependent data");
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user