Libosmium  2.2.0
Fast and flexible C++ library for working with OpenStreetMap data
Public Member Functions | Private Types | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
osmium::area::MultipolygonCollector< TAssembler > Class Template Reference

#include <multipolygon_collector.hpp>

Inheritance diagram for osmium::area::MultipolygonCollector< TAssembler >:
Inheritance graph
[legend]
Collaboration diagram for osmium::area::MultipolygonCollector< TAssembler >:
Collaboration graph
[legend]

Public Member Functions

 MultipolygonCollector (const assembler_config_type &assembler_config)
 
bool keep_relation (const osmium::Relation &relation) const
 
bool keep_member (const osmium::relations::RelationMeta &, const osmium::RelationMember &member) const
 
void way_not_in_any_relation (const osmium::Way &way)
 
void complete_relation (osmium::relations::RelationMeta &relation_meta)
 
void flush ()
 
osmium::memory::Buffer read ()
 
- Public Member Functions inherited from osmium::relations::Collector< MultipolygonCollector< TAssembler >, false, true, false >
 Collector ()
 
uint64_t used_memory () const
 
HandlerPass2 & handler (const callback_func_type &callback=nullptr)
 
osmium::memory::Buffermembers_buffer ()
 
size_t get_offset (osmium::item_type type, osmium::object_id_type id)
 
void read_relations (TIter begin, TIter end)
 
void read_relations (TSource &source)
 
void moving_in_buffer (size_t old_offset, size_t new_offset)
 
void possibly_purge_removed_members ()
 
std::vector< const osmium::Relation * > get_incomplete_relations () const
 

Private Types

typedef osmium::relations::Collector< MultipolygonCollector< TAssembler >, false, true, false > collector_type
 
typedef TAssembler::config_type assembler_config_type
 

Private Member Functions

void flush_output_buffer ()
 
void possibly_flush_output_buffer ()
 

Private Attributes

const assembler_config_type m_assembler_config
 
osmium::memory::Buffer m_output_buffer
 

Static Private Attributes

static constexpr size_t initial_output_buffer_size = 1024 * 1024
 
static constexpr size_t max_buffer_size_for_flush = 100 * 1024
 

Additional Inherited Members

- Public Types inherited from osmium::relations::Collector< MultipolygonCollector< TAssembler >, false, true, false >
typedef std::function< void(osmium::memory::Buffer &&)> callback_func_type
 
- Public Attributes inherited from osmium::relations::Collector< MultipolygonCollector< TAssembler >, false, true, false >
HandlerPass2 m_handler_pass2
 
osmium::memory::Buffer m_relations_buffer
 
osmium::memory::Buffer m_members_buffer
 
std::vector< RelationMeta > m_relations
 Vector with all relations we are interested in. More...
 
std::vector< MemberMeta > m_member_meta [3]
 
int m_count_complete
 
callback_func_type m_callback
 
- Static Public Attributes inherited from osmium::relations::Collector< MultipolygonCollector< TAssembler >, false, true, false >
static constexpr size_t initial_buffer_size
 
- Protected Member Functions inherited from osmium::relations::Collector< MultipolygonCollector< TAssembler >, false, true, false >
std::vector< MemberMeta > & member_meta (const item_type type)
 
callback_func_type callback ()
 
const std::vector< RelationMeta > & relations () const
 
bool keep_relation (const osmium::Relation &) const
 
bool keep_member (const osmium::relations::RelationMeta &, const osmium::RelationMember &) const
 
void node_not_in_any_relation (const osmium::Node &)
 
void way_not_in_any_relation (const osmium::Way &)
 
void relation_not_in_any_relation (const osmium::Relation &)
 
void flush ()
 
void clean_assembled_relations ()
 
const osmium::Relationget_relation (size_t offset) const
 
const osmium::Relationget_relation (const RelationMeta &relation_meta) const
 
osmium::OSMObjectget_member (size_t offset) const
 
void add_relation (const osmium::Relation &relation)
 
void sort_member_meta ()
 

Detailed Description

template<class TAssembler>
class osmium::area::MultipolygonCollector< TAssembler >

This class collects all data needed for creating areas from relations tagged with type=multipolygon or type=boundary. Most of its functionality is derived from the parent class osmium::relations::Collector.

The actual assembling of the areas is done by the assembler class given as template argument.

Template Parameters
TAssemblerMultipolygon Assembler class.

Member Typedef Documentation

template<class TAssembler>
typedef TAssembler::config_type osmium::area::MultipolygonCollector< TAssembler >::assembler_config_type
private
template<class TAssembler>
typedef osmium::relations::Collector<MultipolygonCollector<TAssembler>, false, true, false> osmium::area::MultipolygonCollector< TAssembler >::collector_type
private

Constructor & Destructor Documentation

template<class TAssembler>
osmium::area::MultipolygonCollector< TAssembler >::MultipolygonCollector ( const assembler_config_type assembler_config)
inlineexplicit

Member Function Documentation

template<class TAssembler>
void osmium::area::MultipolygonCollector< TAssembler >::complete_relation ( osmium::relations::RelationMeta &  relation_meta)
inline
template<class TAssembler>
void osmium::area::MultipolygonCollector< TAssembler >::flush ( )
inline
template<class TAssembler>
void osmium::area::MultipolygonCollector< TAssembler >::flush_output_buffer ( )
inlineprivate
template<class TAssembler>
bool osmium::area::MultipolygonCollector< TAssembler >::keep_member ( const osmium::relations::RelationMeta &  ,
const osmium::RelationMember member 
) const
inline

Overwritten from the base class.

template<class TAssembler>
bool osmium::area::MultipolygonCollector< TAssembler >::keep_relation ( const osmium::Relation relation) const
inline

We are interested in all relations tagged with type=multipolygon or type=boundary.

Overwritten from the base class.

template<class TAssembler>
void osmium::area::MultipolygonCollector< TAssembler >::possibly_flush_output_buffer ( )
inlineprivate
template<class TAssembler>
osmium::memory::Buffer osmium::area::MultipolygonCollector< TAssembler >::read ( )
inline
template<class TAssembler>
void osmium::area::MultipolygonCollector< TAssembler >::way_not_in_any_relation ( const osmium::Way way)
inline

This is called when a way is not in any multipolygon relation.

Overwritten from the base class.

Member Data Documentation

template<class TAssembler>
constexpr size_t osmium::area::MultipolygonCollector< TAssembler >::initial_output_buffer_size = 1024 * 1024
staticprivate
template<class TAssembler>
const assembler_config_type osmium::area::MultipolygonCollector< TAssembler >::m_assembler_config
private
template<class TAssembler>
osmium::memory::Buffer osmium::area::MultipolygonCollector< TAssembler >::m_output_buffer
private
template<class TAssembler>
constexpr size_t osmium::area::MultipolygonCollector< TAssembler >::max_buffer_size_for_flush = 100 * 1024
staticprivate

The documentation for this class was generated from the following file: