Libosmium
2.11.0
Fast and flexible C++ library for working with OpenStreetMap data
|
#include <assembler.hpp>
Classes | |
struct | candidate |
struct | MPFilter |
class | rings_stack_element |
struct | slocation |
Public Types | |
using | config_type = osmium::area::AssemblerConfig |
Public Member Functions | |
Assembler (const config_type &config) | |
~Assembler () noexcept=default | |
void | operator() (const osmium::Way &way, osmium::memory::Buffer &out_buffer) |
OSMIUM_DEPRECATED void | operator() (const osmium::Relation &relation, const std::vector< size_t > &members, const osmium::memory::Buffer &in_buffer, osmium::memory::Buffer &out_buffer) |
void | operator() (const osmium::Relation &relation, const std::vector< const osmium::Way *> &members, osmium::memory::Buffer &out_buffer) |
const osmium::area::area_stats & | stats () const noexcept |
Private Types | |
using | open_ring_its_type = detail::open_ring_its_type |
using | location_to_ring_map = detail::location_to_ring_map |
using | rings_stack = std::vector< rings_stack_element > |
Static Private Member Functions | |
static const MPFilter & | filter () noexcept |
static void | copy_tags_without_type (osmium::builder::AreaBuilder &builder, const osmium::TagList &tags) |
template<typename TBuilder > | |
static void | build_ring_from_proto_ring (osmium::builder::AreaBuilder &builder, const detail::ProtoRing &ring) |
Private Attributes | |
const AssemblerConfig & | m_config |
osmium::area::detail::SegmentList | m_segment_list |
std::list< detail::ProtoRing > | m_rings |
std::vector< slocation > | m_locations |
std::vector< Location > | m_split_locations |
area_stats | m_stats |
size_t | m_num_members = 0 |
Assembles area objects from closed ways or multipolygon relations and their members.
|
private |
|
private |
|
private |
|
inlineexplicit |
|
defaultnoexcept |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
Append each outer ring together with its inner rings to the area in the buffer.
|
inlineprivate |
|
inlineprivate |
|
inlinestaticprivate |
|
inlineprivate |
|
inlinestaticprivate |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
Create rings from segments.
|
inlineprivate |
|
inlineprivate |
|
inlineprivatenoexcept |
|
inlinestaticprivatenoexcept |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
Finds all locations where more than two segments meet. If there are any open rings found along the way, they are reported and the function returns false.
|
inlineprivate |
|
inlineprivatenoexcept |
|
inlineprivate |
If there are multiple open rings and mltiple ways to join them, this function is called. It will take the first open ring and try recursively all ways of closing it. Of all the candidates the one with the smallest area is chosen and closed. If it can't close this ring, an error is reported and the function returns false.
|
inlineprivate |
|
inline |
Assemble an area from the given way. The resulting area is put into the out_buffer.
|
inline |
Assemble an area from the given relation and its members. All members are to be found in the in_buffer at the offsets given by the members parameter. The resulting area is put into the out_buffer.
|
inline |
Assemble an area from the given relation and its members. The resulting area is put into the out_buffer.
|
inlineprivate |
|
inlineprivatenoexcept |
|
inlinenoexcept |
Get statistics from assembler. Call this after running the assembler to get statistics and data about errors.
|
inlineprivatenoexcept |
|
inlineprivate |
|
inlineprivate |
Checks if any ways were completely removed in the erase_duplicate_segments step.
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |