ménage
parent
a1cdfdceba
commit
2bba4419d3
@ -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<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));
|
|
||||||
}
|
|
Loading…
Reference in New Issue