Optimize RestrictionParser performance
This commit is contained in:
parent
cf223ef516
commit
1d86602cee
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
#include <boost/optional/optional.hpp>
|
#include <boost/optional/optional.hpp>
|
||||||
|
|
||||||
#include <osmium/tags/filter.hpp>
|
#include <osmium/tags/tags_filter.hpp>
|
||||||
#include <set>
|
#include <set>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
@ -54,7 +54,7 @@ class RestrictionParser
|
|||||||
bool use_turn_restrictions;
|
bool use_turn_restrictions;
|
||||||
bool parse_conditionals;
|
bool parse_conditionals;
|
||||||
std::set<std::string> restrictions;
|
std::set<std::string> restrictions;
|
||||||
osmium::tags::KeyFilter filter;
|
osmium::TagsFilter filter;
|
||||||
};
|
};
|
||||||
} // namespace extractor
|
} // namespace extractor
|
||||||
} // namespace osrm
|
} // namespace osrm
|
||||||
|
|||||||
@ -11,6 +11,7 @@
|
|||||||
#include <osmium/osm.hpp>
|
#include <osmium/osm.hpp>
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
#include <osmium/tags/tags_filter.hpp>
|
||||||
|
|
||||||
namespace osrm
|
namespace osrm
|
||||||
{
|
{
|
||||||
@ -40,13 +41,13 @@ RestrictionParser::RestrictionParser(bool use_turn_restrictions_,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
filter.add(true, "restriction");
|
filter.add_rule(true, "restriction");
|
||||||
if (parse_conditionals)
|
if (parse_conditionals)
|
||||||
{
|
{
|
||||||
filter.add(true, "restriction:conditional");
|
filter.add_rule(true, "restriction:conditional");
|
||||||
for (const auto &namespaced : restrictions_)
|
for (const auto &namespaced : restrictions_)
|
||||||
{
|
{
|
||||||
filter.add(true, "restriction:" + namespaced + ":conditional");
|
filter.add_rule(true, "restriction:" + namespaced + ":conditional");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -54,7 +55,7 @@ RestrictionParser::RestrictionParser(bool use_turn_restrictions_,
|
|||||||
// Include restriction:{mode}:conditional if flagged
|
// Include restriction:{mode}:conditional if flagged
|
||||||
for (const auto &namespaced : restrictions_)
|
for (const auto &namespaced : restrictions_)
|
||||||
{
|
{
|
||||||
filter.add(true, "restriction:" + namespaced);
|
filter.add_rule(true, "restriction:" + namespaced);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -77,8 +78,8 @@ RestrictionParser::TryParse(const osmium::Relation &relation) const
|
|||||||
|
|
||||||
const osmium::TagList &tag_list = relation.tags();
|
const osmium::TagList &tag_list = relation.tags();
|
||||||
|
|
||||||
osmium::tags::KeyFilter::iterator fi_begin(filter, tag_list.begin(), tag_list.end());
|
osmium::TagsFilter::iterator fi_begin(filter, tag_list.begin(), tag_list.end());
|
||||||
osmium::tags::KeyFilter::iterator fi_end(filter, tag_list.end(), tag_list.end());
|
osmium::TagsFilter::iterator fi_end(filter, tag_list.end(), tag_list.end());
|
||||||
|
|
||||||
// if it's not a restriction, continue;
|
// if it's not a restriction, continue;
|
||||||
if (fi_begin == fi_end)
|
if (fi_begin == fi_end)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user