在Java中合并两个多边形

时间:2012-07-02 08:47:45

标签: java polygons

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

4 个答案:

答案 0 :(得分:7)

你想要的是一个Convex Hull Algorithm它需要一组点并返回一个包含原始点的最小点集。这可以在n.log n时间内完成。

答案 1 :(得分:6)

Area类支持添加封闭多边形。

答案 2 :(得分:5)

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

答案 3 :(得分:3)

您可以使用JTS(Java拓扑套件)。

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

简单的代码示例:

  • 给定多边形1(作为WKT):POLYGON((0 0,0 0,10 10,10 0,0 0))
  • 鉴于多边形2(如WKT):POLYGON((5 5,15 5,15 15,5 5,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());
    

结果是一个新的多边形:

POLYGON ((0 0, 0 10, 5 10, 5 15, 15 15, 15 5, 10 5, 10 0, 0 0))