1 #ifndef OSMIUM_GEOM_RAPID_GEOJSON_HPP
2 #define OSMIUM_GEOM_RAPID_GEOJSON_HPP
49 template <
class TWriter>
50 class RapidGeoJSONFactoryImpl {
56 typedef void point_type;
57 typedef void linestring_type;
58 typedef void polygon_type;
59 typedef void multipolygon_type;
60 typedef void ring_type;
62 RapidGeoJSONFactoryImpl(TWriter& writer) :
70 m_writer->String(
"geometry");
71 m_writer->StartObject();
72 m_writer->String(
"type");
73 m_writer->String(
"Point");
74 m_writer->String(
"coordinates");
75 m_writer->StartArray();
76 m_writer->Double(xy.
x);
77 m_writer->Double(xy.
y);
79 m_writer->EndObject();
85 void linestring_start() {
86 m_writer->String(
"geometry");
87 m_writer->StartObject();
88 m_writer->String(
"type");
89 m_writer->String(
"LineString");
90 m_writer->String(
"coordinates");
91 m_writer->StartArray();
95 m_writer->StartArray();
96 m_writer->Double(xy.
x);
97 m_writer->Double(xy.
y);
101 linestring_type linestring_finish(
size_t ) {
102 m_writer->EndArray();
103 m_writer->EndObject();
109 void polygon_start() {
110 m_writer->String(
"geometry");
111 m_writer->StartObject();
112 m_writer->String(
"type");
113 m_writer->String(
"Polygon");
114 m_writer->String(
"coordinates");
115 m_writer->StartArray();
116 m_writer->StartArray();
120 m_writer->StartArray();
121 m_writer->Double(xy.
x);
122 m_writer->Double(xy.
y);
123 m_writer->EndArray();
126 polygon_type polygon_finish(
size_t ) {
127 m_writer->EndArray();
128 m_writer->EndArray();
129 m_writer->EndObject();
134 void multipolygon_start() {
135 m_writer->String(
"geometry");
136 m_writer->StartObject();
137 m_writer->String(
"type");
138 m_writer->String(
"MultiPolygon");
139 m_writer->String(
"coordinates");
140 m_writer->StartArray();
143 void multipolygon_polygon_start() {
144 m_writer->StartArray();
147 void multipolygon_polygon_finish() {
148 m_writer->EndArray();
151 void multipolygon_outer_ring_start() {
152 m_writer->StartArray();
155 void multipolygon_outer_ring_finish() {
156 m_writer->EndArray();
159 void multipolygon_inner_ring_start() {
160 m_writer->StartArray();
163 void multipolygon_inner_ring_finish() {
164 m_writer->EndArray();
168 m_writer->StartArray();
169 m_writer->Double(xy.
x);
170 m_writer->Double(xy.
y);
171 m_writer->EndArray();
174 multipolygon_type multipolygon_finish() {
175 m_writer->EndArray();
176 m_writer->EndObject();
183 template <
class TWriter,
class TProjection = IdentityProjection>
190 #endif // OSMIUM_GEOM_RAPID_GEOJSON_HPP
double y
Definition: coordinates.hpp:50
Definition: factory.hpp:146
Namespace for everything in the Osmium library.
Definition: assembler.hpp:55
Definition: coordinates.hpp:47
double x
Definition: coordinates.hpp:49