[geos-devel] [GEOS] #1018: Geometry->difference() crashes
GEOS
geos-trac at osgeo.org
Mon Mar 9 14:05:31 PDT 2020
#1018: Geometry->difference() crashes
------------------------+--------------------------
Reporter: pramsey | Owner: geos-devel@…
Type: defect | Status: new
Priority: major | Milestone: 3.8.1
Component: Default | Version: 3.8.0
Severity: Unassigned | Keywords:
------------------------+--------------------------
https://github.com/libgeos/geos/issues/290
{{{
#include <iostream>
#include <memory>
#include <geos/geom/GeometryFactory.h>
#include <geos/geom/Geometry.h>
#include <geos/io/WKTWriter.h>
#include <geos/io/WKTReader.h>
struct Rectangle {
double west = -180.0;
double east = 180.0;
double south = -90.0;
double north = 90.0;
};
std::unique_ptr< geos::geom::Geometry > CreateRectangleGeometry(const
Rectangle& rect) {
auto wkt_reader = geos::io::WKTReader();
std::string wkt = "POLYGON((" +
std::to_string(rect.west) + " " +
std::to_string(rect.north) + ", " +
std::to_string(rect.east) + " " +
std::to_string(rect.north) + ", "+
std::to_string(rect.east) + " " +
std::to_string(rect.south) + ", " +
std::to_string(rect.west) + " " +
std::to_string(rect.south) +", " +
std::to_string(rect.west) + " " +
std::to_string(rect.north) +
"))";
auto geom = wkt_reader.read(wkt);
return geom;
}
int main(int argc, char* argv[]){
Rectangle rect;
rect.west = 0.0;
rect.east = 2.0;
rect.south = 0.0;
rect.north = 2.0;
Rectangle rect2;
rect2.west = 0.1;
rect2.east = 4.0;
rect2.south = 0.1;
rect2.north = 1.9;
auto geom1 = CreateRectangleGeometry(rect);
auto geom2 = CreateRectangleGeometry(rect2);
auto geom3 = geom2->difference(geom1.get());
geos::io::WKTWriter writer;
std::cout << writer.write(geom3.get());
return 0;
}
}}}
--
Ticket URL: <https://trac.osgeo.org/geos/ticket/1018>
GEOS <http://trac.osgeo.org/geos>
GEOS (Geometry Engine - Open Source) is a C++ port of the Java Topology Suite (JTS).
More information about the geos-devel
mailing list