From 2bba4419d38b9e58604417ca9ff35035fc2d88cb Mon Sep 17 00:00:00 2001 From: Jean-Pierre PRUNARET Date: Fri, 3 Mar 2017 19:37:58 +0100 Subject: [PATCH] =?UTF-8?q?m=C3=A9nage?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- osm2pgsql/default.nix | 15 -- osm2pgsql/use-geos36.patch | 296 ------------------------------------- 2 files changed, 311 deletions(-) delete mode 100644 osm2pgsql/use-geos36.patch diff --git a/osm2pgsql/default.nix b/osm2pgsql/default.nix index 138c095..851d4c9 100644 --- a/osm2pgsql/default.nix +++ b/osm2pgsql/default.nix @@ -1,25 +1,16 @@ with import {}; stdenv.mkDerivation rec { - #version = "0.92.0"; version = "2017-03-03"; name = "osm2pgsql-${version}"; src = fetchFromGitHub { owner = "openstreetmap"; repo = "osm2pgsql"; - #rev = "master"; rev = "c49d1b91aa559444f79280d5cef206d0541c9859"; sha256 = "0wn0bm4ghp5rpm8avwp3j9f36l1lgl2v245v5smqfqxgarjvsbvk"; }; - # https://github.com/openstreetmap/osm2pgsql/issues/634 - # https://bz-attachments.freebsd.org/attachment.cgi?id=177390 - #patches = [ - # ./use-geos36.patch - #]; - - #nativeBuildInputs = [ ]; buildInputs = [ boost bzip2 @@ -34,12 +25,6 @@ stdenv.mkDerivation rec { zlib ]; - #preConfigure = '' - #''; - #buildPhase = ''jam "-j$NIX_BUILD_CORES" ''; - #installPhase = '' - #''; - meta = with stdenv.lib; { homepage = http://wiki.openstreetmap.org/wiki/Osm2pgsql; description = "osm2pgsql is a tool for loading OpenStreetMap data into a PostgreSQL / PostGIS database suitable for applications like rendering into a map, geocoding with Nominatim, or general analysis."; diff --git a/osm2pgsql/use-geos36.patch b/osm2pgsql/use-geos36.patch deleted file mode 100644 index 13132b4..0000000 --- a/osm2pgsql/use-geos36.patch +++ /dev/null @@ -1,296 +0,0 @@ ---- ./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 coords(gf.getCoordinateSequenceFactory()->create((size_t)0, (size_t)2)); -+ GeometryFactory::unique_ptr gf = GeometryFactory::create(); -+ std::auto_ptr 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 shell(gf.createLinearRing(coords.release())); -- geom = geom_ptr(gf.createPolygon(shell.release(), new std::vector)); -+ std::auto_ptr shell(gf->createLinearRing(coords.release())); -+ geom = geom_ptr(gf->createPolygon(shell.release(), new std::vector)); - 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 coords(gf.getCoordinateSequenceFactory()->create((size_t)0, (size_t)2)); -+ GeometryFactory::unique_ptr gf = GeometryFactory::create(); -+ std::auto_ptr 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); -@@ -166,8 +166,8 @@ - - geom_ptr geom; - if (polygon && (coords->getSize() >= 4) && (coords->getAt(coords->getSize() - 1).equals2D(coords->getAt(0)))) { -- std::auto_ptr shell(gf.createLinearRing(coords.release())); -- geom = geom_ptr(gf.createPolygon(shell.release(), new std::vector)); -+ std::auto_ptr shell(gf->createLinearRing(coords.release())); -+ geom = geom_ptr(gf->createPolygon(shell.release(), new std::vector)); - if (!geom->isValid()) { - if (excludepoly) { - throw std::runtime_error("Excluding broken polygon."); -@@ -189,7 +189,7 @@ - - double distance = 0; - std::auto_ptr segment; -- segment = std::auto_ptr(gf.getCoordinateSequenceFactory()->create((size_t)0, (size_t)2)); -+ segment = std::auto_ptr(gf->getCoordinateSequenceFactory()->create((size_t)0, (size_t)2)); - segment->add(coords->getAt(0)); - for(unsigned i=1; igetSize(); 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 > lines(new std::vector); -- 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 coords(gf.getCoordinateSequenceFactory()->create((size_t)0, (size_t)2)); -+ std::auto_ptr 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 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 > lines(new std::vector); -- 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 coords(gf.getCoordinateSequenceFactory()->create((size_t)0, (size_t)2)); -+ std::auto_ptr 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 > lines(new std::vector); -- GeometryFactory gf; -+ GeometryFactory::unique_ptr gf = GeometryFactory::create(); - geom_ptr geom; - geos::geom::prep::PreparedGeometryFactory pgf; - maybe_wkts_t wkts(new std::vector); -@@ -580,7 +580,7 @@ - try - { - for (int c=0; xnodes[c]; c++) { -- std::auto_ptr coords(gf.getCoordinateSequenceFactory()->create((size_t)0, (size_t)2)); -+ std::auto_ptr 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 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 segment; -- segment = std::auto_ptr(gf.getCoordinateSequenceFactory()->create((size_t)0, (size_t)2)); -+ segment = std::auto_ptr(gf->getCoordinateSequenceFactory()->create((size_t)0, (size_t)2)); - segment->add(pline->getCoordinateN(0)); - for(unsigned i=1; igetNumPoints(); 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)); - }