是否有一种干净的Java方法,用于将两个给定重叠多边形的点合并为一个多边形?
答案 0 :(得分:7)
你想要的是一个Convex Hull Algorithm它需要一组点并返回一个包含原始点的最小点集。这可以在n.log n
时间内完成。
答案 1 :(得分:6)
Area类支持添加封闭多边形。
答案 2 :(得分:5)
Convex Hull与添加不同。添加意味着制作看起来像两个多边形重叠的多边形,这不一定是凸的。
答案 3 :(得分:3)
您可以使用JTS(Java拓扑套件)。
简单的代码示例:
鉴于多边形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))