Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 421325
Collapse All | Expand All

(-)osm2pgsql/build_geometry.cpp (-9 / +16 lines)
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());

Return to bug 421325