Libosmium
Fast and flexible C++ library for working with OpenStreetMap data
Toggle main menu visibility
Loading...
Searching...
No Matches
include
osmium
area
geom_assembler.hpp
Go to the documentation of this file.
1
#ifndef OSMIUM_AREA_GEOM_ASSEMBLER_HPP
2
#define OSMIUM_AREA_GEOM_ASSEMBLER_HPP
3
4
/*
5
6
This file is part of Osmium (https://osmcode.org/libosmium).
7
8
Copyright 2013-2026 Jochen Topf <jochen@topf.org> and others (see README).
9
10
Boost Software License - Version 1.0 - August 17th, 2003
11
12
Permission is hereby granted, free of charge, to any person or organization
13
obtaining a copy of the software and accompanying documentation covered by
14
this license (the "Software") to use, reproduce, display, distribute,
15
execute, and transmit the Software, and to prepare derivative works of the
16
Software, and to permit third-parties to whom the Software is furnished to
17
do so, all subject to the following:
18
19
The copyright notices in the Software and this entire statement, including
20
the above license grant, this restriction and the following disclaimer,
21
must be included in all copies of the Software, in whole or in part, and
22
all derivative works of the Software, unless such copies or derivative
23
works are solely in the form of machine-executable object code generated by
24
a source language processor.
25
26
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
27
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
28
FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
29
SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
30
FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
31
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
32
DEALINGS IN THE SOFTWARE.
33
34
*/
35
36
#include <
osmium/area/assembler_config.hpp
>
37
#include <osmium/area/detail/basic_assembler.hpp>
38
#include <osmium/area/detail/segment_list.hpp>
39
#include <
osmium/area/stats.hpp
>
40
#include <
osmium/builder/osm_object_builder.hpp
>
41
#include <
osmium/memory/buffer.hpp
>
42
#include <
osmium/osm/relation.hpp
>
43
#include <
osmium/osm/way.hpp
>
44
45
namespace
osmium
{
46
47
namespace
area
{
48
61
class
GeomAssembler
:
public
detail::BasicAssembler {
62
63
public
:
64
65
using
config_type
=
osmium::area::AssemblerConfig
;
66
67
explicit
GeomAssembler
(
const
config_type
&
config
) :
68
detail
::BasicAssembler(
config
) {
69
}
70
79
bool
operator()
(
const
osmium::Way
&
way
, osmium::memory::Buffer& out_buffer) {
80
segment_list().extract_segments_from_way(
config
().problem_reporter, stats().duplicate_nodes,
way
);
81
82
if
(!create_rings()) {
83
return
false
;
84
}
85
86
{
87
osmium::builder::AreaBuilder
builder
{out_buffer};
88
builder
.initialize_from_object(
way
);
89
add_rings_to_area(
builder
);
90
}
91
out_buffer.commit();
92
93
return
true
;
94
}
95
105
bool
operator()
(
const
osmium::Relation
&
relation
,
const
osmium::memory::Buffer& ways_buffer, osmium::memory::Buffer& out_buffer) {
106
for
(
const
auto
&
way
: ways_buffer.select<
osmium::Way
>()) {
107
segment_list().extract_segments_from_way(
config
().problem_reporter, stats().duplicate_nodes,
way
);
108
}
109
110
if
(!create_rings()) {
111
return
false
;
112
}
113
114
{
115
osmium::builder::AreaBuilder
builder
{out_buffer};
116
builder
.initialize_from_object(
relation
);
117
add_rings_to_area(
builder
);
118
}
119
out_buffer.commit();
120
121
return
true
;
122
}
123
124
};
// class GeomAssembler
125
126
}
// namespace area
127
128
}
// namespace osmium
129
130
#endif
// OSMIUM_AREA_GEOM_ASSEMBLER_HPP
assembler_config.hpp
buffer.hpp
osmium::Relation
Definition
relation.hpp:161
osmium::Way
Definition
way.hpp:72
osmium::area::GeomAssembler::config_type
osmium::area::AssemblerConfig config_type
Definition
geom_assembler.hpp:65
osmium::area::GeomAssembler::operator()
bool operator()(const osmium::Relation &relation, const osmium::memory::Buffer &ways_buffer, osmium::memory::Buffer &out_buffer)
Definition
geom_assembler.hpp:105
osmium::area::GeomAssembler::operator()
bool operator()(const osmium::Way &way, osmium::memory::Buffer &out_buffer)
Definition
geom_assembler.hpp:79
osmium::area::GeomAssembler::GeomAssembler
GeomAssembler(const config_type &config)
Definition
geom_assembler.hpp:67
osmium::builder::AreaBuilder
Definition
osm_object_builder.hpp:594
detail
Definition
attr.hpp:342
osmium::area
Code related to the building of areas (multipolygons) from relations.
Definition
assembler.hpp:55
osmium::builder
Classes for building OSM objects and other items in buffers.
Definition
attr.hpp:62
osmium::config
Definition
config.hpp:60
osmium
Namespace for everything in the Osmium library.
Definition
assembler.hpp:53
osmium::item_type::relation
@ relation
Definition
item_type.hpp:50
osmium::item_type::way
@ way
Definition
item_type.hpp:49
osm_object_builder.hpp
relation.hpp
stats.hpp
osmium::area::AssemblerConfig
Definition
assembler_config.hpp:47
way.hpp
Generated by
1.17.0