jts icon indicating copy to clipboard operation
jts copied to clipboard

OverlayNG Calculate error

Open finchcn opened this issue 4 years ago • 1 comments

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))

finchcn avatar Feb 04 '21 03:02 finchcn

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());
  }

dr-jts avatar Mar 16 '21 00:03 dr-jts