1 #ifndef OSMIUM_AREA_MULTIPOLYGON_COLLECTOR_HPP 2 #define OSMIUM_AREA_MULTIPOLYGON_COLLECTOR_HPP 74 template <
typename TAssembler>
123 const char*
type = relation.tags().get_value_by_key(
"type");
130 return (!std::strcmp(
type,
"multipolygon")) || (!std::strcmp(
type,
"boundary"));
149 if (way.nodes().size() <= 3) {
153 if (!way.nodes().front().location() || !way.nodes().back().location()) {
156 if (way.ends_have_same_location()) {
172 std::vector<const osmium::Way*> ways;
173 ways.reserve(relation.members().size());
174 for (
const auto& member : relation.members()) {
175 if (member.ref() != 0) {
176 const size_t offset = this->
get_offset(member.type(), member.ref());
210 #endif // OSMIUM_AREA_MULTIPOLYGON_COLLECTOR_HPP
const area_stats & stats() const noexcept
Definition: multipolygon_collector.hpp:112
osmium::memory::Buffer & members_buffer()
Definition: collector.hpp:481
void possibly_flush_output_buffer()
Definition: multipolygon_collector.hpp:98
bool keep_relation(const osmium::Relation &relation) const
Definition: multipolygon_collector.hpp:122
type
Definition: entity_bits.hpp:63
static constexpr size_t initial_output_buffer_size
Definition: multipolygon_collector.hpp:86
Definition: relation.hpp:168
MultipolygonCollector(const assembler_config_type &assembler_config)
Definition: multipolygon_collector.hpp:106
static constexpr size_t max_buffer_size_for_flush
Definition: multipolygon_collector.hpp:87
Definition: entity_bits.hpp:72
void swap(Buffer &lhs, Buffer &rhs)
Definition: buffer.hpp:755
size_t get_offset(osmium::item_type type, osmium::object_id_type id)
Definition: collector.hpp:511
std::size_t committed() const noexcept
Definition: buffer.hpp:261
void way_not_in_any_relation(const osmium::Way &way)
Definition: multipolygon_collector.hpp:147
Definition: relation.hpp:57
void flush()
Definition: multipolygon_collector.hpp:191
Namespace for everything in the Osmium library.
Definition: assembler.hpp:53
Definition: collector.hpp:97
T & get(const std::size_t offset) const
Definition: buffer.hpp:398
Definition: location.hpp:53
const assembler_config_type m_assembler_config
Definition: multipolygon_collector.hpp:80
osmium::memory::Buffer read()
Definition: multipolygon_collector.hpp:195
void complete_relation(osmium::relations::RelationMeta &relation_meta)
Definition: multipolygon_collector.hpp:168
item_type type() const noexcept
Definition: relation.hpp:132
Definition: multipolygon_collector.hpp:75
osmium::memory::Buffer m_output_buffer
Definition: multipolygon_collector.hpp:82
typename TAssembler::config_type assembler_config_type
Definition: multipolygon_collector.hpp:79
callback_func_type callback()
Definition: collector.hpp:219
Definition: buffer.hpp:97
bool keep_member(const osmium::relations::RelationMeta &, const osmium::RelationMember &member) const
Definition: multipolygon_collector.hpp:136
const osmium::Relation & get_relation(size_t offset) const
Definition: collector.hpp:298
area_stats m_stats
Definition: multipolygon_collector.hpp:84
void flush_output_buffer()
Definition: multipolygon_collector.hpp:89