FreeBSD Bugzilla – Attachment 177390 Details for
Bug 214819
converters/osm2pgsql: ERROR: error: calling a protected constructor
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
patch to osm2pgsql to make it compile with geos-3.6.0
patch.txt (text/plain), 14.74 KB, created by
Martin Birgmeier
on 2016-11-25 16:36:51 UTC
(
hide
)
Description:
patch to osm2pgsql to make it compile with geos-3.6.0
Filename:
MIME Type:
Creator:
Martin Birgmeier
Created:
2016-11-25 16:36:51 UTC
Size:
14.74 KB
patch
obsolete
>--- ./geometry-builder.cpp.ORIG 2015-02-22 16:08:14.000000000 +0100 >+++ ./geometry-builder.cpp 2016-11-25 17:19:29.804737000 +0100 >@@ -94,8 +94,8 @@ > > geometry_builder::maybe_wkt_t geometry_builder::get_wkt_simple(const osmNode *nodes, int count, int polygon) const > { >- GeometryFactory gf; >- std::auto_ptr<CoordinateSequence> coords(gf.getCoordinateSequenceFactory()->create((size_t)0, (size_t)2)); >+ GeometryFactory::unique_ptr gf = GeometryFactory::create(); >+ std::auto_ptr<CoordinateSequence> coords(gf->getCoordinateSequenceFactory()->create((size_t)0, (size_t)2)); > > try > { >@@ -109,8 +109,8 @@ > maybe_wkt_t wkt(new geometry_builder::wkt_t()); > geom_ptr geom; > if (polygon && (coords->getSize() >= 4) && (coords->getAt(coords->getSize() - 1).equals2D(coords->getAt(0)))) { >- std::auto_ptr<LinearRing> shell(gf.createLinearRing(coords.release())); >- geom = geom_ptr(gf.createPolygon(shell.release(), new std::vector<Geometry *>)); >+ std::auto_ptr<LinearRing> shell(gf->createLinearRing(coords.release())); >+ geom = geom_ptr(gf->createPolygon(shell.release(), new std::vector<Geometry *>)); > if (!geom->isValid()) { > if (excludepoly) { > throw std::runtime_error("Excluding broken polygon."); >@@ -123,7 +123,7 @@ > } else { > if (coords->getSize() < 2) > throw std::runtime_error("Excluding degenerate line."); >- geom = geom_ptr(gf.createLineString(coords.release())); >+ geom = geom_ptr(gf->createLineString(coords.release())); > wkt->area = 0; > } > >@@ -149,8 +149,8 @@ > > geometry_builder::maybe_wkts_t geometry_builder::get_wkt_split(const osmNode *nodes, int count, int polygon, double split_at) const > { >- GeometryFactory gf; >- std::auto_ptr<CoordinateSequence> coords(gf.getCoordinateSequenceFactory()->create((size_t)0, (size_t)2)); >+ GeometryFactory::unique_ptr gf = GeometryFactory::create(); >+ std::auto_ptr<CoordinateSequence> coords(gf->getCoordinateSequenceFactory()->create((size_t)0, (size_t)2)); > WKTWriter writer; > //TODO: use count to get some kind of hint of how much we should reserve? > maybe_wkts_t wkts(new std::vector<geometry_builder::wkt_t>); >@@ -166,8 +166,8 @@ > > geom_ptr geom; > if (polygon && (coords->getSize() >= 4) && (coords->getAt(coords->getSize() - 1).equals2D(coords->getAt(0)))) { >- std::auto_ptr<LinearRing> shell(gf.createLinearRing(coords.release())); >- geom = geom_ptr(gf.createPolygon(shell.release(), new std::vector<Geometry *>)); >+ std::auto_ptr<LinearRing> shell(gf->createLinearRing(coords.release())); >+ geom = geom_ptr(gf->createPolygon(shell.release(), new std::vector<Geometry *>)); > if (!geom->isValid()) { > if (excludepoly) { > throw std::runtime_error("Excluding broken polygon."); >@@ -189,7 +189,7 @@ > > double distance = 0; > std::auto_ptr<CoordinateSequence> segment; >- segment = std::auto_ptr<CoordinateSequence>(gf.getCoordinateSequenceFactory()->create((size_t)0, (size_t)2)); >+ segment = std::auto_ptr<CoordinateSequence>(gf->getCoordinateSequenceFactory()->create((size_t)0, (size_t)2)); > segment->add(coords->getAt(0)); > for(unsigned i=1; i<coords->getSize(); i++) { > const Coordinate this_pt = coords->getAt(i); >@@ -208,7 +208,7 @@ > const Coordinate interpolated(frac * (this_pt.x - prev_pt.x) + prev_pt.x, > frac * (this_pt.y - prev_pt.y) + prev_pt.y); > segment->add(interpolated); >- geom_ptr geom = geom_ptr(gf.createLineString(segment.release())); >+ geom_ptr geom = geom_ptr(gf->createLineString(segment.release())); > > //copy of an empty one should be cheapest > wkts->push_back(geometry_builder::wkt_t()); >@@ -216,7 +216,7 @@ > wkts->back().geom = writer.write(geom.get()); > wkts->back().area = 0; > >- segment.reset(gf.getCoordinateSequenceFactory()->create((size_t)0, (size_t)2)); >+ segment.reset(gf->getCoordinateSequenceFactory()->create((size_t)0, (size_t)2)); > segment->add(interpolated); > } > // reset the distance based on the final splitting point for >@@ -234,7 +234,7 @@ > > // on the last iteration, close out the line. > if (i == coords->getSize()-1) { >- geom_ptr geom = geom_ptr(gf.createLineString(segment.release())); >+ geom_ptr geom = geom_ptr(gf->createLineString(segment.release())); > > //copy of an empty one should be cheapest > wkts->push_back(geometry_builder::wkt_t()); >@@ -242,7 +242,7 @@ > wkts->back().geom = writer.write(geom.get()); > wkts->back().area = 0; > >- segment.reset(gf.getCoordinateSequenceFactory()->create((size_t)0, (size_t)2)); >+ segment.reset(gf->getCoordinateSequenceFactory()->create((size_t)0, (size_t)2)); > } > } > } >@@ -264,8 +264,8 @@ > } > > int geometry_builder::parse_wkt(const char * wkt, struct osmNode *** xnodes, int ** xcount, int * polygon) { >- GeometryFactory gf; >- WKTReader reader(&gf); >+ GeometryFactory::unique_ptr gf = GeometryFactory::create(); >+ WKTReader reader(gf.get()); > std::string wkt_string(wkt); > Geometry * geometry; > const Geometry * subgeometry; >@@ -329,7 +329,7 @@ > geometry_builder::maybe_wkts_t geometry_builder::build_polygons(const osmNode * const * xnodes, const int *xcount, bool enable_multi, osmid_t osm_id) const > { > std::auto_ptr<std::vector<Geometry*> > lines(new std::vector<Geometry*>); >- GeometryFactory gf; >+ GeometryFactory::unique_ptr gf = GeometryFactory::create(); > geom_ptr geom; > geos::geom::prep::PreparedGeometryFactory pgf; > >@@ -339,7 +339,7 @@ > try > { > for (int c=0; xnodes[c]; c++) { >- std::auto_ptr<CoordinateSequence> coords(gf.getCoordinateSequenceFactory()->create((size_t)0, (size_t)2)); >+ std::auto_ptr<CoordinateSequence> coords(gf->getCoordinateSequenceFactory()->create((size_t)0, (size_t)2)); > for (int i = 0; i < xcount[c]; i++) { > const osmNode *nodes = xnodes[c]; > Coordinate c; >@@ -348,13 +348,13 @@ > coords->add(c, 0); > } > if (coords->getSize() > 1) { >- geom = geom_ptr(gf.createLineString(coords.release())); >+ geom = geom_ptr(gf->createLineString(coords.release())); > lines->push_back(geom.release()); > } > } > > //geom_ptr segment(0); >- geom_ptr mline (gf.createMultiLineString(lines.release())); >+ geom_ptr mline (gf->createMultiLineString(lines.release())); > //geom_ptr noded (segment->Union(mline.get())); > LineMerger merger; > //merger.add(noded.get()); >@@ -371,8 +371,8 @@ > std::auto_ptr<LineString> pline ((*merged ) [i]); > if (pline->getNumPoints() > 3 && pline->isClosed()) > { >- polys[totalpolys].polygon = gf.createPolygon(gf.createLinearRing(pline->getCoordinates()),0); >- polys[totalpolys].ring = gf.createLinearRing(pline->getCoordinates()); >+ polys[totalpolys].polygon = gf->createPolygon(gf->createLinearRing(pline->getCoordinates()),0); >+ polys[totalpolys].ring = gf->createLinearRing(pline->getCoordinates()); > polys[totalpolys].area = polys[totalpolys].polygon->getArea(); > polys[totalpolys].iscontained = 0; > polys[totalpolys].containedbyid = 0; >@@ -460,7 +460,7 @@ > } > } > >- Polygon* poly(gf.createPolygon(polys[i].ring, interior.release())); >+ Polygon* poly(gf->createPolygon(polys[i].ring, interior.release())); > poly->normalize(); > polygons->push_back(poly); > } >@@ -468,7 +468,7 @@ > // Make a multipolygon if required > if ((toplevelpolygons > 1) && enable_multi) > { >- geom_ptr multipoly(gf.createMultiPolygon(polygons.release())); >+ geom_ptr multipoly(gf->createMultiPolygon(polygons.release())); > if (!multipoly->isValid() && (excludepoly == 0)) { > multipoly = geom_ptr(multipoly->buffer(0)); > } >@@ -526,7 +526,7 @@ > geometry_builder::maybe_wkt_t geometry_builder::build_multilines(const osmNode * const * xnodes, const int *xcount, osmid_t osm_id) const > { > std::auto_ptr<std::vector<Geometry*> > lines(new std::vector<Geometry*>); >- GeometryFactory gf; >+ GeometryFactory::unique_ptr gf = GeometryFactory::create(); > geom_ptr geom; > > maybe_wkt_t wkt(new geometry_builder::wkt_t()); >@@ -534,7 +534,7 @@ > try > { > for (int c=0; xnodes[c]; c++) { >- std::auto_ptr<CoordinateSequence> coords(gf.getCoordinateSequenceFactory()->create((size_t)0, (size_t)2)); >+ std::auto_ptr<CoordinateSequence> coords(gf->getCoordinateSequenceFactory()->create((size_t)0, (size_t)2)); > for (int i = 0; i < xcount[c]; i++) { > const osmNode *nodes = xnodes[c]; > Coordinate c; >@@ -543,13 +543,13 @@ > coords->add(c, 0); > } > if (coords->getSize() > 1) { >- geom = geom_ptr(gf.createLineString(coords.release())); >+ geom = geom_ptr(gf->createLineString(coords.release())); > lines->push_back(geom.release()); > } > } > > //geom_ptr segment(0); >- geom_ptr mline (gf.createMultiLineString(lines.release())); >+ geom_ptr mline (gf->createMultiLineString(lines.release())); > //geom_ptr noded (segment->Union(mline.get())); > > WKTWriter writer; >@@ -571,7 +571,7 @@ > int enable_multi, double split_at, osmid_t osm_id) const > { > std::auto_ptr<std::vector<Geometry*> > lines(new std::vector<Geometry*>); >- GeometryFactory gf; >+ GeometryFactory::unique_ptr gf = GeometryFactory::create(); > geom_ptr geom; > geos::geom::prep::PreparedGeometryFactory pgf; > maybe_wkts_t wkts(new std::vector<geometry_builder::wkt_t>); >@@ -580,7 +580,7 @@ > try > { > for (int c=0; xnodes[c]; c++) { >- std::auto_ptr<CoordinateSequence> coords(gf.getCoordinateSequenceFactory()->create((size_t)0, (size_t)2)); >+ std::auto_ptr<CoordinateSequence> coords(gf->getCoordinateSequenceFactory()->create((size_t)0, (size_t)2)); > for (int i = 0; i < xcount[c]; i++) { > const osmNode *nodes = xnodes[c]; > Coordinate c; >@@ -589,13 +589,13 @@ > coords->add(c, 0); > } > if (coords->getSize() > 1) { >- geom = geom_ptr(gf.createLineString(coords.release())); >+ geom = geom_ptr(gf->createLineString(coords.release())); > lines->push_back(geom.release()); > } > } > > //geom_ptr segment(0); >- geom_ptr mline (gf.createMultiLineString(lines.release())); >+ geom_ptr mline (gf->createMultiLineString(lines.release())); > //geom_ptr noded (segment->Union(mline.get())); > LineMerger merger; > //merger.add(noded.get()); >@@ -612,8 +612,8 @@ > std::auto_ptr<LineString> pline ((*merged ) [i]); > if (make_polygon && pline->getNumPoints() > 3 && pline->isClosed()) > { >- polys[totalpolys].polygon = gf.createPolygon(gf.createLinearRing(pline->getCoordinates()),0); >- polys[totalpolys].ring = gf.createLinearRing(pline->getCoordinates()); >+ polys[totalpolys].polygon = gf->createPolygon(gf->createLinearRing(pline->getCoordinates()),0); >+ polys[totalpolys].ring = gf->createLinearRing(pline->getCoordinates()); > polys[totalpolys].area = polys[totalpolys].polygon->getArea(); > polys[totalpolys].iscontained = 0; > polys[totalpolys].containedbyid = 0; >@@ -629,13 +629,13 @@ > //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<CoordinateSequence> segment; >- segment = std::auto_ptr<CoordinateSequence>(gf.getCoordinateSequenceFactory()->create((size_t)0, (size_t)2)); >+ segment = std::auto_ptr<CoordinateSequence>(gf->getCoordinateSequenceFactory()->create((size_t)0, (size_t)2)); > segment->add(pline->getCoordinateN(0)); > for(unsigned i=1; i<pline->getNumPoints(); i++) { > segment->add(pline->getCoordinateN(i)); > distance += pline->getCoordinateN(i).distance(pline->getCoordinateN(i-1)); > if ((distance >= split_at) || (i == pline->getNumPoints()-1)) { >- geom_ptr geom = geom_ptr(gf.createLineString(segment.release())); >+ geom_ptr geom = geom_ptr(gf->createLineString(segment.release())); > > //copy of an empty one should be cheapest > wkts->push_back(geometry_builder::wkt_t()); >@@ -643,7 +643,7 @@ > wkts->back().geom = writer.write(geom.get()); > wkts->back().area = 0; > >- segment.reset(gf.getCoordinateSequenceFactory()->create((size_t)0, (size_t)2)); >+ segment.reset(gf->getCoordinateSequenceFactory()->create((size_t)0, (size_t)2)); > distance=0; > segment->add(pline->getCoordinateN(i)); > } >@@ -730,7 +730,7 @@ > } > } > >- Polygon* poly(gf.createPolygon(polys[i].ring, interior.release())); >+ Polygon* poly(gf->createPolygon(polys[i].ring, interior.release())); > poly->normalize(); > polygons->push_back(poly); > } >@@ -738,7 +738,7 @@ > // Make a multipolygon if required > if ((toplevelpolygons > 1) && enable_multi) > { >- geom_ptr multipoly(gf.createMultiPolygon(polygons.release())); >+ geom_ptr multipoly(gf->createMultiPolygon(polygons.release())); > if (!multipoly->isValid() && (excludepoly == 0)) { > multipoly = geom_ptr(multipoly->buffer(0)); > }
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 214819
:
177386
|
177387
| 177390