1 #ifndef OSMIUM_GEOM_RAPID_GEOJSON_HPP
2 #define OSMIUM_GEOM_RAPID_GEOJSON_HPP
51 template <
typename TWriter>
52 class RapidGeoJSONFactoryImpl {
58 using point_type = void;
59 using linestring_type = void;
60 using polygon_type = void;
61 using multipolygon_type = void;
62 using ring_type = void;
64 RapidGeoJSONFactoryImpl(
int , TWriter& writer) :
72 m_writer->String(
"geometry");
73 m_writer->StartObject();
74 m_writer->String(
"type");
75 m_writer->String(
"Point");
76 m_writer->String(
"coordinates");
77 m_writer->StartArray();
78 m_writer->Double(xy.
x);
79 m_writer->Double(xy.
y);
81 m_writer->EndObject();
87 void linestring_start() {
88 m_writer->String(
"geometry");
89 m_writer->StartObject();
90 m_writer->String(
"type");
91 m_writer->String(
"LineString");
92 m_writer->String(
"coordinates");
93 m_writer->StartArray();
97 m_writer->StartArray();
98 m_writer->Double(xy.
x);
99 m_writer->Double(xy.
y);
100 m_writer->EndArray();
103 linestring_type linestring_finish(
size_t ) {
104 m_writer->EndArray();
105 m_writer->EndObject();
111 void polygon_start() {
112 m_writer->String(
"geometry");
113 m_writer->StartObject();
114 m_writer->String(
"type");
115 m_writer->String(
"Polygon");
116 m_writer->String(
"coordinates");
117 m_writer->StartArray();
118 m_writer->StartArray();
122 m_writer->StartArray();
123 m_writer->Double(xy.
x);
124 m_writer->Double(xy.
y);
125 m_writer->EndArray();
128 polygon_type polygon_finish(
size_t ) {
129 m_writer->EndArray();
130 m_writer->EndArray();
131 m_writer->EndObject();
136 void multipolygon_start() {
137 m_writer->String(
"geometry");
138 m_writer->StartObject();
139 m_writer->String(
"type");
140 m_writer->String(
"MultiPolygon");
141 m_writer->String(
"coordinates");
142 m_writer->StartArray();
145 void multipolygon_polygon_start() {
146 m_writer->StartArray();
149 void multipolygon_polygon_finish() {
150 m_writer->EndArray();
153 void multipolygon_outer_ring_start() {
154 m_writer->StartArray();
157 void multipolygon_outer_ring_finish() {
158 m_writer->EndArray();
161 void multipolygon_inner_ring_start() {
162 m_writer->StartArray();
165 void multipolygon_inner_ring_finish() {
166 m_writer->EndArray();
170 m_writer->StartArray();
171 m_writer->Double(xy.
x);
172 m_writer->Double(xy.
y);
173 m_writer->EndArray();
176 multipolygon_type multipolygon_finish() {
177 m_writer->EndArray();
178 m_writer->EndObject();
185 template <
typename TWriter,
typename TProjection = IdentityProjection>
Definition: factory.hpp:149
Namespace for everything in the Osmium library.
Definition: assembler.hpp:53
Definition: coordinates.hpp:48
double y
Definition: coordinates.hpp:51
double x
Definition: coordinates.hpp:50