在Java中合并两个多边形

Ben*_*son 1 java polygons

是否有一个干净的Java方法将两个给定重叠多边形的点合并为一个多边形?

Cha*_*pax 7

你想要的是一个凸壳算法,它将采用一组点并返回包含原始点的最小点集.这可以及时完成n.log n.


Lar*_*ars 7

您可以使用JTS(Java 拓扑套件)来实现此目的。

  • 创建您的多边形对象
  • 使用union方法将返回两个多边形中所有点的集合

简单代码示例:

  • 给定多边形 1(作为 WKT): POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))
  • 给定多边形 2(作为 WKT): POLYGON ((5 5, 15 5, 15 15, 5 15, 5 5))

    // create polygons
    Polygon p1 = new GeometryFactory().createPolygon(new Coordinate[]{new Coordinate(0, 0), new Coordinate(0,10), new Coordinate(10,10), new Coordinate(10,0), new Coordinate(0,0)});
    Polygon p2 = new GeometryFactory().createPolygon(new Coordinate[]{new Coordinate(5,5), new Coordinate(15,5), new Coordinate(15,15), new Coordinate(5,15), new Coordinate(5,5)});
    // calculate union
    Geometry union = p1.union(p2);
    // print as WKT
    System.out.println(union.toText());
    
    Run Code Online (Sandbox Code Playgroud)

结果是一个新的多边形:

POLYGON ((0 0, 0 10, 5 10, 5 15, 15 15, 15 5, 10 5, 10 0, 0 0))
Run Code Online (Sandbox Code Playgroud)


gmj*_*ker 6

地区一流的支持除了封闭的多边形.


use*_*200 5

凸包与添加包不同。加法意味着制作一个看起来像两个多边形重叠的多边形,不一定是凸的。