Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37519832
en ru br
Репозитории ALT

Группа :: Базы Данных
Пакет: osm2pgsql

 Главная   Изменения   Спек   Патчи   Sources   Загрузить   Gear   Bugs and FR  Repocop 

Патч: osm2pgsql-geos36-support.patch
Скачать


From ad4e49338bec429546457cb5abf95e0803271fa1 Mon Sep 17 00:00:00 2001
From: darkblue-b <darkblue-b@users.noreply.github.com>
Date: Thu, 27 Oct 2016 19:30:50 -0700
Subject: [PATCH 1/7] geos36 constructor
---
 geometry-builder.cpp | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/geometry-builder.cpp b/geometry-builder.cpp
index dd848a97..238ae716 100644
--- a/geometry-builder.cpp
+++ b/geometry-builder.cpp
@@ -557,7 +557,9 @@ geometry_builder::pg_geoms_t geometry_builder::build_both(const multinodelist_t
 
     try
     {
-        GeometryFactory gf;
+        // geos36 - auto-allocation no longer supported in GEOS 3.6+
+	GeometryFactory &gf = *GeometryFactory::getDefaultInstance();
+	
         geom_ptr mline = create_multi_line(gf, xnodes);
         //geom_ptr noded (segment->Union(mline.get()));
         LineMerger merger;
From aaec07af6ae5e3ec78c7cc2684c17c90fa0a4ea3 Mon Sep 17 00:00:00 2001
From: darkblue-b <darkblue-b@users.noreply.github.com>
Date: Thu, 27 Oct 2016 19:56:50 -0700
Subject: [PATCH 2/7] geos36 * only
---
 geometry-builder.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/geometry-builder.cpp b/geometry-builder.cpp
index 238ae716..495f832b 100644
--- a/geometry-builder.cpp
+++ b/geometry-builder.cpp
@@ -558,7 +558,7 @@ geometry_builder::pg_geoms_t geometry_builder::build_both(const multinodelist_t
     try
     {
         // geos36 - auto-allocation no longer supported in GEOS 3.6+
-	GeometryFactory &gf = *GeometryFactory::getDefaultInstance();
+	GeometryFactory *gf = GeometryFactory::getDefaultInstance();
 	
         geom_ptr mline = create_multi_line(gf, xnodes);
         //geom_ptr noded (segment->Union(mline.get()));
From 3fded4378e51c0b4e6ed13b59f155a2b91cf8dc4 Mon Sep 17 00:00:00 2001
From: darkblue-b <darkblue-b@users.noreply.github.com>
Date: Thu, 27 Oct 2016 20:01:07 -0700
Subject: [PATCH 3/7] geos36 * ref
---
 geometry-builder.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/geometry-builder.cpp b/geometry-builder.cpp
index 495f832b..e25e7023 100644
--- a/geometry-builder.cpp
+++ b/geometry-builder.cpp
@@ -558,7 +558,8 @@ geometry_builder::pg_geoms_t geometry_builder::build_both(const multinodelist_t
     try
     {
         // geos36 - auto-allocation no longer supported in GEOS 3.6+
-	GeometryFactory *gf = GeometryFactory::getDefaultInstance();
+	GeometryFactory *gf_p = GeometryFactory::getDefaultInstance();
+	GeometryFactory& gf = *gf_p;
 	
         geom_ptr mline = create_multi_line(gf, xnodes);
         //geom_ptr noded (segment->Union(mline.get()));
From 9eb20b9ec02e893be8a612c865ff405ba3410d5f Mon Sep 17 00:00:00 2001
From: darkblue-b <darkblue-b@users.noreply.github.com>
Date: Thu, 27 Oct 2016 20:03:53 -0700
Subject: [PATCH 4/7] geos36 const
---
 geometry-builder.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/geometry-builder.cpp b/geometry-builder.cpp
index e25e7023..664e88af 100644
--- a/geometry-builder.cpp
+++ b/geometry-builder.cpp
@@ -559,7 +559,7 @@ geometry_builder::pg_geoms_t geometry_builder::build_both(const multinodelist_t
     {
         // geos36 - auto-allocation no longer supported in GEOS 3.6+
 	GeometryFactory *gf_p = GeometryFactory::getDefaultInstance();
-	GeometryFactory& gf = *gf_p;
+	const GeometryFactory& gf = *gf_p;
 	
         geom_ptr mline = create_multi_line(gf, xnodes);
         //geom_ptr noded (segment->Union(mline.get()));
From f9edb7e2d2097b858954d3249e11da7c4d724961 Mon Sep 17 00:00:00 2001
From: darkblue-b <darkblue-b@users.noreply.github.com>
Date: Thu, 27 Oct 2016 20:07:10 -0700
Subject: [PATCH 5/7] geos36 const
---
 geometry-builder.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/geometry-builder.cpp b/geometry-builder.cpp
index 664e88af..40d9d442 100644
--- a/geometry-builder.cpp
+++ b/geometry-builder.cpp
@@ -558,8 +558,8 @@ geometry_builder::pg_geoms_t geometry_builder::build_both(const multinodelist_t
     try
     {
         // geos36 - auto-allocation no longer supported in GEOS 3.6+
-	GeometryFactory *gf_p = GeometryFactory::getDefaultInstance();
-	const GeometryFactory& gf = *gf_p;
+	const GeometryFactory *gf_p = GeometryFactory::getDefaultInstance();
+	GeometryFactory& gf = *gf_p;
 	
         geom_ptr mline = create_multi_line(gf, xnodes);
         //geom_ptr noded (segment->Union(mline.get()));
From 65aa13ed4f28a0443ba77e13ce5b441118985ce2 Mon Sep 17 00:00:00 2001
From: darkblue-b <darkblue-b@users.noreply.github.com>
Date: Thu, 27 Oct 2016 20:44:59 -0700
Subject: [PATCH 6/7] geos36 const gf all around
---
 geometry-builder.cpp | 33 ++++++++++++++++++++++++---------
 geometry-builder.hpp |  2 +-
 2 files changed, 25 insertions(+), 10 deletions(-)
diff --git a/geometry-builder.cpp b/geometry-builder.cpp
index 40d9d442..de9b865d 100644
--- a/geometry-builder.cpp
+++ b/geometry-builder.cpp
@@ -74,7 +74,7 @@ void coords2nodes(CoordinateSequence * coords, nodelist_t &nodes)
     }
 }
 
-coord_ptr nodes2coords(GeometryFactory &gf, const nodelist_t &nodes)
+coord_ptr nodes2coords(const GeometryFactory &gf, const nodelist_t &nodes)
 {
     coord_ptr coords(gf.getCoordinateSequenceFactory()->create(size_t(0), size_t(2)));
 
@@ -85,7 +85,7 @@ coord_ptr nodes2coords(GeometryFactory &gf, const nodelist_t &nodes)
     return coords;
 }
 
-geom_ptr create_multi_line(GeometryFactory &gf, const multinodelist_t &xnodes)
+geom_ptr create_multi_line(const GeometryFactory &gf, const multinodelist_t &xnodes)
 {
     // XXX leaks memory if an exception is thrown
     std::unique_ptr<std::vector<Geometry*> > lines(new std::vector<Geometry*>);
@@ -202,7 +202,7 @@ void geometry_builder::pg_geom_t::set(const geos::geom::Geometry *g, bool poly,
     }
 }
 
-geom_ptr geometry_builder::create_simple_poly(GeometryFactory &gf,
+geom_ptr geometry_builder::create_simple_poly(const GeometryFactory &gf,
                                               std::unique_ptr<CoordinateSequence> coords) const
 {
     std::unique_ptr<LinearRing> shell(gf.createLinearRing(coords.release()));
@@ -227,7 +227,10 @@ geometry_builder::pg_geom_t geometry_builder::get_wkb_simple(const nodelist_t &n
 
     try
     {
-        GeometryFactory gf;
+        // geos36 - auto-allocation no longer supported in GEOS 3.6+
+	const GeometryFactory *gf_p = GeometryFactory::getDefaultInstance();
+	const GeometryFactory& gf = *gf_p;
+
         auto coords = nodes2coords(gf, nodes);
         if (polygon && is_polygon_line(coords.get())) {
             auto geom = create_simple_poly(gf, std::move(coords));
@@ -263,7 +266,10 @@ geometry_builder::pg_geoms_t geometry_builder::get_wkb_split(const nodelist_t &n
 
     try
     {
-        GeometryFactory gf;
+        // geos36 - auto-allocation no longer supported in GEOS 3.6+
+	const GeometryFactory *gf_p = GeometryFactory::getDefaultInstance();
+	const GeometryFactory& gf = *gf_p;
+
         auto coords = nodes2coords(gf, nodes);
 
         if (polygon && is_polygon_line(coords.get())) {
@@ -340,7 +346,10 @@ geometry_builder::pg_geoms_t geometry_builder::get_wkb_split(const nodelist_t &n
 }
 
 int geometry_builder::parse_wkb(const char* wkb, multinodelist_t &nodes, bool *polygon) {
-    GeometryFactory gf;
+    // geos36 - auto-allocation no longer supported in GEOS 3.6+
+    const GeometryFactory *gf_p = GeometryFactory::getDefaultInstance();
+    const GeometryFactory& gf = *gf_p;
+
     geos::io::WKBReader reader(gf);
 
     *polygon = false;
@@ -395,7 +404,10 @@ geometry_builder::pg_geoms_t geometry_builder::build_polygons(const multinodelis
 
     try
     {
-        GeometryFactory gf;
+        // geos36 - auto-allocation no longer supported in GEOS 3.6+
+	const GeometryFactory *gf_p = GeometryFactory::getDefaultInstance();
+	const GeometryFactory& gf = *gf_p;
+
         geom_ptr mline = create_multi_line(gf, xnodes);
 
         //geom_ptr noded (segment->Union(mline.get()));
@@ -533,7 +545,10 @@ geometry_builder::pg_geom_t geometry_builder::build_multilines(const multinodeli
 
     try
     {
-        GeometryFactory gf;
+        // geos36 - auto-allocation no longer supported in GEOS 3.6+
+	const GeometryFactory *gf_p = GeometryFactory::getDefaultInstance();
+	const GeometryFactory& gf = *gf_p;
+
         geom_ptr mline = create_multi_line(gf, xnodes);
 
         wkb.set(mline.get(), false);
@@ -559,7 +574,7 @@ geometry_builder::pg_geoms_t geometry_builder::build_both(const multinodelist_t
     {
         // geos36 - auto-allocation no longer supported in GEOS 3.6+
 	const GeometryFactory *gf_p = GeometryFactory::getDefaultInstance();
-	GeometryFactory& gf = *gf_p;
+	const GeometryFactory& gf = *gf_p;
 	
         geom_ptr mline = create_multi_line(gf, xnodes);
         //geom_ptr noded (segment->Union(mline.get()));
diff --git a/geometry-builder.hpp b/geometry-builder.hpp
index 56457c17..e10d51c7 100644
--- a/geometry-builder.hpp
+++ b/geometry-builder.hpp
@@ -104,7 +104,7 @@ class geometry_builder
 
 private:
     std::unique_ptr<geos::geom::Geometry>
-    create_simple_poly(geos::geom::GeometryFactory &gf,
+    create_simple_poly(const geos::geom::GeometryFactory &gf,
                        std::unique_ptr<geos::geom::CoordinateSequence> coords) const;
 
     bool excludepoly = false;
From ad82c56d5634fac2fe2e2ed5742c1db586ee8670 Mon Sep 17 00:00:00 2001
From: darkblue-b <darkblue-b@users.noreply.github.com>
Date: Thu, 27 Oct 2016 20:58:03 -0700
Subject: [PATCH 7/7] geos36 detab
---
 geometry-builder.cpp | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)
diff --git a/geometry-builder.cpp b/geometry-builder.cpp
index de9b865d..7d8b4998 100644
--- a/geometry-builder.cpp
+++ b/geometry-builder.cpp
@@ -228,8 +228,8 @@ geometry_builder::pg_geom_t geometry_builder::get_wkb_simple(const nodelist_t &n
     try
     {
         // geos36 - auto-allocation no longer supported in GEOS 3.6+
-	const GeometryFactory *gf_p = GeometryFactory::getDefaultInstance();
-	const GeometryFactory& gf = *gf_p;
+        const GeometryFactory *gf_p = GeometryFactory::getDefaultInstance();
+        const GeometryFactory& gf = *gf_p;
 
         auto coords = nodes2coords(gf, nodes);
         if (polygon && is_polygon_line(coords.get())) {
@@ -267,8 +267,8 @@ geometry_builder::pg_geoms_t geometry_builder::get_wkb_split(const nodelist_t &n
     try
     {
         // geos36 - auto-allocation no longer supported in GEOS 3.6+
-	const GeometryFactory *gf_p = GeometryFactory::getDefaultInstance();
-	const GeometryFactory& gf = *gf_p;
+        const GeometryFactory *gf_p = GeometryFactory::getDefaultInstance();
+        const GeometryFactory& gf = *gf_p;
 
         auto coords = nodes2coords(gf, nodes);
 
@@ -405,8 +405,8 @@ geometry_builder::pg_geoms_t geometry_builder::build_polygons(const multinodelis
     try
     {
         // geos36 - auto-allocation no longer supported in GEOS 3.6+
-	const GeometryFactory *gf_p = GeometryFactory::getDefaultInstance();
-	const GeometryFactory& gf = *gf_p;
+        const GeometryFactory *gf_p = GeometryFactory::getDefaultInstance();
+        const GeometryFactory& gf = *gf_p;
 
         geom_ptr mline = create_multi_line(gf, xnodes);
 
@@ -546,8 +546,8 @@ geometry_builder::pg_geom_t geometry_builder::build_multilines(const multinodeli
     try
     {
         // geos36 - auto-allocation no longer supported in GEOS 3.6+
-	const GeometryFactory *gf_p = GeometryFactory::getDefaultInstance();
-	const GeometryFactory& gf = *gf_p;
+        const GeometryFactory *gf_p = GeometryFactory::getDefaultInstance();
+        const GeometryFactory& gf = *gf_p;
 
         geom_ptr mline = create_multi_line(gf, xnodes);
 
@@ -573,9 +573,9 @@ geometry_builder::pg_geoms_t geometry_builder::build_both(const multinodelist_t
     try
     {
         // geos36 - auto-allocation no longer supported in GEOS 3.6+
-	const GeometryFactory *gf_p = GeometryFactory::getDefaultInstance();
-	const GeometryFactory& gf = *gf_p;
-	
+        const GeometryFactory *gf_p = GeometryFactory::getDefaultInstance();
+        const GeometryFactory& gf = *gf_p;
+
         geom_ptr mline = create_multi_line(gf, xnodes);
         //geom_ptr noded (segment->Union(mline.get()));
         LineMerger merger;
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin