jts
jts copied to clipboard
OverlayNG Calculate error
TestCode
String wkt1 = "POLYGON((1 1,1 3,1.9994 3,2.0006 2,1.9994 1,1 1))";
String wkt2 = "POLYGON((2.0003 1,2.0003 3,3 3,3 1,2.0003 1))";
Geometry geom1 = new WKTReader().read(wkt1);
Geometry geom2 = new WKTReader().read(wkt2);
Geometry res = OverlayNG.overlay(geom1, geom2, INTERSECTION, new PrecisionModel(10000), getNoder(0.001) );
System.out.println(res.toString());
getNoder:
private static Noder getNoder(double tolerance) {
SnappingNoder snapNoder = new SnappingNoder(tolerance);
return new ValidatingNoder(snapNoder);
}
Result:
MULTILINESTRING ((2.000023076923077 2.384615384615306, 2.0006 2), (2.0006 2, 1.9994 1))
Reformulated as a unit test:
public void testIssue680() {
Geometry geom1 = read("POLYGON((1 1,1 3,1.9994 3,2.0006 2,1.9994 1,1 1))");
Geometry geom2 = read("POLYGON((2.0003 1,2.0003 3,3 3,3 1,2.0003 1))");
Noder noder = new ValidatingNoder(new SnappingNoder(0.001));
Geometry res = OverlayNG.overlay(geom1, geom2, INTERSECTION, new PrecisionModel(10000), noder );
System.out.println(res.toString());
}