Группа :: Базы Данных
Пакет: 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;