diff -dur osm2pgsql/build_geometry.cpp osm2pgsql/build_geometry.cpp --- osm2pgsql/build_geometry.cpp 2010-04-07 19:51:14.000000000 -0600 +++ osm2pgsql/build_geometry.cpp 2012-10-10 16:49:14.839696941 -0600 @@ -64,7 +64,8 @@ char *get_wkt_simple(osmNode *nodes, int count, int polygon) { GeometryFactory gf; - std::auto_ptr coords(gf.getCoordinateSequenceFactory()->create(0, 2)); + std::auto_ptr coords(gf.getCoordinateSequenceFactory()->create( + static_cast(0), static_cast(2))); try { @@ -106,7 +107,8 @@ size_t get_wkt_split(osmNode *nodes, int count, int polygon, double split_at) { GeometryFactory gf; - std::auto_ptr coords(gf.getCoordinateSequenceFactory()->create(0, 2)); + std::auto_ptr coords(gf.getCoordinateSequenceFactory()->create( + static_cast(0), static_cast(2))); double area; WKTWriter wktw; size_t wkt_size = 0; @@ -136,7 +138,8 @@ double distance = 0; std::auto_ptr segment; - segment = std::auto_ptr(gf.getCoordinateSequenceFactory()->create(0, 2)); + segment = std::auto_ptr(gf.getCoordinateSequenceFactory()->create( + static_cast(0), static_cast(2))); segment->add(coords->getAt(0)); for(unsigned i=1; igetSize(); i++) { segment->add(coords->getAt(i)); @@ -148,7 +151,8 @@ areas.push_back(0); wkt_size++; distance=0; - segment = std::auto_ptr(gf.getCoordinateSequenceFactory()->create(0, 2)); + segment = std::auto_ptr(gf.getCoordinateSequenceFactory()->create( + static_cast(0), static_cast(2))); segment->add(coords->getAt(i)); } } @@ -246,7 +250,7 @@ case GEOS_MULTIPOINT: // Drop through case GEOS_MULTILINESTRING: - gc = (GeometryCollection *) geometry; + gc = dynamic_cast(geometry); num_geometries = gc->getNumGeometries(); *xnodes = (struct osmNode **) malloc((num_geometries + 1) * sizeof(struct osmNode *)); *xcount = (int *) malloc(num_geometries * sizeof(int)); @@ -299,7 +303,8 @@ try { for (int c=0; xnodes[c]; c++) { - std::auto_ptr coords(gf.getCoordinateSequenceFactory()->create(0, 2)); + std::auto_ptr coords(gf.getCoordinateSequenceFactory()->create( + static_cast(0), static_cast(2))); for (int i = 0; i < xcount[c]; i++) { struct osmNode *nodes = xnodes[c]; Coordinate c; @@ -348,7 +353,8 @@ //std::cerr << "polygon(" << osm_id << ") is no good: points(" << pline->getNumPoints() << "), closed(" << pline->isClosed() << "). " << writer.write(pline.get()) << std::endl; double distance = 0; std::auto_ptr segment; - segment = std::auto_ptr(gf.getCoordinateSequenceFactory()->create(0, 2)); + segment = std::auto_ptr(gf.getCoordinateSequenceFactory()->create( + static_cast(0), static_cast(2))); segment->add(pline->getCoordinateN(0)); for(unsigned i=1; igetNumPoints(); i++) { segment->add(pline->getCoordinateN(i)); @@ -360,7 +366,8 @@ areas.push_back(0); wkt_size++; distance=0; - segment = std::auto_ptr(gf.getCoordinateSequenceFactory()->create(0, 2)); + segment = std::auto_ptr(gf.getCoordinateSequenceFactory()->create( + static_cast(0), static_cast(2))); segment->add(pline->getCoordinateN(i)); } } @@ -462,7 +469,7 @@ { for(unsigned i=0; iat(i); + Polygon* poly = dynamic_cast(polygons->at(i)); std::string text = writer.write(poly); wkts.push_back(text); areas.push_back(poly->getArea());