Lines 64-70
Link Here
|
64 |
|
64 |
|
65 |
char *get_wkt_simple(osmNode *nodes, int count, int polygon) { |
65 |
char *get_wkt_simple(osmNode *nodes, int count, int polygon) { |
66 |
GeometryFactory gf; |
66 |
GeometryFactory gf; |
67 |
std::auto_ptr<CoordinateSequence> coords(gf.getCoordinateSequenceFactory()->create(0, 2)); |
67 |
std::auto_ptr<CoordinateSequence> coords(gf.getCoordinateSequenceFactory()->create( |
|
|
68 |
static_cast<std::size_t>(0), static_cast<std::size_t>(2))); |
68 |
|
69 |
|
69 |
try |
70 |
try |
70 |
{ |
71 |
{ |
Lines 106-112
Link Here
|
106 |
|
107 |
|
107 |
size_t get_wkt_split(osmNode *nodes, int count, int polygon, double split_at) { |
108 |
size_t get_wkt_split(osmNode *nodes, int count, int polygon, double split_at) { |
108 |
GeometryFactory gf; |
109 |
GeometryFactory gf; |
109 |
std::auto_ptr<CoordinateSequence> coords(gf.getCoordinateSequenceFactory()->create(0, 2)); |
110 |
std::auto_ptr<CoordinateSequence> coords(gf.getCoordinateSequenceFactory()->create( |
|
|
111 |
static_cast<std::size_t>(0), static_cast<std::size_t>(2))); |
110 |
double area; |
112 |
double area; |
111 |
WKTWriter wktw; |
113 |
WKTWriter wktw; |
112 |
size_t wkt_size = 0; |
114 |
size_t wkt_size = 0; |
Lines 136-142
Link Here
|
136 |
|
138 |
|
137 |
double distance = 0; |
139 |
double distance = 0; |
138 |
std::auto_ptr<CoordinateSequence> segment; |
140 |
std::auto_ptr<CoordinateSequence> segment; |
139 |
segment = std::auto_ptr<CoordinateSequence>(gf.getCoordinateSequenceFactory()->create(0, 2)); |
141 |
segment = std::auto_ptr<CoordinateSequence>(gf.getCoordinateSequenceFactory()->create( |
|
|
142 |
static_cast<std::size_t>(0), static_cast<std::size_t>(2))); |
140 |
segment->add(coords->getAt(0)); |
143 |
segment->add(coords->getAt(0)); |
141 |
for(unsigned i=1; i<coords->getSize(); i++) { |
144 |
for(unsigned i=1; i<coords->getSize(); i++) { |
142 |
segment->add(coords->getAt(i)); |
145 |
segment->add(coords->getAt(i)); |
Lines 148-154
Link Here
|
148 |
areas.push_back(0); |
151 |
areas.push_back(0); |
149 |
wkt_size++; |
152 |
wkt_size++; |
150 |
distance=0; |
153 |
distance=0; |
151 |
segment = std::auto_ptr<CoordinateSequence>(gf.getCoordinateSequenceFactory()->create(0, 2)); |
154 |
segment = std::auto_ptr<CoordinateSequence>(gf.getCoordinateSequenceFactory()->create( |
|
|
155 |
static_cast<std::size_t>(0), static_cast<std::size_t>(2))); |
152 |
segment->add(coords->getAt(i)); |
156 |
segment->add(coords->getAt(i)); |
153 |
} |
157 |
} |
154 |
} |
158 |
} |
Lines 246-252
Link Here
|
246 |
case GEOS_MULTIPOINT: |
250 |
case GEOS_MULTIPOINT: |
247 |
// Drop through |
251 |
// Drop through |
248 |
case GEOS_MULTILINESTRING: |
252 |
case GEOS_MULTILINESTRING: |
249 |
gc = (GeometryCollection *) geometry; |
253 |
gc = dynamic_cast<GeometryCollection *>(geometry); |
250 |
num_geometries = gc->getNumGeometries(); |
254 |
num_geometries = gc->getNumGeometries(); |
251 |
*xnodes = (struct osmNode **) malloc((num_geometries + 1) * sizeof(struct osmNode *)); |
255 |
*xnodes = (struct osmNode **) malloc((num_geometries + 1) * sizeof(struct osmNode *)); |
252 |
*xcount = (int *) malloc(num_geometries * sizeof(int)); |
256 |
*xcount = (int *) malloc(num_geometries * sizeof(int)); |
Lines 299-305
Link Here
|
299 |
try |
303 |
try |
300 |
{ |
304 |
{ |
301 |
for (int c=0; xnodes[c]; c++) { |
305 |
for (int c=0; xnodes[c]; c++) { |
302 |
std::auto_ptr<CoordinateSequence> coords(gf.getCoordinateSequenceFactory()->create(0, 2)); |
306 |
std::auto_ptr<CoordinateSequence> coords(gf.getCoordinateSequenceFactory()->create( |
|
|
307 |
static_cast<std::size_t>(0), static_cast<std::size_t>(2))); |
303 |
for (int i = 0; i < xcount[c]; i++) { |
308 |
for (int i = 0; i < xcount[c]; i++) { |
304 |
struct osmNode *nodes = xnodes[c]; |
309 |
struct osmNode *nodes = xnodes[c]; |
305 |
Coordinate c; |
310 |
Coordinate c; |
Lines 348-354
Link Here
|
348 |
//std::cerr << "polygon(" << osm_id << ") is no good: points(" << pline->getNumPoints() << "), closed(" << pline->isClosed() << "). " << writer.write(pline.get()) << std::endl; |
353 |
//std::cerr << "polygon(" << osm_id << ") is no good: points(" << pline->getNumPoints() << "), closed(" << pline->isClosed() << "). " << writer.write(pline.get()) << std::endl; |
349 |
double distance = 0; |
354 |
double distance = 0; |
350 |
std::auto_ptr<CoordinateSequence> segment; |
355 |
std::auto_ptr<CoordinateSequence> segment; |
351 |
segment = std::auto_ptr<CoordinateSequence>(gf.getCoordinateSequenceFactory()->create(0, 2)); |
356 |
segment = std::auto_ptr<CoordinateSequence>(gf.getCoordinateSequenceFactory()->create( |
|
|
357 |
static_cast<std::size_t>(0), static_cast<std::size_t>(2))); |
352 |
segment->add(pline->getCoordinateN(0)); |
358 |
segment->add(pline->getCoordinateN(0)); |
353 |
for(unsigned i=1; i<pline->getNumPoints(); i++) { |
359 |
for(unsigned i=1; i<pline->getNumPoints(); i++) { |
354 |
segment->add(pline->getCoordinateN(i)); |
360 |
segment->add(pline->getCoordinateN(i)); |
Lines 360-366
Link Here
|
360 |
areas.push_back(0); |
366 |
areas.push_back(0); |
361 |
wkt_size++; |
367 |
wkt_size++; |
362 |
distance=0; |
368 |
distance=0; |
363 |
segment = std::auto_ptr<CoordinateSequence>(gf.getCoordinateSequenceFactory()->create(0, 2)); |
369 |
segment = std::auto_ptr<CoordinateSequence>(gf.getCoordinateSequenceFactory()->create( |
|
|
370 |
static_cast<std::size_t>(0), static_cast<std::size_t>(2))); |
364 |
segment->add(pline->getCoordinateN(i)); |
371 |
segment->add(pline->getCoordinateN(i)); |
365 |
} |
372 |
} |
366 |
} |
373 |
} |
Lines 462-468
Link Here
|
462 |
{ |
469 |
{ |
463 |
for(unsigned i=0; i<toplevelpolygons; i++) |
470 |
for(unsigned i=0; i<toplevelpolygons; i++) |
464 |
{ |
471 |
{ |
465 |
Polygon* poly = (Polygon*)polygons->at(i); |
472 |
Polygon* poly = dynamic_cast<Polygon*>(polygons->at(i)); |
466 |
std::string text = writer.write(poly); |
473 |
std::string text = writer.write(poly); |
467 |
wkts.push_back(text); |
474 |
wkts.push_back(text); |
468 |
areas.push_back(poly->getArea()); |
475 |
areas.push_back(poly->getArea()); |